Forbidden Emacs Lisp Knowledge: Block Comments
emacsninja.com
emacsninja.com
;;; test.el --- -*- lexical-binding: t; -*-
Don't know if it's useful in practice, but if we had multiline comments, we
could add invisible property on those markers to auto-hide them. Interlaced with
Emacs Lisp code, it gives a "feel" of literate programming.
(defun cursed-elisp-block-comment (beg end)
(interactive "r")
(save-excursion
(let ((start (format "#@%d " (+ (- end beg) 2))))
(goto-char end)
(insert "\037")
(put-text-property end (1+ end) 'invisible t)
(goto-char beg)
;; account for space and terminator
(insert start)
(put-text-property beg (+ beg (length start)) 'invisible t))))
(defun make-visible (beg end)
(interactive "r")
(remove-text-properties beg end '(invisible t)))
This file is a little demo of the concept, but to actually be useful, there
should probably be some routine to automatically mark text paragraphs with
invisible markers, since it is a bit labourous to do it by hand for each
paragraph. Surprisingly, indentation engine didn't complain at all, while
font-lock of course does not know I am in a comment.
(message "hello multiline comments")
(provide 'test)
;;; test.el ends here
Above file evaled as emacs-lisp buffer:On a practical note, at the top level or in the middle of progn-like constructs, you can do "block comments" with just:
'( ... )
I.e., quote the form to prevent evaluating it.
Nonetheless comment macros are neat. Just like #_(ignored) in clojure or else.