gpt4 book ai didi

emacs - 如何在 emacs 中杀死带引号的字符串?

转载 作者:行者123 更新时间:2023-12-04 11:28:08 32 4
gpt4 key购买 nike

我想杀死源文件中的带引号的字符串
无需标记字符串和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)

欢迎任何改进它的建议。

最佳答案

您可以使用底层解析器的数据,而不是依赖字体锁定。围绕点的字符串的开头(如果有)可用为 (nth 8 (syntax-ppss)) .然后您可以使用 (forward-sexp 1)跳过字符串以找到它的结尾。

关于emacs - 如何在 emacs 中杀死带引号的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331725/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com