Evitar que buffers indesejados sejam abertos

16

Estou usando o emacs para minha edição diária de javascript, para alternar entre buffers eu uso Cx LEFT e Cx RIGHT e estou bem com isso (mesmo que eu ache difícil saber o caminho do arquivo que estou modificando) ).

Meus problemas:

  1. na inicialização eu sempre tenho *scratch* e *Messages* aberto, achei que colocar (kill-buffer "*scratch*") em meus .emacs resolveria o problema, mas não é, você tem alguma sugestão?

  2. quando eu abro arquivos eu sempre faço autocomplete de TAB, então cada vez que eu estou criando um novo buffer de *Messages* contendo as opções para a conclusão, como eu evito que isso crie, ou melhor, como eu fazer emacs matá-lo, depois que eu fiz a minha escolha?

Diga a sua opinião se achar que estou fazendo algo que não é "como deveria ser" enquanto navego como disse no topo.

    
por Alberto Zaccagni 01.09.2011 / 01:23

3 respostas

19

Isso me deixou louco ... até consertá-lo.

Agora não há nenhum rascunho , mensagens , ou conclui os buffers para estragar seu fluxo. Aproveite!

Coloque isso no seu .emacs:

;; Makes *scratch* empty.
(setq initial-scratch-message "")

;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)

;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
                (kill-buffer buffer)))))

;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)

;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)

Bônus:

;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)
    
por 26.08.2014 / 00:59
6

Bem ... é parcialmente o modo como o Emacs funciona, mas há coisas que você pode fazer para ajudar a mudar em geral.

Primeiro, o Emacs precisa ter pelo menos um buffer. Então, mesmo se você quisesse se livrar de *scratch* e *Messages* , você ficaria com outro buffer que você não queria (ou você começaria o ponto onde o Emacs simplesmente ignoraria sua última solicitação kill-buffer porque estava recriando aquele buffer (b / c ele precisa de um buffer).

Assim, a melhor maneira de chegar ao ponto em que alterar os buffers faz mais sentido é realmente ter os buffers que você deseja que alternem.

E, quando você fez isso, você pode olhar para todas as opções / pacotes disponíveis para você trocar os buffers - muitos dos quais estão listados no Wiki do Emacs em SwitchingBuffers . ido é muito popular, assim como icicles e anything .

    
por 01.09.2011 / 02:24
1

Se alguém estiver interessado em remover apenas o buffer * scratch * e ficar com o buffer * Messages *, esse código funcionou para mim:

(defun acg-initial-buffer-choice ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*"))
  (get-buffer "*Messages*"))

(setq initial-buffer-choice 'acg-initial-buffer-choice)

Uma coisa que você deve ter em mente é que, se a qualquer momento o Emacs ficar sem buffer para exibir (por exemplo, você matou todos os buffers), ele criará um buffer de * scratch * ou * Messages *, então tenha certeza você não estará excluindo todos os buffers durante o fluxo de trabalho ou o * scratch * poderá voltar à vida novamente.

    
por 13.04.2017 / 02:07

Tags