Как убить строку в кавычках в точке в 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)

Приветствуются любые предложения по его улучшению.

7
задан abo-abo 5 July 2012 в 09:39
поделиться