我想杀死一个源文件中引用的字符串,而无需标记字符串的开头和杀死区域,但只是通过将点的任何位置引号字符串中,按下一个快捷方式。
我试着写在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)
任何建议,以改善它的欢迎。