Як зберегти злі маркери?


10

Я хочу мати змогу зберегти свої локальні маркери злого буфера (m для позначення місця, а потім 'або `для переходу на нього) через сеанси / екземпляри emacs. Я не дуже впевнений, як це зробити. Я спробував встановити / використовувати сеанс і додати їх так:

(add-to-list 'session-locals-include 'evil-markers-alist)

Це не працює, і я не впевнений, що ще спробувати. Дякую.


Vim автоматично зберігає локальні маркери буфера на диску за замовчуванням. Зло не робить, оскільки воно не імітує функцію Vim + viminfo . Ви надіслали запит на функцію трекеру проблем Evil ? Вони відповіли?
незабутніidSupportsMonica

@angelic_sedition насправді, це не про зло, а про стійкі буферні локальні змінні. Останнє набагато більш загальне і корисне, і мене цілком цікавить відповідь. Я створив тег для вашого питання.
PythonNut

@PythonNut Ну я виявив, що проблема полягає саме в маркерах (я думаю). І робочий стіл, і session.el зберігають локальні змінні буфера для списку зла-маркерів, але вони не відповідають результатам фактичного значення (все, що завгодно (108. Я думаю, це тому, що вони не можуть чи не знають, як зберегти маркерний об’єкт.
noctuid

1
Станом на травень 2017 року це відкрите питання .
Міржан Іркегулов

Відповіді:


1

Ось моє рішення: Введіть нижче код у своїх .emacs або .spacemacs.

Вам потрібно буде вручну ввести ім'я маркера верхнього регістру та ім'я файлу в рядку: evil-add-to-alist. Я також модифікував зла-goto-mark, щоб виправити помилку, яку вводив безпосередньо встановлений зловмисники. Старий код припускає, коли маркер є мінусом, буфер закритий. (коли буфер закритий, він перетворює маркер в мінуси).

  (setq alist (default-value 'evil-markers-alist))
  (evil-add-to-alist 'alist ?E '("/path/to/yourfile" . 1))
  (setq-default evil-markers-alist alist)

  (evil-define-command evil-goto-mark (char &optional noerror)
    "Go to the marker specified by CHAR."
    :keep-visual t
    :repeat nil
    :type exclusive
    (interactive (list (read-char)))
    (let ((marker (evil-get-marker char)))
      (cond
       ((markerp marker)
        (switch-to-buffer (marker-buffer marker))
        (goto-char (marker-position marker)))
       ((numberp marker)
        (goto-char marker))
       ((consp marker)
        (when (or (and (find-buffer-visiting (car marker))
                       (switch-to-buffer (find-buffer-visiting (car marker)) )
                       )
                  (and (y-or-n-p (format "Visit file %s again? "
                                         (car marker)))
                       (find-file (car marker))))
          (goto-char (cdr marker))))
       ((not noerror)
        (user-error "Marker `%c' is not set%s" char
                    (if (evil-global-marker-p char) ""
                      " in this buffer"))))))
  )

Я забув згадати, що це працює лише для глобального маркера. (верхній регістр)
Hao Deng

1

desktop.el підтримує зберігання / відновлення маркерів (зараз принаймні). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)або (cl-pushnew 'evil-markers-alist desktop-locals-to-save)працювати для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.