사악한 마커를 유지하는 방법?


10

emacs 세션 / 인스턴스에서 버퍼 로컬 악의 마커 (위치를 표시 한 다음 '또는`로 이동하기 위해 m)를 저장할 수 있기를 원합니다. 이 작업을 수행하는 방법을 잘 모르겠습니다. 세션을 설치 / 사용하고 다음과 같이 추가하려고했습니다.

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

그래도 작동하지 않으며 시도해야 할 것이 확실하지 않습니다. 감사.


Vim은 기본적으로 버퍼 로컬 마커를 디스크에 자동 저장합니다. Vim의 + viminfo 기능을 모방하지 않기 때문에 악은 그렇지 않습니다 . Evil 이슈 트래커에 기능 요청을 제출 했습니까 ? 그들은 응답 했습니까?
unforgettableidSupportsMonica

@ angelic_sedition 실제로, 이것은 악에 관한 것이 아니며, 지속적인 버퍼 로컬 변수에 관한 것입니다. 후자는 훨씬 일반적이고 유용하며 대답에 상당히 관심이 있습니다. 귀하의 질문에 대한 태그를 만들었습니다.
PythonNut

@PythonNut 글쎄, 문제는 마커와 관련이 있다는 것을 알았습니다. desktop 및 session.el은 모두 evil-markers-alist에 대한 버퍼 로컬 변수를 저장하지만 실제 값과 일치하지는 않습니다 ((108. # <marker at 54991 at file.org>)). 마커 객체를 저장하는 방법을 모르거나 알 수 없기 때문입니다.
noctuid

1
2017 년 5 월 현재 공개 된 문제 입니다.
Mirzhan Irkegulov

답변:


1

내 해결책은 다음과 같습니다. .emacs 또는 .spacemacs에 아래 코드를 넣으십시오.

대문자 마커 이름과 파일 이름을 줄에 수동으로 입력해야합니다 : evil-add-to-alist. 또한 evil-marker-alist를 직접 설정하여 발생하는 버그를 수정하기 위해 evil-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)나를 위해 일하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.