2010-11-17 13 views

Odpowiedz

19

[email protected] M-; komentarze aktualny sexp.

[email protected] pobyty za mark-sexp i M-; wie, jak poprawnie zakomentować region, uwzględniając bieżący tryb. Polecenia do oznaczania obiektów są opisane here.

+1

'[email protected]' może być również związane z 'C-M-SPC', które może być łatwiejsze do wpisania i zapamiętania. – kristianlm

1

średników - ;;;

;;; insert into buffer 
(defun thingy (foo) 
    (interactive "stallman: ") ; prompt the user 
    ; one semi-colon is also enough 
    ;;;(insert (concat "deprecated")) ;;; this line will not execute 
    (insert (concat "gnu-" foo))) 
+0

Dzięki, ale średniki będą komentować całe linie. Szukałem sposobu na skomentowanie poszczególnych sexów. – sigjuice

+3

Wątpię, czy można skomentować seksu bez używania mechanizmu komentarzy w języku. '(if nil sexp)' zwraca wartość zero, podczas gdy komentarz jest ignorowany i nie ma wartości. W związku z tym byłbym trochę nieufny w użyciu określenia "komentarz", aby to opisać, ponieważ nie jest to tym, czym jest. – phils

+0

Tak, naprawiałem przy "komentarzu" .... które są stosowane od średnika (ów) do EOL –

12

Twój konstrukt (if nil sexp) będzie działał dobrze. Nie wiem, czy istnieje standardowy odpowiednik w Emacs Lisp, choć podejrzewam, że nie. Jeśli chcesz bardziej dokładnie opisać, co robisz, możesz użyć czegoś takiego, jak comment macro in clojure. Które jest łatwo zaimplementowane jako makro Emacs Lisp.

(defmacro comment (&rest body) 
    "Comment out one or more s-expressions." 
    nil) 

Następnie można po prostu napisać:

(comment 
    ... 
    ; As many sexps as you want here... 
    ...) 

EDIT:

Dodane nil do końca definicji z comment makro. Jak wskazał Marko Topolnik, jeśli nie dostarczysz ciała implementacyjnego, defmacro zakłada, że ​​docstring jest w rzeczywistości ciałem. Jawnie umieszczenie nil na końcu działa wokół tego. Dzięki za połów Marko!

+2

Makro jest miłe, ponieważ możesz mieć wiele sekstów, podczas gdy jeśli działa tylko dla jednego seksu. Oczywistą alternatywą byłoby (gdy zero ...) –

+0

Zastrzeżenie: makro działa tylko dla formularzy najwyższego poziomu. Rozszerza się do tego, co autor najwyraźniej zamierzał napisać. –

Powiązane problemy