2

Меню буферов Emacs показывает два столбца: один с именем буфера и один с именем файла, с полным путем. Пути в наших проектах могут стать очень длинными, охватывая более одного экрана. Поэтому я бы не хотел показывать их в меню буферов. Как мне этого добиться? Бонус: используйте подсказку для пути вместо этого.

1 ответ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)))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .