Emacs 如何获取被选中区域内容?

C-SPACE 会选中一片文本区域,如何把这个被选中区域的文本导入到一个LIsp变量中呢?

M-w复制,然后手动setq,不失为一种解决办法……

1 个赞

这样?

(setq variable (buffer-substring-no-properties (region-beginning) (region-end)))
1 个赞
一切工作都应当自动化

(笑)

如果你定义函数用了 interactive 的话,可以直接 (interactive "r") 来获取到选中的前后坐标。然后再用 buffer-substring 或其它相关的。

3 个赞

总结一下:

(defun beginner-translate-main (content_start content_end)
  "The main part of the program."
  (interactive "r")
  (message (buffer-substring content_start content_end))
  )

(global-set-key (kbd "C-x t") 'beginner-translate-main)

这样就可以在按下C-x t的时候获取被选中的内容了,感谢@VonFry!

这确实解决了我最初的需求
但是这个方案的问题在于:
当没有任何被选中内容时,整个区块的内容全部被填入变量,造成程序出错.