Como persistir marcadores do mal?

10

Eu quero poder salvar meus marcadores malignos locais do buffer (m para marcar um local e depois 'ou `para pular para ele) nas sessões / instâncias do emacs. Não tenho muita certeza de como fazer isso. Tentei instalar / usar a sessão e adicioná-los da seguinte forma:

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

No entanto, isso não funciona e não tenho certeza do que mais tentar. Obrigado.

noctuida
fonte
O Vim salva automaticamente os marcadores locais do buffer no disco por padrão. O mal não, porque não emula o recurso Vim + viminfo . Você enviou uma solicitação de recurso ao rastreador de problemas do Evil ? Eles responderam?
unforgettableidSupportsMonica
@angelic_sedition realmente, isso não é sobre o mal, é sobre persistentes variáveis ​​locais de buffer. O último é muito mais geral e útil, e estou bastante interessado na resposta. Eu criei uma tag para sua pergunta.
PythonNut
@ PythonNut Bem, eu descobri que o problema está especificamente nos marcadores (eu acho). Tanto o desktop quanto o session.el armazenam variáveis ​​locais em buffer para os mal-markers-alist, mas não acabam correspondendo ao valor real (algo como (108. # <Marcador em 54991 em file.org>) é deixado de fora). Eu acho que isso é porque eles não podem ou não sabem como salvar um objeto marcador.
noctuid 17/09/2015
11
A partir de maio de 2017, é uma questão em aberto .
Mirzhan Irkegulov

Respostas:

1

Aqui está a minha solução: Coloque o código abaixo em seu .emacs ou .spacemacs.

Você precisará colocar manualmente o nome do marcador em maiúsculas e o nome do arquivo na linha: mal-adicionar-à-lista. Também modifiquei evil-goto-mark para corrigir um bug introduzido diretamente pelo set-evil-marists-alist. O código antigo assume que quando o marcador é um contras, o buffer foi fechado. (quando o buffer é fechado, ele converte o marcador em contras).

  (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
fonte
Eu esqueço de mencionar que isso só funciona para marcador global. (marcador em maiúsculas)
Hao Deng
1

O desktop.el suporta armazenar / restaurar marcadores (agora pelo menos). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)ou (cl-pushnew 'evil-markers-alist desktop-locals-to-save)trabalhar para mim.

noctuida
fonte