如何坚持邪恶的标记?


10

我希望能够在emacs会话/实例之间保存我的缓冲区局部邪恶标记(用m标记位置,然后使用'或`跳转到该位置)。我不太确定该怎么做。我尝试安装/使用会话并像这样添加它们:

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

但是,这不起作用,我不确定还有什么尝试。谢谢。


Vim默认会自动将缓冲区本地标记保存到磁盘。邪恶不会,因为它不会模仿Vim的+ viminfo功能。您是否已向Evil问题跟踪器提交了功能请求?他们有回应吗?
unforgettableidSupportsMonica

@angelic_sedition确实,这不是邪恶的,而是关于持久缓冲区局部变量的。后者更为通用和有用,我对答案很感兴趣。我为您的问题创建了标签。
PythonNut

@PythonNut好,我发现问题特别出在标记上(我认为)。桌面和session.el都为“邪恶标记” alist缓冲本地变量,但是它们最终并没有匹配实际值(诸如(108.#<file.org中54991的标记)被忽略)。我猜这是因为他们不知道如何保存标记对象。
noctuid 2015年

1
截至2017年5月,这是一个未解决的问题
Mirzhan Irkegulov,

Answers:


1

这是我的解决方案:将以下代码放入.emacs或.spacemacs中。

您需要手动将大写标记名称和文件名放在以下行:evil-add-to-alist。我还修改了邪恶标记,以修复直接由设置邪恶标记-alist引入的错误。旧代码假定标记为缺点时,缓冲区已关闭。(当缓冲区关闭时,它将标记转换为缺点)。

  (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"))))))
  )

我忘了提及这仅适用于全局标记。(大写标记)
邓浩

1

desktop.el支持存储/恢复标记(至少现在)。(add-to-list 'desktop-locals-to-save 'evil-markers-alist)(cl-pushnew 'evil-markers-alist desktop-locals-to-save)为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.