邪悪なマーカーを持続させる方法は?


10

emacsセッション/インスタンス間で、バッファーのローカルの悪質なマーカー(場所をマークしてから、「または」にジャンプするために 'または `)を保存できるようにしたいと思います。これを行う方法は本当にわかりません。セッションをインストール/使用して、それらを次のように追加してみました:

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

これは機能しません、そして私は他に何を試すかわかりません。ありがとう。


Vimはデフォルトで自動的にバッファローカルマーカーをディスクに保存します。EvilはVimの+ viminfo機能をエミュレートしないため、そうではありません。機能のリクエストを悪の問題トラッカーに送信しましたか?彼らは反応しましたか?
unforgettableidSupportsMonica 2015年

@angelic_sedition本当に、これは悪についてではなく、永続的なバッファローカル変数についてです。後者ははるかに一般的で有用であり、私は答えにかなり興味があります。質問のタグを作成しました。
PythonNut 2015

@PythonNutさて、問題は特にマーカーにあることがわかりました(私はそう思います)。デスクトップとsession.elは両方ともevil-markers-alistのバッファーローカル変数を格納しますが、実際の値と一致するわけではありません((108。#<file.orgの54991にあるマーカー)などは省略されます)。これは、マーカーオブジェクトを保存する方法がわからない、またはわからないためだと思います。
noctuid 2015

回答:


1

これが私の解決策です:以下のコードを.emacsまたは.spacemacsに入れてください。

大文字のマーカー名とファイル名をevil-add-to-alistの行に手動で入力する必要があります。また、evil-goto-markを変更して、set evil-markers-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"))))))
  )

これはグローバルマーカーでのみ機能することを忘れてしまいました。(大文字のマーカー)
Hao Deng

1

desktop.elは、マーカーの保存/復元をサポートします(少なくとも現在)。(add-to-list 'desktop-locals-to-save 'evil-markers-alist)または(cl-pushnew 'evil-markers-alist desktop-locals-to-save)私のために働きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.