I use text files to organise myself but I use notepad++ to edit them.
I have tried to learn emacs a couple of times but I am really unmotivated - don't see any case where it would help me. I am afraid I'm missing something.
I use text files to organise myself but I use notepad++ to edit them.
I have tried to learn emacs a couple of times but I am really unmotivated - don't see any case where it would help me. I am afraid I'm missing something.
When I started to use org-mode it was because I needed to generate a gant chart and I wanted a text format. I haven't used that functionality every again. Since then I have used org-mode for a variety of things, but never all at once, always a little piece at a time. Typeset a thesis in latex? Execute analysis code in a reproducible way? Write DRY bash scripts and tangle (compile) them? Run and log the output of one-off commands on remote servers so that if you ever have to do it again you have a record of it? The list goes on and on.
Last week I was told that I needed to start keeping track of the time I spend working on different tasks. Despite keeping todo lists I have never used the org clocking functions, ye there they were there, just a C-c C-x C-i and C-c C-x C-o away. Integrated into my workflow when I needed it with all of 30 seconds of effort and two key combinations of overhead.
Emacs is useful because countless others have encountered problems the likes of which a single person only rarely dreams. Not only that but they have probably already implemented a solution that is fairly easy to find once you encounter the problem and in 80% of the cases can be used unmodified.
Yes, you and all the rest of us are missing something. It is impossible NOT to miss something and no tool can solve that for you. The question to me is whether you want to spend your time learning a tool and integrating with an ecosystem where you never have the possibility of benefiting from the things that others did not miss.
> I am afraid I'm missing something.
You are not.
Nowadays I just use crappy little text editors for small notes and JetBrains IDEs for dev work.
Right now I use intellij for my main development work; I use some keyboard combinations where applicable (and changed the keymap to Sublime Text because I've used it and its derivatives (vs code mainly) for the better part of my career.
I don't have a dedicated flow for task tracking. Right now for work we use Phabricator, it's a bit awkward because it's a heap of independent modules built on top of each other, but it met our requirements (free, open source, self-hosted, not shit).
For a while I used a todo.txt addon in Sublime Text, which worked great; haven't been able to find a good alternative to it.
Used Wunderlist for a while, but I couldn't find my finished tasks without paying and it's been discontinued. Same with Todoist, minus the discontinued-ness.
Anyway, I don't think keyboard-based tools for me; I'm pretty good at typing if I do say so myself (~120wpm according to online tests / typeracer and co), but I haven't developed the mental capacity to remember all the keyboard shortcuts for emacs or vim.
I also didn't grow up with *nix systems, commandline only became a thing once I started my education and career ~15 years ago.
You are missing an entire world treated as text and a consistent and an endlessly configurable interface for everything you can pull into your emacs Borg.
See this comment too: https://news.ycombinator.com/item?id=23673299
Note, many still use emacs for what the GP described and more.
There are tons of examples of programming wizards and productivity gurus who don't use emacs. And you'll encounter lots of people who can't get shit done but who fiddle endlessly with emacs or vi or whatever configs and believe they have some super efficient direct connection from their brain to their computer.
Some of the best, most productive programmers I know use notepad, and some of the worst use emacs. ymmv.
Yeah? I'm not sure how meaningful this argument is here since you can just get by with nano and a terminal.
> Which is how the "cult" (tongue-in-cheek) treats it, and why this person has FOMO.
I frequent the places that the "cultists" would most likely be and the prevailing theme is "if your workflow works, keep it, but emacs could do X for you".
> There are tons of examples of programming wizards and productivity gurus who don't use emacs.
Yeah, but that doesn't mean Emacs wouldn't make them less or more productive.
I don't think I've seen the "you need emacs" strawman your arguing against in practice.
> And you'll encounter lots of people who can't get shit done but who fiddle endlessly with emacs or vi or whatever configs and believe they have some super efficient direct connection from their brain to their computer.
Would those people be more or less productive without emacs? I find answering questions like this for myself difficult, I can't imagine trying to decide others would be better off not using an editor.
Isn't saying lots of people exist that would be more productive without the kind of presumption that annoyed you from the Emacs cult?
> Some of the best, most productive programmers I know use notepad, and some of the worst use emacs. ymmv.
Right, which is why I commented what the other user was missing and not "you need this".
Lisp is great and you should learn it. (If you want.)
You don't need emacs for that - just find a scheme interpreter in a web browser [0] and start reading SICP [1] until you get bored. That's all the effort you need to get the mind-expanding effect. This approach is also way more fun.
If you really like it, move on to a "real" Lisp.
> Anyway, I don't think keyboard-based tools for me
Honestly, me neither.
At least, not the way they were when I used emacs as my "daily driver." Why? Because the MacBook trackpads are so precise and fast that "using the mouse" is no longer an impediment.
If you ever try to use a pre-2000 mouse and operating system with their horrible (compared to now) tracking and accuracy, the claim that mice slowed a developer down makes total sense. Nowadays? Not so much.
[0] https://inst.eecs.berkeley.edu/~cs61a/fa14/assets/interprete...
[1] https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
But you to have to know where to click. And that's the biggest problem with so-called "modern" UIs - it lacks discoverability. Either you memorize all menus and dialogs, or you have to seek out the functionality you need each time you can't remember anything. And sometimes these dialogs change, so you have to rediscover everything once again.
In Emacs, it's enough only to remember basic movement shortcuts. The rest of commands could be discovered easily with M-x and which-keys.
> You don't need emacs for that - just find a scheme interpreter in a web browser [0] and start reading SICP [1] until you get bored. That's all the effort you need to get the mind-expanding effect.
One of the main reasons I moved to Emacs (11 years ago) was Common Lisp and SLIME.
> If you really like it, move on to a "real" Lisp.
A real(world) Lisp is Clojure these days
afaik every modern IDE has this discoverability functionality. I use shift-shift and control-control autocomplete command menus all the time in JetBrains.
In Emacs - you don't have, there are a lot of packages which make the discoverability a breeze - counsel-M-x, helm-M-x for exploring all commands with corresponding shortcuts and also which-key, which allows you to automatically pop up the "next steps" in your current state.
How about having a mental capacity to remember all menus/dialog boxes in your IDE?
This doesn't sound particularly earth-shaking, but it really is. Think of a language like Ruby or especially Clojure, where there are a few core data structures, but many things that leverage them. This means that every time you learn part of the Ruby Array API, or a useful function to work on Clojure sequences, you get to use that _everywhere_. So all of Emacs' basic interactions (and they may seem weird to begin with but they're honestly just trying to save your wrists some pain) work everywhere. You can always trust your intuitive, spatial model of the thing you're looking at. Search backwards in a text file, find some text, select it, copy it, go back to the end and paste it. That works exactly the same in a shell. It works exactly the same in a database client. Or SSH'd into a server. Or replying to an email. Same gestures when entering commands, same gestures moving around in autocomplete popups.
Everything you learn with Emacs (and later, everything you write with elisp), has a little incremental benefit to your power and productivity manipulating text. Except everything is text, and so it all multiplies together.
For whatever reason, I've been trying VSCode on Windows the last couple of weeks, coming from an Emacs on Linux background. I cannot tell you how painful I find it, even after making a pretty good attempt to map all the keys correctly (snarky sidebar, sorry: every editor and IDE has really good Vim key bindings, but terrible Emacs support. I used to feel bad about this until I realised it was a sign that Vim people clearly didn't use Vim that much, whereas Emacs people never leave Emacs). But VSCode begins at a completely different level of abstraction to Emacs. It doesn't want to show you a text-based UI everywhere, and implement tools to manipulate text. It wants to show you windows and panels and configuration screens and extensions with their own behaviour. Everything is modal and different, some windows are special, and you can't just navigate around the same way everywhere.
So, sure, this isn't for everyone, but it's what I love about Emacs, to the point that the many regular indignities it forces on you (hangs if you're not careful about large files, abysmal performance of various things on Windows because of the overhead of starting processes, and sure, the learning curve for some people) are bearable because everything is so natural.
The other problem is speed of typing is irrelevant if you are working with libraries all the time, which is basically what most of the programming world does. This is also true in part for vim. The whole idea of one having to press less buttons to move text around is really a solution for a problem that doesn't exist in the modern world.
Emacs is still very good in things like Keyboard macros, and M-x Occur etc. Basically text manipulation stuff. The thing is that kind of text manipulation work isn't common anymore.
Having said that, I'd be very happy if there was a good default keyboard macro system in vscode. Or in general some emacs features ported to vscode would be really neat. Some features in emacs would make great feature ideas in vscode.
Text is still a large part of computing.
> These days programming languages are designed around tooling.
Every time I see a language which requires a lot of tooling to use it comfortably, usually it's bad designed one
> The whole idea of one having to press less buttons to move text around is really a solution for a problem that doesn't exist in the modern world.
I think the idea is not about having to press fewer buttons, but to bother your brain with unnecessary things as little as possible. With Emacs, you don't have to remember "where the hell is this command and what is the shortcut for it?", you type M-x (especially if you use plugins like counsel or helm) type some related words and that's it. You don't have to know how every function works - M-x decribe-function at your service! Not enough? You can always jump to definition and take a look at it.
> The thing is that kind of text manipulation work isn't common anymore.
You still write programs in text, the commands you give to computer ARE text too, even "modern" menus are nothing but text.
> The thing is that kind of text manipulation work isn't common anymore.
Emacs has LSP plugins, if that's what you are talking about
> Or in general some emacs features ported to vscode would be really neat.
Which features does VS Code have but Emacs don't?
Text still is mostly everything for all of my backend programming, note taking, etc.
> The other problem is speed of typing is irrelevant if you are working with libraries all the time, which is basically what most of the programming world does.
Typing speed is far from the most important part. It's the consistent interface for everything, reduction of cognitive load, and everything being available at your fingertips in emacs.
Given that you're still on a computer, what do you think isn't representable as text in one way or other? You can drag and drop images from a browser into Emacs[1], and it will download the image to a sensible (and configurable) location, add a link to the file and display it inline.
> The other problem is speed of typing is irrelevant
Yes, but having an interface which is reasonable and configurable is important for managing cognitive load, and Emacs excels here.
I think a modern lisp based editor, with concurrency/threading built in. With Racket/Clojure/CL backend with modern controls builtin would be all we need.
You still keep the emacs spirit, but with modern outlook.
Sure, but it's the same as the "replace (La)TeX" problem: part of the value of the ecosystem is the huge collection of packages/extensions.
But if there was a reasonable way of porting packages over to a CL/Scheme new editor base, I agree that would be good.
> Including having to do less configuration and tweaking work.
Sure, but a bad, unconfigurable tool is more work.
How could you emulate emacs? Just the keybinds would miss the point.
[vim user] Usually I don't get baited by the holy war, but this one got me good, well played.
I don't use other editors much, but my experience with them has been that they usually do have good basic vim keybindings, but only for the default keys, and never with support for configuration; I have k-j and j-k mapped to esc, so I don't have to take my hands off the home row to leave insert/visual mode, and not being able to do that is terrible. So I don't use vim keybindings even if they are available -- it's more frustrating to put my brain in "vim mode" and then have some things missing, than to just use the default settings.
Also, it's always been weird to me how it's emacs vs vim. Vim is a text editor; emacs is an IDE and an operating system. When I'm working I'm constantly ctrl-z-ing out of vim to use other tools.
Me too, and for me too.
What do you use that doesn't allow jk for normal mode? I found it works with most programs in which I use vim bindings nowadays:
https://github.com/tasuki/dotrc/blob/master/.inputrc#L8-L13
https://github.com/tasuki/dotrc/blob/master/.zshrc#L41-L42
https://github.com/tasuki/dotrc/blob/master/.ideavimrc#L5-L7
I don't need better manipulation of meaningless context-free lexicographical symbols. I need better manipulation of context-specific, meaningful, rich objects. I spend very little time on the former, and almost all of my programming time on the latter.
They are still represented as text in 99% of editing interfaces, and you have to work with that representation.
Emacs has had structural editing for lisp how long?
Plus, it's nice to fallback to ctags or ripgrep if your lsp server dies
Is that just the default installation with better choices in the settings? I should have been more patient Emacs and persistent in configuring it.
- better-defaults (removes the toolbars/etc): https://github.com/technomancy/better-defaults
- doom-modeline (a nicer-looking modeline - that's the bar at the bottom): https://github.com/seagle0128/doom-modeline
- base16-chalk theme from base16-theme
All of the above packages are in MELPA.
And then the transparent titlebar is:
(add-to-list 'default-frame-alist '(ns-transparent-titlebar . t))
(add-to-list 'default-frame-alist '(ns-appearance . dark))I installed the Doom Emacs configuration and it looks really great and modern on macOS. I think you'd like it! Definitely worth a quick install to see what is possible - you can always go and make your own configuration based on that if you want
Doom Emacs: https://github.com/hlissner/doom-emacs
Doom Emacs themes: https://github.com/hlissner/emacs-doom-themes (can be installed standalone but not sure if they disable the toolbars etc)
But should you one day find yourself needing an informational omnitool that can be adapted to the task at hand while you work with it, you will find that there is simply no substitute for Emacs. And that's the difference between an extensible text editor and Emacs. A few lines of Emacs Lisp and some Unix plumbing can get you very far -- and you can debug it in production, dynamically updating the Lisp code as you use it.
> Nothing’s in the same category when you look deep enough into them.
That’s also patently false: many things belong to the same category. Everything that exists belongs to the existent category, for example.
Lately, I've been experimenting with CRIU preserving my tmux'd Emacs session state. So unless an OS update hits libraries my Emacs session needs to reload, I should be able to maintain a better relocatable resumable state than even the Emacs desktop alone could.
See if you find any features or extensions that aren’t available on notepad++...
My .emacs configuration is based on vim style modal shortcuts that make me faster than a mutant: https://github.com/tinku99/dotfiles/blob/master/init-public....
I also use org-mode as a minor mode for autohotkey code editing, by changing the outline character from * to ; ... https://github.com/tinku99/ahk-org-mode
To wit: Again I really really like Emacs as a piece of software, and I've been using it for like 10 years now. Maybe 3 or 4 of those years I've been using it reasonably seriously and even I find my eyes glaze over because of how dense and unapproachable the documentation is.
On top of that, being a political project, Stallman actively resists certain improvements to Emacs that would for example make it work better on my Mac, because my Mac is nonfree and Stallman would rather have an objectively poorer piece of software than one that "encourages" using MacOS.
And of course the other senior people in the Emacs project don't want to go against Stallman, so emacs is doomed to being a mediocre niche text editor with unrealized potential to become a household name.
If someone wrote an open source clone of Emacs that adopted some sane defaults, modern UI conventions, and dropped all the political BS it could be so much better.
Alas I don't have the skill nor the time to attempt such a thing.
Edit: hey how about a substantive reply rather than drive-by downvotes?
Emacs is absolutely a household name, at least in the world of text editors…
My teachers in highschool knew what Office was and how to use it. I doubt most teachers now have heard the name VS code and don't know why they'd want it.
I’ve never had a conversation with a software developer where they didn’t know what vim or emacs are.
Ok.
But of those people who stick with vi for more than 6 months, how many of them have yet to hear of emacs at that point? Maybe 5%?
1) Emacs? What is that? Looks like it came out before I was born. No thank you, I need something modern.
2) Emacs? That's still around?! I remember that from my Vax days...
Either way, few of them would countenance the idea of using Emacs to do professional software development in 2020. The vast, vast majority of developers out there use either a large feature-rich IDE like Visual Studio, IntelliJ, or Eclipse... or they use Visual Studio Code.
4.5%. So not many but it's certainly "among."
Worthy of mention, of course, is Spacemacs[1], which made Emacs approachable to me, someone who hadn't used much beyond Notepad++ and Eclipse before then.
Linux and Kubernetes are structured the same way- nobody is using that out of box on it's own
Yes it does, for me anyways, for the most part. While I definitely plan to dive deeper, I'm using plenty of Emacs stuff via Spacemacs, and I've customized plenty of stuff by copy/pasting incomprehensible elisp snippets.
Of course as a Lisp weenie I do intend to dive into Emacs and honestly part of the reason I don't is that I'm afraid I'll end up spending way too much time diving and tinkering.
1) Who cares about being a household name. Vain goals serve no one 2) You didn't specify one actionable change.
Please quote where I asked anyone to do anything. I merely explained why emacs is not popular and why in my opinion it will never be.
This is sad to me because I quite like emacs, and if I had the capacity to fork it I would.
I'm somewhat curious what choices of Stallman's you think are holding it back. Feels more alive to me than it has ever felt. And that branch that is using gcc to compile elisp is a delight.
I concede I expect there are choices made that could be bad; but I suspect most of the choices people think matter, don't. Which is why i highlight the compiling elisp branch. A complete rewrite would not have had as much of an impact. And, frankly, I feel elisp is easily as good of a language as any proposed choice. Better than most.
I'm a die-hard Emacs fan, but it's a tool. It works well -- really well for a lot of us. For the rest, honestly, I don't care very much about evangelizing Emacs because I have a lot left to explore about using it first. There is 20- and 30- year old elisp out there that still runs perfectly well on a modern Emacs and probably solves some of your problems. Rendering a crop of the latest fly-by-night emoji is honestly the least of my concerns (with reference to the MacOS thing), although I personally disagree strongly with Stallman's stance in that matter.
I agree about the docs being dense and somewhat unapproachable, a lot could be done towards making elisp easier to approach. I think a big problem here is the unapproachability of any Lisp (not just Emacs Lisp) as a scripting and configuration language. In fact, I wonder if (Clojure being the first), elisp is the second most popular scripted Lisp in existence.
Of course you do. This policy doesn't benefit you in the slightest, and since you are a macOS user already, all of your experience is telling you that this policy doesn't work.
But this particular policy is logical, and it doesn't really hurt Emacs. And, who knows, perhaps one day some talented/bored macOS developer will become so unhappy with Emacs not showing the latest fashion of emojis, they will go on and implement that support in Free libraries that are used for text rendering on GNU/Linux, and contribute it upstream.
Emacs kind of gives me that same vibe. I used it for many years to organize my research but still have a hard time remembering key strokes and such .. though i dont have a similar issue with vim whose modal interface I find rather pleasantly compositional. So I get both the sense of power and flexibility, and the chaos of it.
Emacs does have sane defaults. Did you mean instead you want defaults that remind you of the defaults in other (younger) programs that people might be more familiar with? That can be useful to gain more users. But it doesn't require an Emacs "clone", just an Emacs package with the settings you want. This approach is actually pretty popular: many people use CUA mode, Evil or even a distribution like Doom or Spacemacs. There's no need to change Emacs just to change a few defaults.
There are also package that address the "modern UI conventions" part of your complaint too to some extent, and again, distributions like Doom and Spacemacs include some of these packages. (Personally I only care if UI is practical and efficient, not if it is modern, but I do understand that some people like modern UIs for their own sake.)
It is not that easy, but the effort you invest in learning emacs will pay off eventually.
Emacs taught me something about myself that no other editor/IDE done before. It helped me to discover my hidden predilection. I realized that I am a tinkerer. You may say: "Aren't we all? We make software because we are tinkerers..." But there are two kinds of developers: non-conformist tinkerers and consumer-tinkerers.
People who end up using Emacs are those who would choose Gentoo or Arch, first of all, because "fuck Windows" and "Ubuntu is lame", and then because they can do some crazy stuff like hijacking display brightness beyond default limits (because one time they had to stare at it, sitting on a beach). Sometimes they hook up their garage doors to a DB, so they can collect data and analyze it later. Or they build their own mechanical keyboards. Etc.
Emacs taught me to abhor repetition and mundane tasks. It taught me that anything can be automated. Even Hell and Chaos can be automated. In that case, you simply end up having an automated hell and chaos. There are so many tiny examples, like whenever I'm writing something let's say in Python, and I would like to search for a code snippet on GitHub, I would simply select a piece of code in my editor and search for it - Emacs would navigate to GitHub, pass the string and even set the language to Python. Or whenever I need to create a new branch, I don't need to think about the name, I can use the ticket number and Emacs would request the issue tracker and create a branch name based on ticket's title. Or I can create a Gist (public or private) by pressing a couple of keys. And many, many more.
I can watch anyone using their favorite IDE and whenever they do something so trivial, something they've been doing for a long time, and very often I'd think - "Oh, I know, more efficient way of doing the same thing" or "Ah, I've been doing it the same way for years, maybe it's time to improve it. I just realized that this is not efficient enough." But it's not just about efficiency - when you add a tiny bit of automation to your task, it becomes so much less frustrating.
Of course, it is possible to have the same mindset and never get into Emacs. However, Emacs offers hundreds of tiny pieces to satisfy your needs. People say: "Emacs takes a long time to learn", but in reality - it would take you longer to become a true power-tinkerer using any other ecosystem of tools.
But it is also totally okay not to be a power-tinkerer. I know many developers who don't use any fancy ways of doing things, but they are still quite impressively, very productive.