Я хотел бы убить строку в кавычках в исходном файле без необходимости отмечать начало строки и уничтожать регион -, но просто поместив точку в любом месте строки в кавычках и нажав ярлык.
Я пытался написать для этого функцию в 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)
Приветствуются любые предложения по его улучшению.