Emacs has many commands designed to understand the syntax of programming languages such as Lisp and C. These commands can
Move over or kill balanced expressions or sexps (see Lists).
Move over or mark top-level expressions---defuns, in Lisp; functions, in C (see Defuns).
Show how parentheses balance (see Matching).
Insert, kill or align comments (see Comments).
Follow the usual indentation conventions of the language (see Program Indent).
The commands for words, sentences and paragraphs are very useful in editing code even though their canonical application is for editing human language text. Most symbols contain words (see Words); sentences can be found in strings and comments (see Sentences). Paragraphs per se don't exist in code, but the paragraph commands are useful anyway, because programming language major modes define paragraphs to begin and end at blank lines (see Paragraphs). Judicious use of blank lines to make the program clearer will also provide useful chunks of text for the paragraph commands to work on.
The selective display feature is useful for looking at the overall structure of a function (see Selective Display). This feature causes only the lines that are indented less than a specified amount to appear on the screen.
| Program Modes | Major modes for editing programs. |
| Lists | Expressions with balanced parentheses. |
| List Commands | The commands for working with list and sexps. |
| Defuns | Each program is made up of separate functions. There are editing commands to operate on them. |
| Program Indent | Adjusting indentation to show the nesting. |
| Matching | Insertion of a close-delimiter flashes matching open. |
| Comments | Inserting, killing, and aligning comments. |
| Balanced Editing | Inserting two matching parentheses at once, etc. |
| Symbol Completion | Completion on symbol names of your program or language. |
| Documentation | Getting documentation of functions you plan to call. |
| Change Log | Maintaining a change history for your program. |
| Tags | Go direct to any function in your program in one command. Tags remembers which file it is in. |
| Emerge | A convenient way of merging two versions of a program. |
| C Mode | Special commands of C mode (and C++ mode). |
| Fortran | Fortran mode and its special features. |
| Asm Mode | Asm mode and its special features. |