emacs.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 20 Apr 2009 20:05:18 +0300
changeset 99 0fa8ff78a008
parent 86 72175e4fc069
child 171 8e806cddee36
child 181 4202927c15ac
permissions -rw-r--r--
CMD tricks.
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
44
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
     3
* How debug ini file?
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
When your InitFile has a bug, or when you load external files that cause
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
errors, the bug is often hard to find, because the Emacs Lisp reader does not
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
know about line numbers and files – it just knows an error happened, and
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
that’s it.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    10
** Binary Search.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    12
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
    13
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
    14
repeat.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    15
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    16
** Elisp.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    18
 - 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
    19
   it.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    20
 - Try C-x check-parens.
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    21
 - Set (setq debug-on-error t).
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    22
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    23
** CLI.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    25
  $ emacs --no-init-file --no-site-file --debug-init
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    26
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    27
** Simplified Binary Search.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
86
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    29
Add (error “No error until here”) in the middle of your file. If you get the
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    30
error “No error until here” when reloading the file, move the expression
72175e4fc069 Reformat and add CLI switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
    31
towards the back of the file, otherwise towards the front of the file.
19
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    32
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    33
* Using edebug.
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    34
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    35
The main entry point is ‘M-x edebug-defun’ (also on ‘C-u C-M-x’). Use it
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    36
instead of `C-x C-e’ or ‘C-M-x’ to evaluate a ‘defun’ and instrument it for
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    37
debugging.
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    38
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    39
You can disable edebug on a function by evaluating the function again using
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
diff changeset
    40
‘C-M-x’.
44
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    41
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    42
* How debug func?
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    43
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    44
Use M-x debug-on-entry and M-x cancel-debug-on-entry to control
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    45
which functions will enter the debugger when called.
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    46
735e016c8d30 how debug emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 20
diff changeset
    47
When next time that function called automatically loaded debug-mode.