Меню буферов Emacs показывает два столбца: один с именем буфера и один с именем файла, с полным путем. Пути в наших проектах могут стать очень длинными, охватывая более одного экрана. Поэтому я бы не хотел показывать их в меню буферов. Как мне этого добиться? Бонус: используйте подсказку для пути вместо этого.
2
1 ответ
2
Так как Emacs поставляется с исходными текстами, я просто позволил себе настроить меню мыши-буфера. Я поместил это в свой init.el
чтобы переопределить реализацию по умолчанию, которая создает список mouse-buffer-menu-alist
. Этот снимает имя файла и показывает только имя буфера. Для моих нужд этого достаточно:
(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)))