Kötü İşaretlere Nasıl Dayanılır?


10

Tampon yerel kötü işaretleyicileri (bir konumu işaretlemek için m ve ardından 'veya `atlamak için) emacs oturumları / örnekleri arasında kaydetmek istiyorum. Bunu nasıl yapacağımdan tam olarak emin değilim. Oturumu yükleme / kullanma ve bu şekilde eklemeyi denedim:

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

Bu işe yaramaz ve başka ne denemek için emin değilim. Teşekkürler.


Vim, varsayılan olarak arabellek-yerel işaretleyicileri otomatik olarak diske kaydeder. Kötülük gelmez, çünkü Vim'in + viminfo özelliğini taklit etmez . Kötü sayı izleyicisine bir özellik isteği gönderdiniz mi? Yanıt verdiler mi?
unforgettableidSupportsMonica

@angelic_sedition gerçekten, bu kötülükle ilgili değil, kalıcı tampon-yerel değişkenlerle ilgili. İkincisi çok daha genel ve kullanışlı ve cevapla oldukça ilgileniyorum. Sorunuz için bir etiket oluşturdum.
PythonNut

@PythonNut Peki sorun özellikle belirteçleri ile buldum (sanırım). Hem masaüstü hem de session.el, kötü işaretçiler-liste için yerel değişkenleri arabelleğe alır, ancak gerçek değerle eşleşmezler (böyle bir şey (108. # <file.org'daki 54991'de işaret> hariç)). Sanırım bunun nedeni, bir işaretleyici nesneyi nasıl kaydedeceklerini bilmiyor olmalarıdır.
noctuid

1
Mayıs 2017 itibariyle bu açık bir konudur .
Mirzhan Irkegulov

Yanıtlar:


1

İşte benim çözüm: Aşağıdaki kodu .emacs veya .spacemacs koyun.

Büyük harfli işaretçi adını ve dosya adını satırına manuel olarak koymanız gerekir: kötü-ekle-alist. Ayrıca, kötü-işaretçiler-alist tarafından doğrudan belirlenen bir hatayı düzeltmek için kötü-işaret-işaretini değiştirdim. Eski kod, işaretçi eksileri olduğunda, arabellek kapatılmış olduğunu varsayar. (arabellek kapandığında, işaretçiyi eksilere dönüştürür).

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

Bunun sadece global marker için işe yaradığını söylemeyi unutuyorum. (büyük harf işaretleyici)
Hao Deng

1

desktop.el işaretleyicilerin depolanmasını / geri yüklenmesini destekler (en azından şimdi). (add-to-list 'desktop-locals-to-save 'evil-markers-alist)ya da (cl-pushnew 'evil-markers-alist desktop-locals-to-save)benim için çalış.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.