Come resistere agli indicatori del male?


10

Voglio essere in grado di salvare i miei marcatori malvagi locali del buffer (m per contrassegnare una posizione e poi 'o `per saltare ad essa) attraverso le sessioni / istanze di emacs. Non sono davvero sicuro di come farlo. Ho provato a installare / utilizzare la sessione e ad aggiungerli in questo modo:

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

Questo non funziona però, e non sono sicuro di cos'altro provare. Grazie.


Vim salva automaticamente i marker buffer-local sul disco per impostazione predefinita. Il male no, perché non emula la funzione + viminfo di Vim . Hai inviato una richiesta di funzione al tracker del problema Evil ? Hanno risposto?
indimenticabileidSupportsMonica

@angelic_sedition, in realtà, non si tratta di male, ma di persistenti variabili buffer-locali. Quest'ultimo è molto più generale e utile e sono abbastanza interessato alla risposta. Ho creato un tag per la tua domanda.
PythonNut,

@PythonNut Beh, ho scoperto che il problema riguarda specificamente i marcatori (penso). Sia desktop che session.el memorizzano le variabili locali del buffer per il male-markers-alist, ma non finiscono per corrispondere al valore effettivo (qualcosa come (108. # <Marker a 54991 in file.org>) viene escluso). Immagino che sia perché non possono o non sanno come salvare un oggetto marker.
noctuid,

1
A partire da maggio 2017 è un problema aperto .
Mirzhan Irkegulov,

Risposte:


1

Ecco la mia soluzione: inserisci il codice di seguito nel tuo .emacs o .spacemacs.

Dovrai mettere manualmente il nome del marcatore maiuscolo e il nome del file alla riga: evil-add-to-alist. Ho anche modificato il segno del male-goto per correggere un bug che è stato introdotto direttamente dal set di segnalini-male. Il vecchio codice presuppone che quando il marker è un contro, il buffer è stato chiuso. (quando il buffer è chiuso, converte l'indicatore in contro).

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

Dimentico di menzionare che funziona solo per marker globali. (indicatore maiuscolo)
Hao Deng

1

desktop.el supporta la memorizzazione / il ripristino di marker (almeno ora). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)o (cl-pushnew 'evil-markers-alist desktop-locals-to-save)lavora per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.