Como evitar que a “definição da função do símbolo seja nula: erro” ao executar o emacs no console?

10

Para desativar a barra de rolagem no emacs, adicionei (toggle-scroll-bar -1) ao meu arquivo .emacs e funciona muito bem quando executo o emacs fora do modo do console. No entanto, quando executo o emacs no terminal, recebo o erro A definição da função do símbolo é nula: toggle-scroll-bar

Estou executando o Emacs 23.3.1

aqui está o rastreio quando executo --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()
bneil
fonte
O Emacs provavelmente forneceu um buffer de avisos para que você execute o emacs com a --debug-initopção de obter um rastreamento completo de erro. Tente isso e adicione essas informações à pergunta. Junto com a versão Emacs M-x emacs-version. Esse pedaço de código funciona bem com o Emacs 23.2.
21311 Trey Jackson
@Trey Jackson, adicionei os detalhes que você solicitou, parece que estou executando o Emacs 23.1, então tentarei atualizar. Obrigado por suas sugestões.
bneil
Muito estranho. Ok, próximo teste está sendo executado Emacs w / out seus .emacs, emacs -nw -qe depois no zero tampão, tipo (scroll-bar-mode -1)C-je ver se você receber um erro. Essa função é distribuída com o Emacs no scroll-bar.elpacote, então acho que você .emacstem algo estranho, ou o Emacs não foi instalado corretamente.
22811 Trey Jackson
Eu recebo este erro ao fazer o depurador digitado - Erro Lisp: (função de barra de rolagem com função void) (modo de barra de rolagem -1) eval ((modo de barra de rolagem -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () chama interativamente (eval-print-last-sexp nil)
bneil
Aqui está o meu .emacs arquivo pastebin.com/4mYE91Ne também
bneil

Respostas:

13

FWIW. O manual do emacs desencoraja o uso de window-systemcomo predicado.

Não use o sistema de janelas e o sistema de janelas inicial como predicados ou variáveis ​​de sinalizador booleano, se desejar escrever um código que funcione de maneira diferente nos terminais de texto e nas exibições gráficas. Isso ocorre porque o sistema de janelas não é um bom indicador dos recursos do Emacs em um determinado tipo de exibição. Em vez disso, use display-graphic-p ou qualquer um dos outros predicados display - * - p descritos em Display Feature Testing.

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

Eu uso isso para desativar a barra de rolagem e a barra de ferramentas quando estiver em uma exibição gráfica.

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

Embora eu ache a resposta do @ neatonk a melhor e abranja todas as bases, para desativar especificamente a barra de rolagem, você pode colocar o seguinte em sua ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
donovan.lampa
fonte
-2

Meu palpite é que quando você abre o emacs -nwemacs nem se preocupa em carregar o scroll-bar.el. é por isso que está tendo problemas para encontrar a função toggle-scroll-bar.
pode ser em vez disso, se você colocar
(scroll-bar-mode -1)
provavelmente o trabalho.

tipo de herói
fonte
11
(toggle-scroll-bar -1)funciona muito bem emacs -nwpara o Emacs 23.2 ...
Trey Jackson