emacs.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Thu, 20 Aug 2009 12:40:23 +0300
changeset 177 02b79b857ee1
parent 171 8e806cddee36
child 179 e225b746945d
permissions -rw-r--r--
Use plain ascii chars instead of UTF-8.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
-*- mode: outline -*-
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     3
* Debugging.
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     4
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     5
** Using edebug.
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     6
177
02b79b857ee1 Use plain ascii chars instead of UTF-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
     7
Execute 'M-x edebug-defun' (also on 'C-u C-M-x') on defun in source code to
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     8
enable debugging for desired function. When next time this function invoked
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
     9
you entered to its debugging (jamped to its source code).
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    10
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    11
To start debug execute code which used debugged function.
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    12
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    13
You can disable edebug on a function by evaluating the function again using
177
02b79b857ee1 Use plain ascii chars instead of UTF-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
    14
'C-M-x'.
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    15
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    16
** How debug func?
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    17
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    18
Use M-x debug-on-entry and M-x cancel-debug-on-entry to control
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    19
which functions will enter the debugger when called.
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    20
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    21
When next time that function called automatically loaded debug-mode.
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    22
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    23
** How debug ini file?
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
When your InitFile has a bug, or when you load external files that cause
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
errors, the bug is often hard to find, because the Emacs Lisp reader does not
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
know about line numbers and files – it just knows an error happened, and
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
that’s it.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    30
*** Binary Search.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    32
Select half of the file in a region, and M-x eval-region. Depending on whether
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    33
that causes the error or not, split this half or the other half again, and
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    34
repeat.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    35
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    36
*** Elisp.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    38
 - Use a keyboard macro that moves forward one expression (sexp) and evaluates
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    39
   it.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    40
 - Try C-x check-parens.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    41
 - Set (setq debug-on-error t).
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    42
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    43
*** CLI.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    45
  $ emacs --no-init-file --no-site-file --debug-init
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    46
171
8e806cddee36 Debugging emacs (about edebug).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    47
*** Simplified Binary Search.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
177
02b79b857ee1 Use plain ascii chars instead of UTF-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
    49
Add (error 'No error until here') in the middle of your file. If you get the
02b79b857ee1 Use plain ascii chars instead of UTF-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
    50
error 'No error until here' when reloading the file, move the expression
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    51
towards the back of the file, otherwise towards the front of the file.