নীচের থেকে আরও একটি মন্তব্য মত
- এটি সমস্যার সামান্য অংশে সমাধান করে (
rainbow-delimiters-mode
)
- এটি পুরোপুরি পরীক্ষা করা হয়নি (কেবলমাত্র একটি ল্যাটেক্স-ফাইল দিয়ে)
- এটি কেন কাজ করে তা আমি পুরোপুরি বুঝতে পারি না (
font-lock-mode
সত্যিই বেশ জটিল একটি যন্ত্র)
প্রথমে এর সমাধান rainbow-delimiters-mode
:
আমরা টেক্সট সম্পত্তি প্রতিস্থাপন font-lock-face
দ্বারা face
মধ্যে rainbow-delimiters-propertize-delimiter
এবং rainbow-delimiters-unpropertize-delimiter
। যেহেতু defsubst
প্যাকেজের পরিবর্তে defun
আমরা চাকরী করতে পারি না defalias
তবে তাদের নিজস্ব ফাংশনগুলি সংশোধন করতে হবে (যতদূর আমি এটি বুঝতে পারি - দয়া করে আমি এই বিষয়ে ভুল হলে মন্তব্য করুন)।
পরিবর্তিত ফাংশনগুলি হ'ল:
(defsubst rainbow-delimiters-propertize-delimiter (loc depth)
"Highlight a single delimiter at LOC according to DEPTH.
LOC is the location of the character to add text properties to.
DEPTH is the nested depth at LOC, which determines the face to use.
Sets text properties:
`font-lock-face' to the appropriate delimiter face.
`rear-nonsticky' to prevent color from bleeding into subsequent characters typed by the user."
(with-silent-modifications
(let ((delim-face (if (<= depth 0)
'rainbow-delimiters-unmatched-face
(rainbow-delimiters-depth-face depth))))
;; (when (eq depth -1) (message "Unmatched delimiter at char %s." loc))
(add-text-properties loc (1+ loc)
;; 2015-05-24: Changed font-lock-face to face to enable rainbow after syntax fontification in latex-mode
;; (see http://emacs.stackexchange.com/questions/4260/how-to-get-rainbow-delimiters-rainbow-blocks-to-highlight-in-line-math-in-latex)
`(face ,delim-face
rear-nonsticky t)))))
(defsubst rainbow-delimiters-unpropertize-delimiter (loc)
"Remove text properties set by rainbow-delimiters mode from char at LOC."
(with-silent-modifications
(remove-text-properties loc (1+ loc)
;; 2015-05-24: See corresponding line in `rainbow-delimiters-propertize-delimiter'.
'(face nil
rear-nonsticky nil))))
এখন যুক্তি:
D -ডেলিমিটারগুলির মধ্যে এম্বেড করা সূত্রগুলি সিনট্যাক্স হ'ল ফন্ট-লক-মোড দ্বারা (যেমন ইতিমধ্যে ক্যারিল চিহ্নিত করেছেন) by এই ফন্টিফিকেশনটির নিবন্ধকরণটি সাধারণ দেখায় (পরিবর্তনশীল font-lock-syntactic-face-function
এবং কার্যকারিতা দেখুন font-latex-syntactic-face-function
)। তবে describe-char
একটি এম্বেড থাকা সূত্রের চরিত্রগুলিতে দেখায় যে সিনট্যাক্টিক ফন্টিফিকেশন face
-প্রোপারটির পরিবর্তে -প্রোপার্টি ব্যবহার করে font-lock-face
।
নিম্নলিখিতটি অনুমানমূলক যেহেতু আমি ফন্ট-লক যন্ত্রটি সম্পূর্ণ জটিল না যা সম্পূর্ণ জটিল।
মনে হয় যে এর face
চেয়ে শক্তিশালী font-lock-face
। রেইনবো-ডিলিমিটার ব্যবহার করে font-lock-face
যা face
সিনট্যাক্টিক ফন্টিফিকেশন দ্বারা আধিপত্য রয়েছে। তবুও, আমাদের সুবিধা রয়েছে যে সিনট্যাকটিক ফন্টিফিকেশনটি অনুসন্ধান (কীওয়ার্ড) ভিত্তিক ফন্টিফিকেশন আগে আসে যা ফলস্বরূপ জিট-লক ব্যবহার করে (এর তথ্যের পৃষ্ঠাগুলি দেখুন font-lock-mode
)।
এটি আমাকে এই সিদ্ধান্তে পৌঁছে দেয় যে আমরা যদি face
এর rainbow-delimiters
পরিবর্তে ব্যবহার করি তবে সমস্যাটি সমাধান হয়ে গেছে font-lock-face
। এবং এখানে আমি সম্পূর্ণ পরিণতি জানি না। তবে, যেহেতু rainbow-delimiters
এছাড়াও jit-lock
সরাসরি ব্যবহার করে (এবং এর মাধ্যমে নয় font-lock-mode
) আমরা যাইহোক নড়বড়ে মেঝেতে দাঁড়িয়ে আছি।
দ্রষ্টব্য, এর সাথে আমার ইতিমধ্যে কিছু যোগাযোগ ছিল rainbow-delimiters
( /programming/19800243/hightlight-first-mismatching-paren/20022030#20022030 দেখুন ) তবে এর সাথে নেই rainbow-blocks
। কারণ আমি মনোনিবেশ করতে বেছে নিয়েছি এমন সময়সীমা সীমিত rainbow-delimiters
। হতে পারে, আপনি- rainbow-blocks
সমস্যাটি একইভাবে সমাধান করতে পারেন ।