Biçimlendirme Komutanlığı (güzel) Elisp kodu


21

Diyelim ki aşağıdakine benzeyen bir işleve sahibim (sık sık elisp çıktılarını yazdırırken olduğu gibi).

(defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a))))

Bunu aşağıdaki gibi bir insanın yazacağı bir şeye dönüştürebilecek bir komut istiyorum.

(defun my-example-function ()
  (let ((a (do-something))
        (b (do-something)))
    (setq someone me)
    (with-current-buffer b
      (do-that (or this (and that those)))
      (format "%s" a))))

Bir elisp kodunu biçimlendirmenin birden fazla yolunun olduğunu biliyorum ve farklı insanlar bunu farklı şekilde yapıyor. Ayrıca, biraz öznel olduğunu anlıyorum. Ancak, kodla sonuçlanan ve en azından makul olan bir dizi kuralın ortaya çıkması oldukça kolay olmalıdır.

Aslında bunu bir süre önce kendim yapmayı düşündüm, ancak tekerleği yeniden icat etmeden önce sormanın daha iyi olacağını düşündüm.

Not, pp işlevinin farkındayım , ancak tam olarak oraya gelmedi:

(defun my-example-function nil
  (let
      ((a
        (do-something))
       (b
        (do-something)))
    (setq someone me)
    (with-current-buffer b
      (do-that
       (or this
           (and that those)))
      (format "%s" a))))

4
Bu yardımcı olur mu? Elisp Biçimlendirme
Luke,

Biçimlendirme mutlaka özneldir. Biraz daha iyi bir versiyonundan daha iyisini yapabileceğinden emin değilim pp.
shosti

@King Teşekkürler, kesinlikle alakalı.
Malabarba

Yanıtlar:


10

Lispy bunu benim için nasıl biçimlendirdi ( Mifadenin iki ucuna basarak ):

(defun my-example-function ()
  (let ((a (do-something))
        (b (do-something)))
    (setq someone me)
    (with-current-buffer b (do-that (or this (and that those)))
                         (format "%s" a))))

Bundan, belirttiğiniz biçime geçmek için, düğmesine basın qk C-m [.


(local-set-key (kbd "s-8") #'lispy-multiline) (local-set-key (kbd "s-*") #'lispy-oneline)
grettke

8

Başkalarının yorumlarda önerdiği gibi, "biçimlendirme" farklı anlamlara gelebilir.

İçin girinti oldukça geleneksel olduğu kullanmayı deneyin C-M-q(komutu indent-pp-sexpEğer yeniden girinti (örn istediğiniz üst düzey sexp içindeki imleç yere ile Lisp modlarında) defunsexp).

Hayır, bu "otomatik" girinti değildir, ancak kullanımı alışkanlık haline gelebilir. ;-)

Girinti dışındaki şeyler için, el ile yapmanız veya kendi "biçimlendirme" komutlarınızı döndürmeniz veya bunlardan bazılarını bulmanız gerekir.

Ayrıca bkz. Emacs el kitabı, Çok hatlı Girinti düğümü ve Elisp el kitabı, düğüm Mode-Specific Indent.


3
Sağol, girintili girintiden çok memnunum, satırları ne zaman kıracağını bilen bir şey arıyorum. :-) Ve evet, öznel olduğunu anlıyorum. :-(
Malabarba

M-q( fill-paragraph), bazen, bağlama bağlı olarak Emacs-Lisp modunda satır atmada yararlı olabilir. Ama muhtemelen uyum da arıyorsun ...
Drew
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.