প্রধান মোডগুলি কেবল মুখগুলি পরীক্ষা করে না কেন?


10

একটি বড় মোড লেখার সময়, এটি প্রায়শই জানা দরকারী যে 'স্ট্রিংয়ের বিন্দুটি?' 'একটি মন্তব্যে বিন্দু?'

বেশিরভাগ প্রধান মোডগুলি প্রোগ্রামিং ভাষার পার্স করার চেষ্টা করছে বলে মনে হয়। উদাহরণ স্বরূপ:

  • python-syntax-content কল syntax-ppss
  • haskell-fill-paragraphকল syntax-ppssএবংre-search-forward
  • c-in-comment-line-prefix-p চারপাশে এবং কল কল সরান looking-at
  • sp-point-in-commentকল করে syntax-ppssকিন্তু এটি কোনও মন্তব্য ডেলিমেটারে রয়েছে কিনা তাও পরীক্ষা করে

তবে এটি কিছু ক্ষেত্রে কার্যকর হয় না। Org- মোড বাফারগুলিতে, সোর্স ব্লকের মন্তব্যগুলি এই পদ্ধতির দ্বারা সঠিকভাবে সনাক্ত করা যায় না।

এটিও অর্থহীন বলে মনে হচ্ছে, যেহেতু বাফার ইতিমধ্যে হাইলাইট করা মন্তব্যগুলি দেখাচ্ছে

পরিবর্তে, আপনি কেবল বিন্দুতে মুখগুলি পরীক্ষা করতে পারবেন:

(defun wh--get-faces (pos)
  "Get all the font faces at POS."
  (remq nil
        (list
         (get-char-property pos 'read-face-name)
         (get-char-property pos 'face)
         (plist-get (text-properties-at pos) 'face))))

(defun wh-string-p (pos)
  "Return non-nil if POS is inside a string."
  (memq 'font-lock-string-face (wh--get-faces pos)))

প্রধান মোডগুলি কেন এটি করে না? বাফারটি ইতিমধ্যে স্বীকৃত, তাই আমি এটি দ্রুত, আরও শক্তিশালী এবং কম কোডের প্রয়োজন হবে বলে আশা করব।


1
আমি এই প্রশ্ন পছন্দ করি। তবে, আপনি যদি ব্যবহার না করেন font-lock-mode? (এমন নয় যে আমার মনে হয় আপনার উচিত।)
এমবার্ক

উত্তর:


12

সমস্যাটি এটি আরও শক্তিশালী নয়।

প্রথমত, প্রধান মোডগুলি কোনও মন্তব্য বা স্ট্রিং কী তা সিদ্ধান্ত নেওয়ার জন্য সঠিকভাবে দায়বদ্ধ। যদি তারা হরফ-লকিংয়ের উদ্দেশ্যে তাদের সাফল্যের সাথে সংজ্ঞা দিতে সক্ষম হয়, তবে অন্যান্য উদ্দেশ্যেও তাদের এটি করতে সক্ষম হওয়া উচিত।

দ্বিতীয়ত, বিন্দুটি যে বিন্দুটির ভিতরে রয়েছে তা নির্ধারণের জন্য বাক্য গঠনটি সঠিকভাবে করা হলে এটি করার আরও শক্তিশালী উপায় ust যদি এটির ব্যর্থ হয় এমন উদাহরণগুলির সন্ধান পেলে মেজর-মোড লেখকের কাছে একটি বাগ রিপোর্ট জমা দেওয়ার মতো।


মুখগুলি পরিদর্শন করার কারণটি কম শক্ত কারণ এটি কিছু পরিস্থিতিতে ব্যর্থ হতে পারে।

  1. প্রারম্ভিকদের জন্য, ব্যবহারকারী অক্ষম করতে পারত font-lock-mode(সম্ভবত এটি একটি বিশাল বাফার) তবে font-lock-modeসক্ষম থাকা সত্ত্বেও মুখগুলি কিছুটা অস্থির হয়।

  2. এছাড়াও, ব্যবহারকারীর একটি ছোটখাটো মোড থাকতে পারে যা কিছু যুক্ত করে font-lock-keywords( TODOমন্তব্যগুলিতে হাইলাইট করার মতো )। বা একটি ছোটখাটো মোড থাকতে পারে যা ফন্ট-লক বাফারটি ফন্ট করে দেওয়ার পরে কিছু মুখ গতিশীলভাবে প্রয়োগ করে।

সংক্ষেপে, প্রধান মোডের কোনও গ্যারান্টি নেই যে এটি দ্বারা নির্ধারিত মুখগুলি বর্তমানে প্রয়োগ করা মুখগুলি।


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