Posso personalizar o formato do menu de buffers do Emacs?

2

O menu de buffers Emacs mostra duas colunas: uma com o nome do buffer e outra com o nome do arquivo, com o caminho completo. Os caminhos em nossos projetos podem se tornar muito longos, abrangendo mais de uma tela. Então, eu gostaria de não mostrá-los no menu de buffers. Como posso conseguir isso? Bônus: use uma dica de ferramenta para o caminho.

    
por Arne 05.04.2013 / 17:20

1 resposta

2

Como o Emacs vem com fontes, eu apenas tomei a liberdade de ajustar o menu do buffer do mouse. Eu coloquei isso no meu init.el para substituir a implementação padrão que cria o mouse-buffer-menu-alist . Este acaba com o nome do arquivo e mostra apenas o nome do buffer. Para minhas necessidades, isso é suficiente:

(defun mouse-buffer-menu-alist (buffers)
  (let (tail
    (maxlen 0)
    head)
    (setq buffers
      (sort buffers
        (function (lambda (elt1 elt2)
                (string< (buffer-name elt1) (buffer-name elt2))))))
    (setq tail buffers)
    (while tail
      (or (eq ?\s (aref (buffer-name (car tail)) 0))
      (setq maxlen
        (max maxlen
             (length (buffer-name (car tail))))))
      (setq tail (cdr tail)))
    (setq tail buffers)
    (while tail
      (let ((elt (car tail)))
    (if (/= (aref (buffer-name elt) 0) ?\s)
        (setq head
          (cons
           (cons
            (format
             (format "%%-%ds  %%s%%s" maxlen)
             (buffer-name elt)
             (if (buffer-modified-p elt) "*" " ")
             (with-current-buffer elt
               (if buffer-read-only "%" " "))
                     )
            elt)
           head))))
      (setq tail (cdr tail)))
    ;; Compensate for the reversal that the above loop does.
    (nreverse head)))
    
por 08.04.2013 / 14:30

Tags