मैं स्ट्रिंग और मार-क्षेत्र, की शुरुआत को चिह्नित किए बिना किसी स्रोत फ़ाइल में उद्धृत स्ट्रिंग को मारना चाहता हूं, लेकिन केवल उद्धृत स्ट्रिंग के अंदर कहीं भी बिंदु डालकर और शॉर्टकट दबाकर।emacs में बिंदु पर उद्धृत स्ट्रिंग को कैसे मारें?
मैं इसके लिए elisp में एक समारोह लिखने का प्रयास किया है, लेकिन मैं पता लगा है कि फाइल निर्धारित करने के लिए बिंदु के अंदर स्ट्रिंग उद्धृत किया गया है बात करने के लिए ऊपर शुरू से ही पार्स करने की आवश्यकता होगी, और की सीमा से लगता है उद्धृत स्ट्रिंग (यह भी \ संभाल ") ...
लेकिन फ़ाइल पहले फ़ॉन्ट-लॉक से पार्स किया गया है तो अब मैं पता कर सकते हैं अगर मैं अंदर स्ट्रिंग उद्धृत कर रहा हूँ:।
(defun inside-quoted-string?()
(interactive)
(print (find 'font-lock-doc-face (text-properties-at (point)))))
लेकिन मैं स्ट्रिंग की सीमा कैसे प्राप्त करूं? फ़ॉन्ट-लॉक इसे जानता है, क्योंकि यह अच्छी तरह से हाइलाइट करता है यह नीले रंग में है, लेकिन मैं इसे कैसे प्राप्त करूं?
संपादित करें: उत्तर के लिए धन्यवाद। मैं इस कोड के साथ आया जो ठीक वही करता है जो मैं चाहता था - कोड को शुरू किए बिना क्षेत्र या यहां तक कि चुनने के बिना कोड को स्थानांतरित करें।
(defun kill-at-point()
"Kill the quoted string or the list that includes the point"
(interactive)
(let ((p (nth 8 (syntax-ppss))))
(if (eq (char-after p) ?\")
(progn
(goto-char p)
(kill-sexp))
(progn
(up-list)
(let ((beg (point)))
(backward-list)
(kill-region beg (point)))))))
(global-set-key (kbd "C-,") 'kill-at-point)
इसे सुधारने के लिए कोई सुझाव स्वागत है।