Comment persister les mauvais marqueurs?


10

Je veux pouvoir sauvegarder mes marqueurs maléfiques locaux (m pour marquer un emplacement puis 'ou `pour y accéder) à travers les sessions / instances emacs. Je ne sais pas vraiment comment faire ça. J'ai essayé d'installer / utiliser une session et de les ajouter comme ceci:

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

Cela ne fonctionne pas cependant et je ne sais pas quoi essayer d'autre. Merci.


Vim enregistre automatiquement les marqueurs locaux du tampon sur le disque par défaut. Le mal ne le fait pas, car il n'émule pas la fonction + viminfo de Vim . Avez-vous soumis une demande de fonctionnalité à l' outil de suivi des problèmes maléfiques ? Ont-ils répondu?
unforgettableidSupportsMonica

@angelic_sedition vraiment, il ne s'agit pas de mal, il s'agit de variables locales de tampon persistantes. Ce dernier est beaucoup plus général et utile, et je suis assez intéressé par la réponse. J'ai créé une balise pour votre question.
PythonNut

@PythonNut Eh bien, j'ai trouvé que le problème est spécifiquement avec les marqueurs (je pense). Desktop et session.el stockent tous les deux des variables locales de tampon pour evil-markers-alist, mais ils ne finissent pas par correspondre à la valeur réelle (quelque chose comme (108. # <Marqueur à 54991 dans file.org>) est omis). Je suppose que c'est parce qu'ils ne peuvent pas ou ne savent pas comment enregistrer un objet marqueur.
nocturne

1
Depuis mai 2017, c'est un problème ouvert .
Mirzhan Irkegulov

Réponses:


1

Voici ma solution: Mettez le code ci-dessous dans votre .emacs ou .spacemacs.

Vous aurez besoin de mettre manuellement le nom du marqueur en majuscule et le nom du fichier à la ligne: evil-add-to-alist. J'ai également modifié evil-goto-mark pour corriger un bogue introduit directement par set evil-markers-alist. L'ancien code suppose que lorsque le marqueur est contre, le tampon a été fermé. (lorsque le tampon est fermé, il convertit le marqueur en contre).

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

J'oublie de mentionner que cela ne fonctionne que pour le marqueur global. (marqueur majuscule)
Hao Deng

1

desktop.el prend en charge le stockage / restauration des marqueurs (maintenant au moins). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)ou (cl-pushnew 'evil-markers-alist desktop-locals-to-save)travailler pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.