সিনটাস্টিকের মাধ্যমে রিপোর্ট করা সাধারণ আবরণের ত্রুটিগুলি কীভাবে স্বয়ংক্রিয়ভাবে স্থির করা যায়?


13

আমি ব্যবহার শুরু syntastic সঙ্গে প্লাগইন তেজ আমার এ প্রতিবেদন তিসি ত্রুটির javascriptকোড।

আমি সিনটিকের সাথে এসিলিন্টকেও একীভূত করেছি এবং এটি আমার ত্রুটিগুলি, আমার .eslintrc ফাইলে লিখিত বিধি অনুসারে উপস্থিত থাকার ক্ষেত্রে সতর্কতা প্রদর্শন করে ।

কি কোনও উপায় আছে যার মাধ্যমে আমি কিছু সাধারণ ত্রুটিগুলি সমাধান করতে পারি যেমন কী-স্ট্রোকের সাথে অনুপস্থিত অর্ধ-কোলন, হারিয়ে যাওয়া স্থান ইত্যাদি?

সম্পাদনা:

আমি খুঁজে পেয়েছি যে এসলিন্টের একটি বিকল্প রয়েছে

  --fix Automatically fix problems

যা এই জাতীয় ক্ষেত্রে ব্যবহার করা যেতে পারে। এস্লিন্টটি এই সমস্যাগুলি ঠিক করতে আমাকে এই কমান্ডটি চালানো দরকার

eslint --fix -c myconfig file.js

আমি জানতে চাই যে কীভাবে ভিএম এর সাথে সংহত করা যায় ?


5
1. সিনট্যাক্স পরীক্ষার জন্য আপনার এই প্লাগইনটির প্রয়োজন নেই। ২. অটো ফিক্সিং ত্রুটিগুলি একটি খুব খারাপ ধারণা।
রোমেনেল

1
সমস্ত ত্রুটিগুলি যেমন আমি ত্রুটি সম্পর্কে কথা বলছি যেমন স্থানের চারপাশে =, ব্লক হলে চারপাশের স্থান, প্রবর্তন ইত্যাদি These এগুলি কোড শৈলীর সাথে সম্পর্কিত ত্রুটি, আসল ত্রুটি নয়।
উইটভল্ট

1
সংক্ষিপ্ত উত্তর হ্যাঁ, অবশ্যই আপনি পারেন। আপনি যে নির্দিষ্ট ত্রুটিগুলি সংশোধন করতে চেয়েছিলেন তা সন্ধান করার জন্য কুইকফিক্সে লাইনগুলি পার্স করার জন্য আপনার একটি কাস্টম ফাংশন সংজ্ঞায়িত করতে হবে এবং সেই ত্রুটির উপর ভিত্তি করে একটি আদেশ কার্যকর করতে হবে। পাশাপাশি প্রতিটি ত্রুটির লোকেশনটিতে আপনাকে নিয়ে যেতে আপনি সহজেই কুইকফিক্সটি ব্যবহার করতে পারেন। তারপরে আপনি একটি কীস্ট্রোকে ফাংশনটি মানচিত্র করবেন। map <C-j> call Function()<CR>তবে এটি একটি খুব কাস্টম অনুসারে তৈরি ফাংশন হবে যা আপনার প্রয়োজন অনুসারে লিখতে হবে। এবং রোমেনেলের বিষয়টি হ'ল আপনি যদি কিছু ভুল করেন তবে সহজেই ভালোর চেয়ে আরও বেশি ক্ষতি করতে পারেন। সাবধানতা অবলম্বন করা হয়
টমবলার 41

1
সামঞ্জস্যপূর্ণ ফর্ম্যাটিং প্রয়োগ করতে একটি সুন্দর প্রিন্টার ব্যবহার করুন।
lcd047

1
আইডিইরা সকলেই একরকম স্বয়ংক্রিয় বিন্যাসকে সমর্থন করে, আমি এখানে ঘৃণা বুঝতে পারি না। আমার সংস্থায় একটি প্রাক-প্রতিশ্রুতি হুক ব্যবহার করা হয় eslint --fix, আমার চেয়ে এটি সম্পাদকের পর্যায়ে বেশি ছিল।
জার্সকা

উত্তর:


11

মন্তব্যে উল্লিখিত হিসাবে এই পরিবর্তনটি আপনার কাজের পরিবেশের কী কী পরিণতি সম্পর্কে সচেতন থাকবেন (জিনিসগুলি "ঠিক করার" জন্য আপনি কোন উত্তম নিয়ম ব্যবহার করেন ঠিক তা জেনে যান)।

আপনার প্রশ্নের উত্তর দেওয়ার জন্য: সিনট্যাকটিকের সাথে এস্লিন্ট কার্যকরকরণে বিকল্প যুক্ত করা সরাসরি এগিয়ে রয়েছে । আপনার এটিকে কেবল যুক্ত করুন .vimrc:

" execute eslint with --fix flag
let g:syntastic_javascript_eslint_args = ['--fix']

Vim ফাইলটিতে তার বাফারটি লেখার পরে ফাইলটিতে যেমন এস্লিন্ট কার্যকর করা হয়, ততক্ষণে এসিমিন্ট কী করে ফিক্সগুলি সম্পর্কে ভিম জানে না। সুতরাং কোনওভাবে ভিএম ফাইলটি আবার লোড করতে হবে (ম্যানুয়াল উপায়টি কেবল :eসাধারণ / কমান্ড মোডে টাইপ করা হবে)। এটি করতে, আমরা চেকটাইমের সাথে অটোরেড বিকল্পটি ব্যবহার করতে পারি :

" enable autoread to reload any files from files when checktime is called and
" the file is changed
set autoread

চেকটাইম কল করতে আমরা একটি অটোকিমডি ব্যবহার করতে পারি যা প্রতিবার কোনও ফাইলে একটি বাফার লেখার সময় কার্যকর হয়। সিন্ট্যাকটিক যেমন একই ইভেন্টে নিজস্ব অটোকোমডি ব্যবহার করছে তখন BufWritePostসিন্ট্যাকটিক তার নিজস্ব যুক্ত হওয়ার পরে আমাদের আমাদের অটোকোমডি যুক্ত করতে হবে। আমি দেখতে পেলাম যে যখন আমরা আমাদের অটোমডিটি চালু করি তখন এটিই ঘটে VimEnter:

" add an autocmd after vim started to execute checktime for *.js files on write
au VimEnter *.js au BufWritePost *.js checktime

সুতরাং আপনার .vimrcভিমেতে তিনটি অংশ যুক্ত করার পরে প্রত্যাশা অনুযায়ী আচরণ করা উচিত (ফাইল সংরক্ষণে লিঙ্ক এবং স্ব-সংশোধন :w)।


7

জেপজির উত্তরে প্রদত্ত সমাধান আমার পক্ষে সম্পূর্ণরূপে কার্যকর হয়নি। বিকল্প eslintহিসাবে সঠিকভাবে বলা হয়েছিল --fix। তবে এটি সম্ভবত অভ্যন্তরগুলির কারণে পরিবর্তিত হয়েছে, তবে মনে হয় checktimeএটি শেষ হওয়ার আগেই ডাকা হয়েছিল eslint --fix, তাই ফাইলটি পুনরায় লোড করা সঠিকভাবে কাজ করে না, file has changed, are you sure you want to write to it?পরের সেভকে ট্রিগার করে।

তবে, বিষয়গুলি খনন করে, আমি একটি লুকানো হুক আবিষ্কার করেছি যা সিন্টাস্টিক চেকগুলি সম্পন্ন হওয়ার পরে ট্রিগার বলে মনে হচ্ছে, SyntasticCheckHook( উত্স )।

checktimeএটির সাহায্যে সিন্টাস্টিক চেকগুলি চালুর পরে আপনি কেবল কল করতে পারবেন ।

এখানে আমার চূড়ান্ত কোড:

set autoread

let g:syntastic_javascript_checkers = ['eslint']

" autofix with eslint
let g:syntastic_javascript_eslint_args = ['--fix']
function! SyntasticCheckHook(errors)
  checktime
endfunction

সম্পাদনা করুন: আমি ব্যক্তিগতভাবে ALEলন্টিংয়ের জন্য স্যুইচ করেছি , যা স্থানীয়ভাবে অটোফিক্সিং সমর্থন করে।

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