LISt Processing.
is a list.
setq makes something a global variable. (? - what's the difference between setq and let someone?)
(setq mylist '(a b c))
(print (car mylist))
a
And that is basically LISP ;)
emacs is completely scriptable in LISP - look in /usr/share/emacs/site-lisp/*.el for the start-up and config files.
Here is an emacs lisp example from po-mode.el. It only has a maximum of 8 closing brackets in a row, but I didn't look very hard.
;; Handle missing `with-temp-buffer' function. (eval-and-compile
(if nil ; FIXME: just testing... (fboundp 'with-temp-buffer)
(fset 'po-with-temp-buffer (symbol-function 'with-temp-buffer))
(defmacro po-with-temp-buffer (&rest forms)
"Create a temporary buffer, and evaluate FORMS there like `progn'." (let ((curr-buffer (make-symbol "curr-buffer"))
(temp-buffer (make-symbol "temp-buffer")))
`(let ((,curr-buffer (current-buffer))
(,temp-buffer (get-buffer-create
(generate-new-buffer-name " po-temp"))))
(unwind-protect
(progn
(set-buffer ,temp-buffer) ,@forms)
(set-buffer ,curr-buffer) (and (buffer-name ,temp-buffer)
(kill-buffer ,temp-buffer))))))))
lib/BlockParser.php:505: Notice: Undefined property: _tight_top (...repeated 4 times)