说我一直在浏览emacs中的源文件,我注意到了一些我想引起同事注意的事情。是否有一种简单的方法(即命令)来获取该点的文件名和位置,例如如果我在foo.cpp的第21行
c:\temp\foo.cpp:21
答案 0 :(得分:5)
此功能可以满足您的需求。它将信息显示为消息,并将其添加到kill-ring(以便轻松粘贴)。
(defun get-file-line ()
"show (and set kill-ring) current file and line"
(interactive)
(unless (buffer-file-name)
(error "No file for buffer %s" (buffer-name)))
(let ((msg (format "%s:%d"
(file-truename (buffer-file-name))
(line-number-at-pos))))
(kill-new msg)
(message msg)))
答案 1 :(得分:1)
缓冲区名称通常与文件名相同,默认情况下,行号也在模式行上。
我不知道预先存在的命令会直接使用您描述的格式报告,但如果模式行不够,则编写自己的命令非常简单。
答案 2 :(得分:0)
我想到了几个功能:
what-line
,通常不会绑定密钥。what-cursor-position
,通常绑定到 C-x = 。它们都没有打印缓冲区底层文件的名称(如果有的话),但如果模式行显示不符合您的需要,您可以编写一个交互式函数。
答案 3 :(得分:0)
您还可以为该位置添加书签: C-x r m 。
这将为书签文件添加书签对象:变量bookmark-default-file
的值,默认为"~/.emacs.bmk"
。
您可以将其复制并发送给您的同事,以便在他自己的书签文件中使用。
C-x r b 会直接转到书签。请参阅Emacs手册,节点Bookmarks
。