2011-01-13 59 views
2

假设我一直在浏览emacs中的源文件,并且发现了一些我想提请同事注意的东西。是否有简单的方法(即命令)来获取文件名和点的位置,例如如果我在Foo.cpp中是第21行Emacs:确定文件中的位置

c:\temp\foo.cpp:21 

回答

5

这个函数做你想要的。它将信息显示为消息,并将其添加到杀死环(便于粘贴)。

(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))) 
+0

完美 - 感谢您抽出宝贵时间。 – cristobalito 2011-01-13 16:49:35

0

一对夫妇的功能,浮现在脑海中:

它们都不会打印缓冲区底层文件的名称(如果有的话),但是如果模式行显示不适合您的需要,您可以编写一个交互功能。

+0

谢谢呃 - 不完全是我在找的东西。正如JB提到的,所有这些都可以通过模式线获得。 – cristobalito 2011-01-14 07:22:53

1

缓冲区名称通常与文件名相同,默认情况下行号也在模式行上。

我不知道预先存在的命令会直接使用您描述的格式报告这两个命令,但如果模式行数不够,那么编写自己的命令就很麻烦。

0

您也可以将位置标记为:C-x r m

这会将书签对象添加到您的书签文件中:默认情况下,变量bookmark-default-file的值为"~/.emacs.bmk"

您可以复制该文件并将其发送给您的同事以用于他自己的书签文件。

C-x r b将直接带您到书签。请参阅Emacs手册,节点Bookmarks