First things first:
- OS X: Install vanilla Emacs as a Mac app. There are other options, like Aquamacs, which are supposed to make Emacs more “Mac-like”, but they’re problematic in the long run because they’re set up so differently from standard Emacs that it’s difficult to use the Emacs manual or follow along with tutorials
- Linux: A recent version of Emacs is available directly from the package manager of most Linux distributions. For Ubuntu, follow these instructions.
- Windows: You can find installation instruction on this page. Alternatively, you can install Emacs with a single command using chocolatey, but I have not tried this.
Once installed and running you should have a window like this:
Most commonly used commands are accessible through dropdown menus; go check them out now, but be aware that many advanced users rely more on keyboard shortcuts. Check out this Emacs Reference Card to see the organization of these keyboard shortcuts. Most commands begin with holding down the control key C- or the meta key M- (alt or escape keys).
Aside: Emacs is inifinitely customizable by modifying .emacs configuration file. You may ignore this for now, but in future you may want to customize, so see here for more details.
We will be using the open source GNU g++ compiler for the c++ programming language.
- OS X and Linux: These OSs should have a version of g++ already installed.
- Windows: You can find installation instructions on this page.
Running g++ within Emacs
Now let’s see how Emacs can help us with writing, editing, and eventually debugging C++ code.
Download the program
sum1.cpp into your current directory.
Load the file, choose Open File… from the Emacs File menu. When it prompts you with:
Find file: curr-dir/
(where curr-dir is your current directory), type in the name of the file, giving:
Find file: curr-dir/sum1.cpp
Aside: The tilde (
~) is shorthand for your home directory in many programs and at the UNIX prompt. Thus, tilde (
~) will appear at the beginning of what Emacs lists as your current directory if it is under your home directory.
You should now see the source code in Emacs. Note that since we have loaded C++ code, Emacs has gone into C++ mode. Emacs knows it is editing C++ code because the filename ends in
Note that when you are in C++ mode in Emacs, there is an additional menu named C++, with commands for navigating and editing C++ programs.
Let’s use one of the C++ menu’s commands. In the Emacs window, put the cursor at the end of the first line that uses
cout: cout << “Enter how many numbers I will sum: “;
If you now choose Forward Statement from the C++ menu, it will go to the next statement, which is the one using
cin: cin >> howmany;
Aside: Roughly, a statement is something that ends in a semi-colon (
;), which is a simple statement. There are also compound statements–all of the stuff in a block (i.e., between braces,
}) forms a single compound statement.
You might use the Forward Statement (M-e) command to advance through statements in a program when you cannot easily tell where statements begin and end. The Backward Statement (M-a) command retreats back .
Another feature you can use when Emacs is in C++ mode is automatic indentation. You can use this before or after the fact. In other words, you can press the
<Tab> key before you type a line of code for it to indent to the proper place. Or, you can press the
<Tab> key while on a line, to fix its indentation after the fact.
To compile while in Emacs:
Use the Emacs command
<Esc> x compile
At the bottom of the Emacs screen, it will ask you what UNIX command to use for compilation. The default is
make -k (make is a separate topic), so erase that and type whatever compilation command you’d use at the UNIX prompt:
g++ -o total sum1.cpp
Note that we told
g++ to name the executable
Aside: The code you are compiling should be in the same directory as the one in which you started up Emacs.
Note that Emacs has now split its window into 2 parts (or subwindows), one of which contains the output of the attempt to compile the program:
There are errors in the compilation, and we can click on them and we will be brought to those line numbers of the source code to make appropriate edits.
Learning Keyboard ShortCuts:
The Emacs Tutorial or
Jessica Hamrick’s Absolute Beginners Guide to Emacs
Continue on your Emacs journey:
- The Emacs Manual, excellent, comprehensive instructions. Download the PDF and read it on the go! Spend some time with it every morning!
- Mastering Emacs This is one of the best Emacs resources.
- Emacs Reference Card, a nice cheat sheet
- How to Learn Emacs, a Visual One-pager for the more visually-minded folks
C-h t, the built-in tutorial
- History and Design: Emacs on Wikipedia
- The EmacsWiki is for discussing Emacs
Emacs can be run on different platforms using same or different configurations.
- For Clojure Programming I run with configuration file setup found here.
- For C++ I run with plain version using terminal command:
$open /Applications/Emacs.app –args -q