在控制台中运行emacs时,如何防止“符号函数定义无效:错误”?


10

为了禁用emacs中的滚动条,我在我的.emacs文件中添加了(toggle-scroll-bar -1),当我在控制台模式之外运行emacs时,它的效果很好。但是,当我在终端中运行emacs时,出现错误Symbol的函数定义无效:toggle-scroll-bar

我正在运行Emacs 23.3.1

当我运行--debug-init时,这是跟踪

    1 Debugger entered--Lisp error: (void-function scroll-bar-mode)                
    2   (scroll-bar-mode -1)                                                       
    3   eval-buffer(#<buffer  *load*> nil "/Users/neil/.emacs.d/init.el" nil t)  ;$
    4   load-with-code-conversion("/Users/neil/.emacs.d/init.el" "/Users/neil/.ema$
    5   load("/Users/neil/.emacs.d/init" t t)                                      
    6   #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307$
    7   command-line()                                                             
    8   normal-top-level()

Emacs可能为您提供了一个警告缓冲区,告诉您运行emacs并带有--debug-init获取完整错误回溯的选项。尝试将其添加到问题中。以及Emacs版本M-x emacs-version。该代码块在Emacs 23.2中可以正常工作。
Trey Jackson

@Trey Jackson,我添加了您请求的详细信息,我似乎正在运行Emacs 23.1,因此,我将尝试升级。谢谢您的建议。
bneil 2011年

很奇怪。好的,下一个测试正在运行Emacs emacs -nw -q,而没有您的.emacs,,然后在暂存缓冲区中键入(scroll-bar-mode -1)C-j并查看是否出现错误。该功能与scroll-bar.el软件包中的Emacs一起分发,因此我猜测您的.emacs内容有些奇怪,或者Emacs的安装不正确。
Trey Jackson

我在进入调试器后收到此错误-Lisp错误:(无效功能滚动条模式)(滚动条模式-1)eval((滚动条模式-1))eval-last-sexp -1(t)eval-last-sexp(t)eval-print-last-sexp()交互式调用(eval-print-last-sexp nil nil)
bneil 2011年

这是我的.emacs文件pastebin.com/4mYE91Ne
bneil

Answers:


13

FWIW。emacs手册不鼓励将window-systemas作为谓词使用。

如果要编写在文本终端和图形显示上工作方式不同的代码,请不要将窗口系统和初始窗口系统用作谓词或布尔标志变量。这是因为在给定的显示类型上,窗口系统不是Emacs功能的良好指示。而是使用display-graphic-p或Display Feature Testing中描述的任何其他display-*-p谓词。

http://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html

在图形显示中,我用它来关闭滚动条和工具栏。

(if (display-graphic-p)
    (progn
      (tool-bar-mode -1)
      (scroll-bar-mode -1)))

5

虽然我认为@neatonk的答案是最好的,它涵盖了所有基础,但要专门禁用滚动条,可以在您的计算机上放置以下内容 ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

-2

我的猜测是,当您打开emacs -nwemacs时,甚至不必费心加载scroll-bar.el。这就是为什么找不到功能的原因toggle-scroll-bar
如果您
(scroll-bar-mode -1)
可能会工作,可能会代替。


1
(toggle-scroll-bar -1)可以在emacs -nwEmacs 23.2中正常工作...
Trey Jackson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.