Подтвердить что ты не робот

Отобразить путь к файлу в строке состояния

GNU Emacs 23.1.1

Мне интересно, есть ли способ показать путь к файлу в строке состояния, а не только имя файла.

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

Иногда мои пути к каталогам очень длинные.

например

/projects/clientserver/trunk/src/client/client.c

как это в строке состояния, просто отобразите последние два каталога.

/src/client/client.c

Большое спасибо за любые предложения,

4b9b3361

Ответ 1

То, что вы запрашиваете, - это изменить имя буфера. Вы можете настроить, как называются буферы, используя uniquify. Он имеет несколько методов для создания уникальных имен буферов. Самый очевидный выбор для вас - это "вперед", который дает именно то, что вы просите, - префикс имени буфера частью пути в качестве префикса.

Однако это имеет потенциально нежелательный побочный эффект. Обычно имена буфера становятся уникальными, добавляя суффикс. Когда вы делаете "c-x b" для переключения буферов, если вы наберете "foo", и у вас есть "foo" и "foo < 1 > ", вам будет показан общий префикс и ему будет предоставлена ​​возможность предоставить суффикс. Итак, "c-x b foo" позволит вам выполнить завершение, когда вы увидите список всех буферов "foo".

Если вы используете uniqueify в режиме "вперед", у вас будут имена буфера формы "bar/foo" и "baz/foo". Теперь "c-x b foo" не приведет вас к буфере foo или не позволит выполнить завершение, чтобы получить список буферов foo. Вы должны помнить префикс, который добавляется к каждому имени буфера.

Мой совет - использовать "обратный" режим uniqify, который использует путь к каталогу в качестве суффикса. Это, возможно, немного менее интуитивно, но проще использовать на практике. Итак, теперь у вас будут такие буферы, как "foo\bar" и "foo\baz", что дает вам преимущество в том, что вы можете сделать "cx b foo" и получить список всех буферов с именем файла "foo".

Итак, добавьте это в ваш .emacs файл и посмотрите, нравится ли вам поведение:

(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)

Ответ 2

Если вам нравится видеть это как заголовок кадра, а не в строке состояния, что я лично предпочитаю, потому что он менее загроможден и полезен также при переключении окон с помощью Alt + TAB и т.д., тогда вы можете добавить что-то вроде следующего в ваш .emacs файл без установки каких-либо расширений:

;; Disable loading of "default.el" at startup,
;; in Fedora all it does is fix window title which I rather configure differently
(setq inhibit-default-init t)

;; SHOW FILE PATH IN FRAME TITLE
(setq-default frame-title-format "%b (%f)")

%b отобразит имя буфера как обычно, и %f полный путь к файлу. Вы можете, конечно, изменить порядок, добавить текст между ними, удалить %b и т.д.

Ответ 3

Это хорошо работает для меня для установки полного пути в кадре:

(setq frame-title-format
  '(:eval
    (if buffer-file-name
        (replace-regexp-in-string
         "\\\\" "/"
         (replace-regexp-in-string
          (regexp-quote (getenv "HOME")) "~"
          (convert-standard-filename buffer-file-name)))
      (buffer-name))))

Ответ 4

Uniquify должен в значительной степени делать то, что вы хотите.

Ответ 5

См. документацию для переменной "Кадр заголовка формата" Он укажет вам на переменную "Режим строки формата" в котором указаны параметры настройки заголовка