2009-04-23 50 views
10

我正在编辑一些Python代码与相当长的函数,并决定它将是有用的快速获取函数名称而不滚动。我把这些代码放在一起做。有一些内置的emacs,或者特别是标准的python模式,我可以使用它吗?Emacs函数消息python函数我在

(defun python-show-function-name() 
    "Message the name of the function the point is in" 
    (interactive) 
    (save-excursion 
    (beginning-of-defun) 
    (message (format "%s" (thing-at-point 'line))))) 

回答

21

您可能会发现像样的成绩与which-function-mode

哪个函数模式是次要的模式 ,在模式行显示当前功能 名称,更新它 你在缓冲区走动。

要启用或禁用哪个功能模式,请使用命令M-x which-function-mode。这个命令是全局的 ;它适用于所有的缓冲区, 现有的和尚未被创建的 。但是,在某些主要模式下,它只会生效 ,其中 的值在which-func-modes中有效。如果 的值为t,那么哪个函数适用于所有主要模式,即 知道如何支持它 - 换句话说, 所有主要模式都支持 Imenu。

虽然我看到它开始有点迷糊中,我有一个在这里的Python文件...

+0

是移动的,而这个工程不仅为蟒蛇 – 2009-04-23 16:43:05

0

c-c C-u(py-goto-block-up)可能是你想要的。

+0

不幸的是,这需要在缓冲区中,这可能不是想要的海报...... – 2009-04-23 16:05:29

+0

这就是保存冲程进来 – 2009-09-16 16:06:12

2

你尝试py-beginning-of-def-or-class

(defun python-show-function-name() 
    "Message the name of the function the point is in" 
    (interactive) 
    (save-excursion 
    (py-beginning-of-def-or-class) 
    (message (format "%s" (thing-at-point 'line))))) 

我觉得它给了我比你beginning-of-defun更好的结果,但如果这不是你所遇到的问题,那么也许我只是看到wonkiness事业的另外一种表现my other answer