speedbar - как исправить базовую директорию (не менять при переключении буфера)

Некоторое время спустя я использовал speedbar и обнаружил, что он изменит базовый каталог в соответствии с текущим отображаемым буфером.

Как мне это отключить? Я просто хочу, чтобы спидбар ничего не делал, пока я переключался на другой буфер.

3 ответа

Решение

Я не думаю, что это возможно в обычном Speedbar (после просмотра переменных, функций и окна настройки).

Однако, если вы посмотрите на пакет SrSpeedbar, я увижу опцию: "sr-speedbar-refresh-turn-off". После вызова он должен отключить обновление; придерживаться того, где он находится.

Это возможно. Добавьте это в ваш файл.emacs:

(set 'speedbar-update-flag nil)

Вы также можете переключить обновление с

M-x speedbar-toggle-updates

Помимо правильного ответа @PascalVKooten, при навигации по дереву скоростных панелей возникает досадная проблема: вы потеряли стартовый каталог. Следующий код помогает вернуться в исходный каталог с помощью клавиши 'h' в рамке спидбара:

  (setq var_start-path default-directory)

  (define-key speedbar-file-key-map (kbd "h")
                  (lambda() (interactive)
                    (when (and (not (equal var_start-path
                                           sr-speedbar-last-refresh-dictionary))
                               (not (sr-speedbar-window-p)))
                      (setq sr-speedbar-last-refresh-dictionary var_start-path))
                    (setq default-directory var_start-path)
                    (speedbar-refresh))
                  )

Этот код извлечен из кода пакета projectile-speedbar. Этот пакет интересен, но он не работает для меня.

Другие вопросы по тегам