22

In an attempt to reach at least beginner status with such a legendary editor, I have been coding in Emacs for the last two months. I try to keep an open heart, but I find myself continally disagreeing with one core design choice: that Emacs allow its users to never have to leave. In a 2010 world, I just think that every side feature of Emacs is hopelessly behind dedicated software:

  • I would never use its built-in browser; Chrome is years ahead.
  • I would never use its dired feature; Path Finder (Mac OS X) suits my needs.
  • I would never use its built-in email; the Gmail web interface has more relevant features like Priority Inbox.
  • Etc.

Sure, I might occasionally dip into Emacs to use regexps, etc. for one of the above tasks, but other than regexps, I really see no reason to ever touch those side features. I'm a completely newbie, yet I have a strong gut feeling that Emacs-as-an-OS is obsolete.

Emacs experts, do you think that Emacs' choice to be a comprehensive environment is the right choice for 2010 and the future? Are there particular peripheral features that are still at or ahead of their time compared to alternatives?

AlcubierreDrive
  • 391
  • 2
  • 9
  • 9
    Is this really a question? It looks like you've already decided. – Larry Coleman Nov 25 '10 at 15:36
  • @Larry The reason I asked is that, despite feeling strongly, I am not experienced enough to have enough data to reach a fair conclusion. – AlcubierreDrive Nov 25 '10 at 15:42
  • "Emacs would be a good OS, if there is a simple text editor..." (anonymous) – duros Nov 25 '10 at 15:43
  • @Jon: If what you really want to know is whether emacs will be worth the time spent learning it, an edit of your question to reflect that should yield some interesting answers. – Larry Coleman Nov 25 '10 at 15:50
  • Judging from your opinion of Emacs design, it seems to me you would perhaps be happier with Vim. It is, a somewhat opposite, an editor and only an editor (i.e. not trying to be everything in one). – Rook Nov 25 '10 at 16:29
  • 5
    @Emacs is really nice for gcc+gdb development in a Unix environment. It is also nice for writing LaTeX. –  Nov 25 '10 at 16:48
  • 21
    This is why Emacs has a built in psychiatrist. – Tim Post Nov 25 '10 at 17:16
  • Emacs is nice when your Linux installation won't freaking boot after you have updated some packages and you need to edit some files, but hate to use pico/nano and vi[m] ;) – Job Nov 25 '10 at 18:02
  • 1
    @Job, for that particular purpose it is better to know vi, as it is standard Unix. –  Nov 25 '10 at 19:10
  • 4
    @Tim, M-x tetris is much more fun. –  Nov 25 '10 at 19:12
  • 2
    I totally understand you... I've used vi for years, and took some time to learn Emacs... and I've come to the conclusion that both just don't fit my needs... for programming, I prefer a modern IDE (Eclipse) and for simple text editing/scripting, nano is just fine. – Oliver Weiler Nov 29 '10 at 10:53
  • 2
    I think you could call Emacs an "application framework" rather than an operating system. – Mark C Mar 18 '11 at 22:12
  • maybe i'm weird but i've always preferred dabbrev-expand to intellisense – jk. Sep 07 '11 at 22:01
  • 1
    @Thorbjørn Ravn Andersen: And ed. After all, ed is the standard editor. – Vatine Sep 08 '11 at 11:50
  • @Vatine, try it. You might like it. –  Sep 08 '11 at 13:40
  • @Thorbjørn Ravn Andersen: Ed? I used ed as my primary editor for about a year, then used vi for another two. The closest vi today is probably nvi, so given a choice between nvi and vim it's nvi every day. Never used ex, though. – Vatine Sep 11 '11 at 17:42
  • @Vatine, you used ed as your primary editor? I would be less productive in such a situation - care to share why you chose to do so? –  Nov 28 '11 at 04:09
  • @ThorbjørnRavnAndersen - Emacs and Vi both looked horribly complex, but ed was easy to learn from the man page. I was only writing small C programs, shell scripts, replying to emails and posting to UseNet, so didn't need a complex editor. Then I started using vi and experimenting with emacs in parallel, eventually transitioning to primarily using emacs. As for "can be learned from a man page", this was in the mid-to-late 80s. – Vatine Nov 28 '11 at 15:45
  • 2
    Emacs-as-OS is a perfectly viable solution where you can only work in the console...say SSH session to a unix machine. Easier for me than running a half dozen ssh sessions. – Rig Aug 22 '12 at 21:43
  • Even with the GUI, except for the web browsing stuffs, everything in Emacs has its unique features that normal specialized applications do not have. As for `dired`, read this tutorial: http://ergoemacs.org/emacs/file_management.html for an overview. Can Path Finder run a shell command on selected files, execute shell command on selected files, or select files based on regex? – Amumu Mar 24 '14 at 18:09
  • If you are serious about reaching beginner status with a given software package, then using it as the OS is probably *not* the best approach. Are you interested in other approaches to reaching beginner status? Or do you want to address some other person's idea of treating Emacs as the OS? – D A Vincent Jun 02 '17 at 02:46

8 Answers8

19

Choose the right tool for the job.

Try running Chrome or Path Finder through an ssh connection - here you will need alternative toolings and Emacs was designed to run in a terminal.

  • Good point about ssh. – AlcubierreDrive Nov 25 '10 at 15:59
  • 3
    x11 forwarding? – TheLQ Nov 25 '10 at 16:54
  • @TheLQ, OS X applications are not X11 based. –  Nov 25 '10 at 17:20
  • 7
    How many people actually *use* a web browser through an ssh connection? – compman Jun 02 '11 at 21:34
  • @compman, under Linux many do as "ssh -X" allows you to let the remote system use your X11-server. This makes the remote browser show up on your display. For Windows I have recently run Windows Remote Desktop through a SOCKS-proxy to get around network limitations. THis is, however, as a developer. I do not expect normal users to do this. –  Jun 02 '11 at 21:39
  • @Thorbjørn: Okay. Does anyone use a text-based web browser over a non-X11-tunnelling ssh connection? Maybe there are people who do. – compman Jun 02 '11 at 23:21
  • 1
    @compman, yes. It can be extremely useful for downloading files from websites. –  Jun 02 '11 at 23:44
  • 1
    OS X has VNC, just tunnel the VNC connection through SSH, and you don't need to worry that OS X doesn't uses X11. – Lie Ryan Sep 07 '11 at 22:20
14

I've been using emacs for the last 10 years (from and to), and I can only say that you are absolutely right. Back in the days, I used gnus and the w3 browser, but clearly they are no longer up to it when compared to dedicated programs. But, obviously, you cannot run Chrome in text mode so this is where emacs wins. And even there, I'd rather use lynx/elinks or mutt for that.

Emacs-the-programmers-editor has lost its touch as well. Text editing is just fine, but when I'm writing code, I find myself wishing for functions like: goto definition, auto completion, refactoring, syntax hints, parameter docs etc etc (think Eclipse). I have tried a couple of emacs modes but never got it to work right. And no, I don't want to learn elisp, thank you.

Also, emacs don't really understand the semantics of the code. This is painfully obvious when coding in a file containing multiple languages like html with javascript and php or something. It just breaks down. For that, I much rather use any other editor (notepad++ or whatever) which does the job much better.

Martin Wickman
  • 13,305
  • 3
  • 31
  • 66
  • Yeah, TextMate's scopes ( http://blog.macromates.com/2005/introduction-to-scopes/ ) sound really enticing for the increasingly common multiple-language-file situation. – AlcubierreDrive Nov 25 '10 at 17:09
  • 5
    Of the stuff you list, Emacs actually has "goto definition" (using etags), "auto completion" (`autocomplete.el`, I think), syntax hints/parameter docs (on a language-by-language basis). The only one you mention it doesn't support AFAIK is automated refactoring, which is neither necessary nor useful for all languages. Multiple modes is atrocious though; it exists and supports PHP and mixed languages, but it's bad (as in excessively slow unless I'm on my desktop). I'll also give you the same advice I give any co-worker: if you don't want to learn Lisp, don't use Emacs, it'll do nothing for you. – Inaimathi Dec 17 '10 at 02:38
  • @Inaimathi Agreed, emacs have tools for everything, but that doesn't mean they are good enough in the context of this question. – Martin Wickman Dec 17 '10 at 11:53
  • 9
    Agreed; Emacs is not an OS. My objection is to "Emacs-the-programmers-editor has lost its touch as well". This is a particularly unreasoned argument given that you refuse to learn Elisp, as most of the benefit of Emacs-the-programmers-editor comes from applying customizations. I wouldn't object to "I don't use Emacs because I don't feel like learning Lisp", but you make it sound like your willful ignorance of the tool affects its fitness. This is on par with me saying "Eclipse sucks because it doesn't have PHP support. And I don't feel like learning how to install plugins, thank you." – Inaimathi Dec 17 '10 at 12:27
  • 1
    @Inaimathi You don't have to learn elisp (or any language) be able to use eclipse properly. Installing plug-ins doesn't require it either. – Martin Wickman Dec 17 '10 at 12:42
  • 2
    @Martin - It doesn't have built in PHP support (or didn't when I used it); you need to install a plugin for that. The quoted statement above is equivalent to "[Editor] sucks because it doesn't have [feature it actually has, but that needs to be enabled], but I don't really feel like learning [thing that you need to do in order to enable it]", and my point was that this **is** an unreasonable argument. – Inaimathi Dec 17 '10 at 12:46
  • 1
    @Inaimathi You like emacs, fine. Now give it rest, this discussion is pointless. – Martin Wickman Dec 17 '10 at 13:05
  • 3
    @Inaimathi: As far as refactoring goes, I was looking for a C++ automated refactoring program, and one of the few I found was in elisp. If you say "emacs doesn't support X", you're very likely to be wrong. – David Thornley Feb 04 '11 at 15:21
  • the degree of semantic analysis thet emacs can give you is very dependant on the language you are looking at and what modes you have – jk. Sep 07 '11 at 22:02
  • Your post is outdated. All the things you listed, already exist using CEDET. There are other solutions like using gtags, ctags, csope to do all the things you listed that are nicely integrated with Emacs. I use `GNU Global` and `ggtags` package (or `cscope` with `xcscope` package) to jump to anywhere in the Linux kernel source tree, and it's **fast** - instantly. I can even bookmarks function, variables, files... and classified related symbols (function names, variables, files...) into different categories using tag feature in `bookmark+`. I can never do this in other IDEs.. – Amumu Mar 24 '14 at 18:15
  • 1
    CEDET, gtags, and ctags do not give anywhere near the level of indexing quality (for all 3) or performance (in the case of CEDET) as a top notch C++ ide. CEDET is the only one out of these that's even really trying. Every emacs user I know that used these on a sophisticated codebase that uses templates, etc, said they were worthless. The Linux kernel is pure C, btw, and many IDEs (e.g. Eclipse) will effortlessly do what you just described. In short, emacs is just not competitive with the top IDEs in their distinguishing feature set. – Nir Friedman May 20 '15 at 02:29
  • What you wrote is nonsense! Emacs has IDE-like modes. CEDE's Semantic for C/C++, clang wrappers, javascript's tern, python's jedi and so on. Js2-mode is famous full JS parser in elisp and there is library with refactoring features on top of it. Same with C/C++. Integrated debuggers for dozens of languages (realgud and many others). Code linting again for dozens of languages using flycheck. Famous ORG mode. Excellent support for LISP languages. Infinite extensibility. Really, EMACS is not obsolete in any way. If you cant handle elisp, just go away and stop spreading false intel! – dev1223 Sep 14 '18 at 20:11
8

I don't even use the built-in therapist that much, but I do use Emacs and I like it, not because of it's comprehensive nature but because it is endlessly configurable and powerful as a text editor. Also I know a lot of the keystrokes for it. Successful text editing is all about the keystrokes.

If you want to develop your productivity with it, Steve Yegge has some good tips.

glenatron
  • 8,729
  • 3
  • 29
  • 43
  • I strongly disagree with Steves approach rebinding tons of keys to get Emacs to behave. Learn the standard key bindings and use your .emacs to tweak their behavioru. –  Sep 08 '11 at 08:54
  • His point is mainly an ergonomic one- he isn't saying there is a problem with the standard bindings as bindings, he is saying there is a problem with where the keys are on the keyboard and that if you want to make them easy to use, you need to find keys for that purpose that don't need you to tangle your little fingers up in the furthest corners of the keyboard. I can see the sense in that, but it does restrict you if you frequently change machine as you then need _another_ set of muscle memories or to spend ages reconfiguring every machine you use. – glenatron Sep 08 '11 at 10:12
5

Emacs was never intended for the mass market. It is designed for efficient use by people who have taken the time to learn how it works. That said, one size does not fit all, so you may not like emacs even after you learn more about it.

EDIT: My two favorite features of emacs besides editing text are the shell mode, and gnus. After getting frustrated with Google Groups because of all the spam, I signed up with Eternal September and learned how to use gnus. It's much faster to navigate through messages, and only the occasional spam posting gets through, and getting rid of it is a matter of one key press. Shell mode is especially useful to me at work because copy/paste is more efficient than it is in a DOS prompt.

Larry Coleman
  • 6,101
  • 2
  • 25
  • 34
  • I'm not dismissing the *text editor* as obsolete; I agree, it's very efficient once you get used to it. My question is about the merit of the design choice that you should be able to do anything and everything without leaving Emacs. Are there specific peripheral features that are still great, or do you have insight into the history of once-great peripheral features that have now been surpassed? – AlcubierreDrive Nov 25 '10 at 15:57
  • 1
    I edited out the dismissing as obsolete section after reading your comments. I don't use emacs for everything, but I really like the shell mode and gnus. – Larry Coleman Nov 25 '10 at 15:59
  • Sweet! I added a new second half to my question, in response to your feedback. Your comment answers it so +1 – AlcubierreDrive Nov 25 '10 at 16:05
  • 1
    Also being able to do everything in emacs made a lot more sense in say 1994, when computers where much slower then they are now. I use dired from time to time, if I am already in emacs and I use the shell a lot. Being able to do a lot of things in my editor or at least without having to move to the mouse is a win for me. You may have different taste (this is really a matter of taste at some level) – Zachary K Mar 27 '11 at 13:50
2

I've always approached Emacs as a platform rather than an out of the box solution. There are many packages that duplicate functionality or purpose and it's up to you to decide whether they meet your needs or not.

That's also the reason why many things are out of date. Most people (that I've met anyway) that use Emacs don't use it to read email or browse the web. However, I'm hard pressed to find another editor that has

  • as sophisticated remote editing capabilities
  • free form inline macro creation and editing
  • depth and breadth of available extensions/packages

It has been my editor of choice for over a decade for software development and word processing.

Best of all I don't have to touch my mouse when using Emacs.

dietbuddha
  • 8,677
  • 24
  • 36
2

Emacs could be an OS for you if you are willing to learn Lisp and write your own features that suits your needs.

But nowadays you can find everything you need in other tools made by other great people. Those people made those tools because they felt they needed them, just like you who will use them. Since many of them are open-source, there is a community which will make them better and better, with all the functionalities you need.

Trying to enhance Emacs is hard because you have to learn Lisp. Even existing plugins are getting older and older. Take language-modes for example, common languages like JS and PHP are hardly supported even for syntax highlighting. The best mode you could find for them is simply not enough.

Emacs is a great tool in the right hands, and for the right tasks. But there are better tools for specified tasks, and you should definitely use these instead.

Jose Faeti
  • 2,815
  • 2
  • 23
  • 30
1

I don't wish to start a holy war, actually, there was a time when I've used emacs each second day (one day vim, one day emacs). There's nothing wrong with emacs, it is indeed great tool. Great, great tool.

But as a true vim'er, I was always a bit frustrated with the fact that many emacsers are trying to use emacs literally everywhere, for literally all tasks.

Reading mail, querying database, reading pdf's - those are the most innocent of tasks I've seen to be "emacsificated".

So, as for me, there are tree main areas of using emacs:

  1. Text-editing. And it's mind-blowing, super tool. Believe me, after using vim or emacs for long time, you will totally miss its features in most advanced of IDEs.

  2. IDE. Well, it could be done. Moreover, it could somehow compete with modes IDE's. But the fact is that to make it really competitive, you should invest hard. You should try to assemble many different scripts. You should even write your own snippets of code. I wouldn't, to be honest.

  3. Other tasks, most of them exotic or even esoteric. Playing tetris and so on. Better not.

shabunc
  • 2,424
  • 2
  • 20
  • 27
  • 1
    As a long-time user of both emacs and vi (more than 20 years' experience of both, also about 1 year of using ed as my primary editor), I find emacs close to supreme for the occasional "I have repetetive code coming up, let the editor auto-generate it" (rather than, say, write another piece of code, then compile and run it, to generate the code). – Vatine Sep 08 '11 at 11:54
0

Somewhere in my collection of stuff I'm sure my wife wishes I'd just throw away, I have a copy of Emacs on QIC-40 Tape. I paid $50 to get it.

I couldn't #@%#$#$%@^#%# stand it then, I can't stand it now. I'm not saying it isn't a great editor for some, but for me .. it just gets in the way more than anything. It's original inception was to work around coke bottle keys, and it did that very well.

If you run a program, any program, you do it in the hopes that it increases (or at least, doesn't hinder) your productivity. If it doesn't work for you, don't use it.

Trust me, you aren't the problem.

Tim Post
  • 18,757
  • 2
  • 57
  • 101
  • 2
    "This is an important artifact, and it belongs in a museum!" –  Feb 15 '11 at 15:11
  • 1
    “If it doesn't work for you, don't use it” is an appeal to subjectivity, therefore “you aren't the problem” is a contradiction. – Jon Purdy Sep 08 '11 at 00:36