Как заставить emacs показывать короткий (не полный) путь к файлу в минибуфере при сохранении? - PullRequest
3 голосов
/ 17 марта 2012

Проблема в том, что когда путь к файлу довольно длинный, каждый раз, когда я его сохраняю, высота минибуфера увеличивается и в основном сразу уменьшается.Раздражает, потому что это происходит так часто.

Поэтому я хочу либо укоротить (basename?) Сообщение «wrote: ...», либо сделать по умолчанию (начальный) высоту минибуфера в 2 строки.Или возможно включить усечение только в минибуфере, но это не очень хорошо.

Есть ли способ?

1 Ответ

4 голосов
/ 17 марта 2012

Редактировать: Я только что заметил переменную message-truncate-lines и, в отличие от resize-mini-windows и max-mini-window-height, я могу заставить ее вести себя так, как я хочу:

(defadvice save-buffer (around my-save-mini-window-size)
  "Don't increase the size of the echo area if the path of the file being saved is too long to show on one line."
  (let ((message-truncate-lines t))
    ad-do-it))
(ad-activate 'save-buffer)

следует оригинальный ответ (и мне интересно знать, почему установка других переменных с подобным советом не дает желаемого эффекта, если кто-нибудь может уточнить это?)

Я думаю,возиться с самим сообщением будет довольно сложно (и в любом случае это плохая идея).write-region (в fileio.c) действительно говорит о своих аргументах If VISIT is neither t nor nil nor a string, that means do not display the "Wrote file" message, но я сильно сомневаюсь, что принудительное применение было бы разумным.

Я думаю, что единственный здравый подход - это предотвратить изменение размера минибуфера независимо отдлина сообщения.Следующее будет делать это, но для большего количества ситуаций, чем просто сохранение файла:

(setq resize-mini-windows nil)

Мой обычный подход здесь - написать несколько советов для функции, которая нас интересует (я думал save-buffer), чтобы временно установить это значение, но по какой-либо причине это не дает желаемого эффекта.

Аналогично использованию before-save-hook и after-save-hook для установки и восстановления.

Также естьпеременная max-mini-window-height, но при попытке ее временной установки возникает та же проблема.

...