在Python/C模式下启用linum-mode

8

我希望能够在Python和C模式下自动开启行号模式(M-x linum-mode)。我在.emacs文件中添加了以下代码,但似乎并没有起作用。

(defun my-c-mode-common-hook ()
  (line-number-mode 1))
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

(defun my-python-mode-common-hook ()
  (line-number-mode 1))
(add-hook 'python-mode-common-hook 'my-python-mode-common-hook)

可能出了什么问题?
4个回答

15

你还可以选择全局设置 linum-mode。

;; In your .emacs
(global-linum-mode 1)

编辑: 在我的配置中,我启用了global-linum-mode并针对特定的主模式禁用它:

(setq linum-mode-inhibit-modes-list '(eshell-mode
                                      shell-mode
                                      erc-mode
                                      jabber-roster-mode
                                      jabber-chat-mode
                                      gnus-group-mode
                                      gnus-summary-mode
                                      gnus-article-mode))

(defadvice linum-on (around linum-on-inhibit-for-modes)
  "Stop the load of linum-mode for some major modes."
    (unless (member major-mode linum-mode-inhibit-modes-list)
      ad-do-it))

(ad-activate 'linum-on)

9

line-number-modelinum-mode 不是相同的模式。

尝试这样做:

(defun my-c-mode-hook () 
  (linum-mode 1)) 
(add-hook 'c-mode-hook 'my-c-mode-hook) 

(defun my-python-mode-hook () 
  (linum-mode 1)) 
(add-hook 'python-mode-hook 'my-python-mode-hook) 

很遗憾,更改后它不起作用了。有没有办法调试可能出错的地方? - prosseek
从钩子名称中删除公共部分。我已经修复了上面的代码。 - Starkey

3

所有主要的编程语言模式都源自prog-mode,因此(add-hook 'prog-mode-hook 'linum-mode)会为所有编程模式启用linum-mode。


0
不确定C模式应该使用哪些钩子(从未使用过C模式),但这应该会实现您想要的功能:
(dolist (hook '(python-mode-hook
            c-mode-common-hook))
  (add-hook hook (lambda () (linum-mode t))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接