ভিমের সিনট্যাক্স হাইলাইটিং জাভাতে একটি ল্যাম্বডা (->) ত্রুটি হিসাবে বিবেচনা করে


25

আমি জাভা 8-তে প্রোগ্রামটি টু ভিমে ব্যবহার করছি এবং সিনট্যাক্স হাইলাইট করতে সমস্যা হচ্ছে।

জাভা 8 একটি নতুন বৈশিষ্ট্য ল্যামডা সমর্থন, যা তীর অপারেটর সৃষ্টির ফলে হল: ->। ভিম এটিকে *। জাভা ফাইলে বৈধ অপারেটর হিসাবে স্বীকৃতি দেয় না। এর মতো এটি "সিনট্যাক্স ত্রুটিতে" দৃষ্টি আকর্ষণ করতে উজ্জ্বল লালতে এই অপারেটরটিকে হাইলাইট করে। (অবশ্যই, এটি সত্যই বৈধ বাক্য গঠন))

অনুমোদিত অপারেটরদের ভিমের "অভিধান" আপডেট করার এবং / অথবা এই সমস্যাটি এড়াতে সিনট্যাক্স হাইলাইট করার কোনও উপায় আছে?

:versionরাষ্ট্রের প্রথম দুটি লাইন :

ভিআইএম - ভি আইএমপ্রোভড 7.4 (2013 আগস্ট 10, সংকলিত 2 জানুয়ারী 19:39:32)

অন্তর্ভুক্ত প্যাচগুলি: 1-52

উত্তর:


32

2016 আপডেট

ভিম সিনট্যাক্স ফাইলটি v7.4.649 (মার্চ 2015) এ আপডেট করা হয়েছিল ; সুতরাং আপনার যদি এই প্যাচ থাকে তবে আপনার এটি করার দরকার নেই।

এটির সমাধানের সবচেয়ে সহজ উপায় হ'ল সম্ভবত নতুন syntax/java.vimফাইলটি ডাউনলোড করা এবং এটি স্থাপন করা ~/.vim/syntax/java.vimযাতে এটি ডিফল্টটিকে ওভাররাইড করে $VIMRUNTIME/syntax/java.vim। এটি নির্ভর করে html.vimযেমন এটি java.vimনির্ভর করে কাজ করার জন্য আপনাকে সিএমিলিংও করতে হবে :

ln -s /usr/share/vim/vim74/syntax/html.vim ~/.vim/syntax/

আসল উত্তর

আমার /usr/share/vim/vim74/syntax/java.vimএই আছে:

syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|[^-]->\|\*\/"

[^-]->অংশটি দেখুন ? এর ফলে ত্রুটি হাইলাইট হয়।

~/.vim/after/syntax/java.vimল্যাম্বডা সিনট্যাক্সের একই প্যাটার্ন সহ একটি ফাইল যুক্ত করে আপনি এই নিয়মটিকে ওভাররাইড করতে পারেন :

syn clear javaError
syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"

এবং বোনাস পয়েন্টগুলির জন্য, আমরা এটি একটি ফাংশন হিসাবে হাইলাইট করতে এই লাইনটি যুক্ত করতে পারি:

syn match javaFuncDef "[^-]->"

একটি বাগ রিপোর্ট ফাইলিং বিবেচনা করুন। :help bug-reportsকিভাবে ব্যাখ্যা করে। আরও বেশি (নতুন?) নির্মাণ রয়েছে যা ত্রুটি হিসাবে হাইলাইট করা হয়েছে যেমন ...ইন public static void main(String... args)


1
বোনাস পয়েন্টগুলির সাথে মিলে যাওয়া java_highlight_functionsসক্ষম হয়েছে কিনা তা পরীক্ষা করে না । আপনি যদি ধারাবাহিকতা সম্পর্কে স্নায়বিক হন, আপনার সম্ভবত syn matchকল করার আগে এটি পরীক্ষা করা উচিত : if exists("java_highlight_functions") | syn match javaFuncDef "[^-]->" | endif
জাচারি মারে

4

এটি ডিফল্ট সিনট্যাক্স ফাইল সম্পাদনা করার প্রয়োজন নেই। তেজ জাভা প্লাগইন এই জন্য সমর্থন আছে। অন্য যে কোনও প্লাগইনের মতো কেবল ইনস্টল করুন এবং ল্যাম্বডা অপারেটরটি সঠিকভাবে হাইলাইট হবে।


তুমি কি নিশ্চিত? কারণ আমি এর জন্য কোনও কোড দেখতে পাচ্ছি না, এবং কেবলমাত্র আমি যে প্রতিশ্রুতি দেখছি তা-> জাভাআরর থেকে "জাভাআররারের সাথে ল্যাম্বডা প্রতীক না থাকলে" মেলে না "বার্তাটি দিয়ে সরিয়ে দেয় (তবে কোনও ফাংশন হিসাবে হাইলাইট যুক্ত করে না)।
মার্টিন টর্নোইজ

পছন্দ করুন কেবল ত্রুটির বার্তাটি সরিয়ে দেয়। তবে আমি এটি পছন্দ করি
এডেলসার্ক

2
আমি দেখতে পাচ্ছি যে রানটাইম ফাইলগুলি মার্চ 2015 বিটিডাব্লুতে আপডেট হয়েছে এবং আপনি যে লিঙ্কটি সংযুক্ত করেছেন তাতে এই আপডেটগুলির সাথে প্রবর্তিত অনেকগুলি ফিক্স নেই। এফওয়াইআই :-)
মার্টিন টর্নোইজ

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