This is long and overly detailed but can be summed up as follows:
*emacs: the computational environment that edits.
(Everything goes for both)
Gushing overview follows. These are just my preferences for my development environment, not an attempt to diss any others, or users thereof. So please, put away the flamethrowers.
Users happy with their current environment need not continue.
Add in xcscope, tags via exuberant ctags, gdb interface, {CVS|svn} interfaces, various email readers for communication, chat clients, etc. There are other code browsers ECB and OO Tags which I've played with but am not competent enough to describe adequately.
C/C++ highlighting and indentation. The C/C++ indentation is quite smart. Very often it finds syntax errors due to the fact that the indentation is off from what is expected. Indentation modes for a wide variety of files. An incredibly good diff and merge utility.
A calendar with appointments and reminders. Builting access to man pages. The ability to automatically list contents of a (compressed) tar file and to operate on the individual files. Builtin text mode web browser. Interface for controlling external web browser. Some games, too.
A variety of fonts. Optional text mode menus. Menu based customization. Builtin help and access to info system.
The ability to edit files on other machines by loading and saving the file with scp, ftp, etc. This allows editing remote files to be as fast as those edited locally (except for loading and saving). This is a life saver for slow connections. The ability to use a shell in an editing buffer allows you to use all editing commands on previous output, etc. The shell can be local or remote via rsh/ssh. Expansion for everything: buffer names, file names, command names. I was pleasantly surprised when editing a remote file and I hit tab by force of habit and *emacs went to the remote machine and then allowed tab expansion to work as expected on the files "over there."
And the option of extension via lisp (and there is a version that can be programmed in Python.) Functional programming is tremendously powerful. Interpreted environment allows for quick changes/macros/functions to be written and for existing functions to be customized very quickly. Lisp is admittedly odd compared to procedural languages like C/C++, but is well worth learning. Allowing a function to be attached to any key is obscenely powerful. It allows commands to be context sensitive allowing them to "do the right thing" based on where in a file the key is used. E.g. a newline in a comment can make the next line part of the same comment whereas a newline in a function can automatically indent the next line properly. And these are fairly trivial examples. Context based on-the-fly spel chekking; it can be made to spell check in comments but not in code. You can remap any key to any function.
I've written >15K lines of lisp code... I'm close to completing the "write program" command;-> Lisp was designed as an AI language after all.
It is pretty heavy weight, but not a burden for any machine I've worked on beginning with my 486DX.
I start it when I get to work and exit when I go home.
This is long and overly detailed but can be summed up as follows:
;-> Lisp was designed as an AI language after all.
*emacs: the computational environment that edits.
(Everything goes for both)
Gushing overview follows. These are just my preferences for my development environment, not an attempt to diss any others, or users thereof. So please, put away the flamethrowers.
Users happy with their current environment need not continue.
Add in xcscope, tags via exuberant ctags, gdb interface, {CVS|svn} interfaces, various email readers for communication, chat clients, etc. There are other code browsers ECB and OO Tags which I've played with but am not competent enough to describe adequately.
C/C++ highlighting and indentation. The C/C++ indentation is quite smart. Very often it finds syntax errors due to the fact that the indentation is off from what is expected. Indentation modes for a wide variety of files. An incredibly good diff and merge utility.
A calendar with appointments and reminders. Builting access to man pages. The ability to automatically list contents of a (compressed) tar file and to operate on the individual files. Builtin text mode web browser. Interface for controlling external web browser. Some games, too.
A variety of fonts. Optional text mode menus. Menu based customization. Builtin help and access to info system.
The ability to edit files on other machines by loading and saving the file with scp, ftp, etc. This allows editing remote files to be as fast as those edited locally (except for loading and saving). This is a life saver for slow connections. The ability to use a shell in an editing buffer allows you to use all editing commands on previous output, etc. The shell can be local or remote via rsh/ssh. Expansion for everything: buffer names, file names, command names. I was pleasantly surprised when editing a remote file and I hit tab by force of habit and *emacs went to the remote machine and then allowed tab expansion to work as expected on the files "over there."
And the option of extension via lisp (and there is a version that can be programmed in Python.) Functional programming is tremendously powerful. Interpreted environment allows for quick changes/macros/functions to be written and for existing functions to be customized very quickly. Lisp is admittedly odd compared to procedural languages like C/C++, but is well worth learning. Allowing a function to be attached to any key is obscenely powerful. It allows commands to be context sensitive allowing them to "do the right thing" based on where in a file the key is used. E.g. a newline in a comment can make the next line part of the same comment whereas a newline in a function can automatically indent the next line properly. And these are fairly trivial examples. Context based on-the-fly spel chekking; it can be made to spell check in comments but not in code. You can remap any key to any function.
I've written >15K lines of lisp code... I'm close to completing the "write program" command
It is pretty heavy weight, but not a burden for any machine I've worked on beginning with my 486DX.
I start it when I get to work and exit when I go home.
Claim copyright on your playlist and then prosecute 'em for piracy of your IP.