文字列の先頭と kill-region をマークする必要はなく、引用符で囲まれた文字列内の任意の場所にポイントを配置してショートカットを押すだけで、ソース ファイル内の引用符で囲まれた文字列を削除したいと考えています。
私はこれのためにelispで関数を書き込もうとしましたが、ポイントが引用符で囲まれた文字列内にあるかどうかを判断し、引用符で囲まれた文字列の境界を見つけるために、ファイルを最初からポイントまで解析する必要があることがわかりました( \") を処理します...
しかし、ファイルは既に font-lock によって解析されています。これで、引用符で囲まれた文字列の中にいるかどうかを確認できます。
(defun inside-quoted-string? ()
(interactive)
(print (find 'font-lock-doc-face (text-properties-at (point)))))
しかし、どうすれば文字列の境界を取得できますか? font-lock はそれを青色で強調表示するので認識していますが、どうすれば取得できますか?
編集:答えてくれてありがとう。私はまさに私が望んでいたことを行うこのコードを思いつきました - 領域を選択したり、コードの先頭に移動したりせずにコードを移動します。
(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)
それを改善するための提案は大歓迎です。