উত্তর:
প্রদত্ত তালিকার চতুর্থ * মানটি পরীক্ষা করুন syntax-ppss
:
(nth 4 (syntax-ppss))
এটি nil
যদি বিন্দুতে কোনও মন্তব্যের বাইরে থাকে, t
যদি কোনও নাস্তেয় মন্তব্যের ভিতরে না থাকে, বা কোনও নেস্টেবল মন্তব্যের ভিতরে কোনও পূর্ণসংখ্যার (নীড়ের গভীরতা) থাকে। parse-partial-sexp
আরও তথ্যের জন্য ডকাস্ট্রিং দেখুন ।
* জিরো-ভিত্তিক
নোট করুন যে এটি অর্গ-মোডের সাথে কাজ করে না, আপনার এটি ব্যবহার করা উচিত:
(defun in-comment-p ()
"Testy if cursor/point in a commented line?"
(save-excursion
(if (derived-mode-p 'org-mode)
(save-match-data (beginning-of-line) (looking-at "^[ \t]*#"))
(nth 4 (syntax-ppss)))))
parse-partial-sexp
।
syntax-ppss
আপনাকে নির্দেশ করবে parse-partial-sexp
, এর পরেরটি আপনাকে এই ফাংশনগুলি দিয়ে ফিরে আসা সমস্ত সামগ্রীর বিবরণ দেবে। আশা করি এটি একটি সূচনার জন্য সহায়তা করে।
হরফ-মুখ ব্যবহার করুন, এই কৌশলটি আমি ফ্লাইস্পেল থেকে শিখেছি।
আমি syntax-ppss
দুই বছর আগে চেষ্টা করেছি , এটি দুটি কারণে কার্যকর হয় না:
মন্তব্যের প্রান্তে (মন্তব্য সীমা) কাজ করবেন না, উদাহরণস্বরূপ, // this is comment
সি ++ - মোডের মতো মন্তব্যের জন্য , আপনি যদি কার্টরটির উপরে কার্সার রাখেন /
তবে ফলাফলটি (nth 4 (syntax-ppss))
শূন্য হবে।
ওয়েব-মোডের মতো মেজর-মোডে মোটেও কাজ করে না
আমি ফ্লাইস্পেল থেকে অনুলিপি করা কোডটি এখানে:
(defun evilnc--in-comment-p (&optional pos)
"Test if character at POS is comment. If POS is nil, character at `(point)' is tested"
(interactive)
(unless pos (setq pos (point)))
(let* ((fontfaces (get-text-property pos 'face)))
(when (not (listp fontfaces))
(setf fontfaces (list fontfaces)))
(delq nil
(mapcar #'(lambda (f)
;; learn this trick from flyspell
(or (eq f 'font-lock-comment-face)
(eq f 'font-lock-comment-delimiter-face)))
fontfaces))))
দয়া করে নোট করুন কোডটি বড় বড় ফ্যাডের মুখের সাথে মিলে মোডগুলিকে সমর্থন করার জন্য বাড়ানো যেতে পারে।
আমি প্রায় তিন বছর ব্যর্থতা ছাড়াই এই কৌশলটি ব্যবহার করেছি। তদ্ব্যতীত, ফ্লাইস্পেল বিবেচনা করে এত দিন ধরে ব্যাপকভাবে ব্যবহৃত হয়, আমি দাবি করতে পারি যে এই পদ্ধতিটি নির্ভরযোগ্য।
অনুরূপ প্রশ্নের জন্য স্ট্রিংটি নেভিগেট করার জন্য কোন কীবোর্ড শর্টকাট ব্যবহার করবেন তা দেখুন ।
POS
আর্গ ব্যবহার করে না point
। এই জাতীয় দুটি সংস্করণ থাকার চেয়ে আরগটি alচ্ছিক করা POS
এবং (point)
কখন সেট করা উচিত nil
।
syntax-ppss
সরবরাহ করে?