Ніхто не згадував symbol-overlay
режим . В основному це кращий перепис highlight-symbol-mode
. "Краще", як у, не вистачає помилок оригінального символу виділення (наприклад, тимчасове виділення застряє або тимчасове виділення зникає при переміщенні всередині виділеного слова; або неможливість виділення символів типу *
) , краще інтегровано та підтримується. Див. Пункт "Переваги" його README.
Ви можете встановити його як завжди, за допомогою M-xpackage-install (попередньо оновіть список пакетів за допомогою package-list-packages
) . Для довідки, внизу я вклав код, який використовую для ввімкнення режиму та вимкнення декількох розширених функцій, які ви можете або не хочете.
Notepad ++ має зручну функцію: якщо ви вибираєте в тексті слово (не обов’язково ключове слово), це слово виділяється у всьому тексті. Чи можна це зробити і в Emacs? А якщо так, то як?
Після того overlay-symbol
, як ви ввімкнете , випадки на екрані будуть відображатися для кожного слова, на яке ви кладете курсор після таймауту (тайм-аут за замовчуванням становить 0,5 с, його можна налаштувати за допомогою symbol-overlay-idle-time
змінної) . Якщо слово не виділяється, це означає, що на екрані є лише одна відповідність (та, на яку ви кладете курсор) , отже, немає необхідності виділяти її.
Було б чудово, якби виділення були постійними, тобто переміщення точки від виділеного слова не повинно спричинити видалення виділення.
Для постійного виділення слова під курсором існує функція symbol-overlay-put
. Щоб не висвітлити, зателефонуйте ще раз.
У моєму прикладі конфігурації він прив'язаний до Logo+ `клавіші.
(require 'symbol-overlay)
(defun enable-symbol-overlay-mode ()
(unless (or (minibufferp)
(derived-mode-p 'magit-mode)
(derived-mode-p 'xref--xref-buffer-mode))
(symbol-overlay-mode t)))
(define-global-minor-mode global-symbol-overlay-mode
symbol-overlay-mode
enable-symbol-overlay-mode)
(global-symbol-overlay-mode)
(global-set-key (kbd "s-`") 'symbol-overlay-put)
(setq symbol-overlay-ignore-functions nil)
(setq symbol-overlay-map (make-sparse-keymap))