একক-উদ্ধৃতি সংখ্যার বিভাজক সহ সংখ্যাসূচক অক্ষরের ভিম সিনট্যাক্স হাইলাইট করা


9

সি ++ 14 বৃহত সংখ্যাসূচক অক্ষরের অঙ্কগুলি পৃথক করতে একক উদ্ধৃতি ব্যবহারের বিকল্প সরবরাহ করেছে। এটি ভিমের সিনট্যাক্স হাইলাইটটিকে ভেঙে দেয়।

উদাহরণস্বরূপ, নিম্নলিখিত সি ++ 14 প্রোগ্রামটি বিবেচনা করুন:

#include <stdlib.h>

int main(int argc, char** argv) {
  // small numbers are fine
  int normal_number = 5;

  // large numbers have the correct highlighting but they're hard to visually parse
  int huge_number = 1000000000;

  // apostrophes help with visual parsing but mess up syntax higlighting
  int huge_number_again = 1'000'000'000;

  return EXIT_SUCCESS;
}

আমি যখন এটি ভিমে দেখি, আমি নীচের সিনট্যাক্স হাইলাইট করতে দেখি (নোট করুন যে আমি কিছু অতিরিক্ত হাইলাইটিং স্ক্রিপ্ট ব্যবহার করছি ):

উপরে বর্ণিত প্রোগ্রামটির জন্য ভিম সিনট্যাক্স হাইলাইট করা

আমি চাই যে সমস্ত সংখ্যার huge_number_againলাল প্রদর্শিত হবে। আমি আমার সিনট্যাক্স ফাইলগুলির একটিতে বা এটি সংশোধন করার জন্য কি একটি পরিবর্তন করতে পারি ~/.vimrc?


আমি দেখতে পাচ্ছি সি ++ 14 এর জন্য কিছু সমর্থন v7.4.923 (বাইনারি আক্ষরিক) এ যুক্ত হয়েছিল। তবে সংখ্যাটি পৃথককারী বলে মনে হচ্ছে না: - / এখান থেকে সর্বশেষ সি ++ ফাইলগুলি এখনও এটি রয়েছে বলে মনে হয় না।
মার্টিন টর্নোইজ

4
দ্রুত সমাধানের জন্য, আপনি সম্ভবত যুক্ত syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"করতে পারেন ~/.vim/syntax/cpp.vim। (বিটিডব্লিউ, যদি এটি সি ++ হয় তবে ব্যবহার করুন cstdlib, না stdlib.h ))
মার্উ

3
আমি কেবল লক্ষ্য করেছি মে ২০১৪ বিটিডব্লিউর পর থেকে একটি উন্মুক্ত সমস্যা রয়েছে।
মার্টিন টর্নয়েজ

@ মুরু সমস্যাটি স্থির করেছে বলে মনে হচ্ছে। আপাতত দ্রুত হ্যাক ব্যবহার করে আমি ভাল আছি। ধন্যবাদ!
জেক

2
@ কারপেটসমোকার আমার পরিবর্তনটি ঠিক কী করে তা জানতে সিনট্যাক্স ম্যাচিংয়ের বিষয়ে আমি নিশ্চিত নই। আমি মনে করি এটি কেবলমাত্র একটি সংখ্যার সাথে মিলবে যে কোনও সংখ্যক অঙ্ক বা একক উদ্ধৃতি, প্লাস ullফ্লাফের পরে, তবে আমি জানি না এটি কিছু অবৈধ ক্ষেত্রে মেলে কিনা। এবং দৃশ্যত সি ++ 14 অষ্টাল, বাইনারি, হেক্স আক্ষরিক এবং ভাসমানগুলিতে এবং ভাসমানের দশমিক বিন্দুর পরে বিভাজককে অনুমতি দেয়। এটা একটা ব্যাপার অনেক বেশি আমি নিতে ইচ্ছুক নই।
মুড়ু

উত্তর:


4

তেজ-জেপি / তেজ-CPP রেপো অন্তর্ভুক্ত এই পরিবর্তন জুলাই 2016 সালে:

syn match   cNumber     display contained "\d\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
syn match   cNumber     display contained "0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
syn match   cNumber     display contained "0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>"

আপনি যদি এই রেপো ব্যবহার করতে না চান তবে আপনি এই লাইনগুলিতে যুক্ত করতে পারেন ~/.vim/syntax/cpp.vim

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.