¿Cómo persistir marcadores malvados?

10

Quiero poder guardar mis marcadores locales malignos de búfer (m para marcar una ubicación y luego 'o' para saltar a ella) en sesiones / instancias de emacs. No estoy realmente seguro de cómo hacer esto. Intenté instalar / usar la sesión y agregarlos así:

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

Sin embargo, esto no funciona y no estoy seguro de qué más probar. Gracias.

noctuido
fuente
Vim guarda automáticamente los marcadores locales del búfer en el disco de forma predeterminada. El mal no lo hace, porque no emula la función Vim + viminfo . ¿Has enviado una solicitud de función al rastreador de problemas Evil ? ¿Han respondido?
unforgettableidSupportsMonica
@angelic_sedition realmente, no se trata del mal, se trata de variables locales-búfer persistentes. Este último es mucho más general y útil, y estoy bastante interesado en la respuesta. He creado una etiqueta para tu pregunta.
PythonNut
@PythonNut Bueno, he descubierto que el problema es específicamente con los marcadores (creo). Tanto desktop como session.el almacenan las variables locales del búfer para el evil-markers-alist, pero no terminan igualando el valor real (algo como (108. # <Marcador en 54991 en file.org>) queda fuera). Supongo que esto se debe a que no pueden o no saben cómo guardar un objeto marcador.
noctuid
1
A partir de mayo de 2017 es un tema abierto .
Mirzhan Irkegulov

Respuestas:

1

Aquí está mi solución: ponga el código a continuación en sus .emacs o .spacemacs.

Deberá poner manualmente el nombre del marcador en mayúsculas y el nombre del archivo en la línea: evil-add-to-alist. También modifiqué evil-goto-mark para corregir un error que introdujo directamente set evil-markers-alist. El antiguo código supone que cuando el marcador es una desventaja, el búfer se ha cerrado. (cuando el búfer está cerrado, convierte el marcador en contra).

  (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
fuente
Olvidé mencionar que esto solo funciona para el marcador global. (marcador en mayúscula)
Hao Deng
1

desktop.el admite el almacenamiento / restauración de marcadores (ahora al menos). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)o (cl-pushnew 'evil-markers-alist desktop-locals-to-save)trabaja para mi

noctuido
fuente