Left Margin Convention
----------------------
In most major modes, Emacs assumes that any opening delimiter found
at the left margin is the start of a top-level definition, or defun.
Therefore, *never put an opening delimiter at the left margin unless it
should have that significance.* For instance, never put an
open-parenthesis at the left margin in a Lisp file unless it is the
start of a top-level list. Never put an open-brace or other opening
delimiter at the beginning of a line of C code unless it is at top
level.
If you don't follow this convention, not only will you have trouble
when you explicitly use the commands for motion by defuns; other
features that use them will also give you trouble. This includes the
indentation commands (Note:Program Indent) and Font Lock mode (Note:Font Lock).
The most likely problem case is when you want an opening delimiter
at the start of a line inside a string. To avoid trouble, put an
escape character (`\', in C and Emacs Lisp, `/' in some other Lisp
dialects) before the opening delimiter. This will not affect the
contents of the string, but will prevent that opening delimiter from
starting a defun. Here's an example:
(insert "Foo:
\(bar)
")
In the earliest days, the original Emacs found defuns by moving
upward a level of parentheses or braces until there were no more levels
to go up. This always required scanning all the way back to the
beginning of the buffer, even for a small function. To speed up the
operation, we changed Emacs to assume that any opening delimiter at the
left margin is the start of a defun. This heuristic is nearly always
right, and avoids the need to scan back to the beginning of the buffer.
However, it mandates following the convention described above.