emacs.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 02 Mar 2009 20:43:21 +0200
changeset 41 0520329036c8
parent 20 ccbb0c9257bb
child 44 735e016c8d30
permissions -rw-r--r--
Correction.

-*- mode: outline -*-

* How debug?

When your InitFile has a bug, or when you load external files that cause
errors, the bug is often hard to find, because the Emacs Lisp reader does not
know about line numbers and files – it just knows an error happened, and
that’s it.

You have several options:

  * Binary Search – select half of the file in a region, and M-x eval-region.
  Depending on whether that causes the error or not, split this half or the
  other half again, and repeat.

  * Simplified Binary Search – add (error “No error until here”) in the
  middle of your file. If you get the error “No error until here” when
  reloading the file, move the expression towards the back of the file,
  otherwise towards the front of the file.

  * Use a keyboard macro that moves forward one expression (sexp) and
  evaluates it.

  * Try the command line switch --debug-init.

  * Should n’t (setq debug-on-error t) help?

 * Try check-parens.

* Using edebug.

The main entry point is ‘M-x edebug-defun’ (also on ‘C-u C-M-x’). Use it
instead of `C-x C-e’ or ‘C-M-x’ to evaluate a ‘defun’ and instrument it for
debugging.

You can disable edebug on a function by evaluating the function again using
‘C-M-x’.