emacs.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 12 Oct 2009 19:46:38 +0300
changeset 223 1f1a18891bc2
parent 213 af6fdb4adbf3
child 225 0de8b66b6f49
permissions -rw-r--r--
Call tree.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
e225b746945d Correct encoding.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 177
diff changeset
     1
-*- mode: outline; coding: utf-8 -*-
18
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
213
af6fdb4adbf3 Correct spell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 212
diff changeset
     9
you entered to its debugging (jumped to its source code).
171
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.
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
171
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
213
af6fdb4adbf3 Correct spell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 212
diff changeset
    25
When your ini has a bug, or when you load external files that cause
18
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
errors, the bug is often hard to find, because the Emacs Lisp reader does not
179
e225b746945d Correct encoding.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 177
diff changeset
    27
know about line numbers and files - it just knows an error happened, and
e225b746945d Correct encoding.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 177
diff changeset
    28
that's it.
18
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.
19
2230f25e0375 add about edebug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 18
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.
181
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    52
223
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    53
** Call tree.
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    54
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    55
Before byte compiling file execute
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    56
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    57
  (setq byte-compile-generate-call-tree t)
1f1a18891bc2 Call tree.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 213
diff changeset
    58
181
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    59
* WWW.
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    60
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    61
** Text based WWW browser.
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    62
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    63
  http://en.wikipedia.org/wiki/W3m
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    64
  http://emacs-w3m.namazu.org/
4202927c15ac Text based WWW browser for emacs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 86
diff changeset
    65
  http://www.gnu.org/software/w3/
212
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    66
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    67
* Tricks.
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    68
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    69
** Sort and uniquify lines.
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    70
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    71
Select region, type C-u M-| sort -u RET.
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    72
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    73
With transient-mark-mode and delete-selection-mode enabled: select region,
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    74
type M-| sort -u RET to replace selection with sorted and uniquified lines.
5715a5193fd4 Sort and uniquify lines.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    75