Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As someone semi-new to using emacs, (I knew basic keybindings but never bothered to set up init files, etc.) coming from the IDE world, my biggest complaint was the amount of things I had to do to get vanilla emacs to behave in a civilized way, even using the GUI version. I spent hours scouring peoples emacs files on GitHub to try and find all the things that looked "obvious in retrospect" and settings that looked silly to have turned off by default (e.g. commands that act on regions should act on lines when no region is selected). Then my second biggest complaint was the analysis paralysis of all the plugins. I'm starting to get a stable emacs file, after a few months, but there's still several pieces of functionality I miss from my IDEs that I chunk out time every now and then to research and add. I think having a "if you're coming from IDEs you may want to install X Y Z" page would be helpful, as well as package download rankings so that people can find the popular projects (e.g. helm, use-package). It should also be prominently encouraged to use something like guru-mode where it disables the arrow keys to force you to use ctrl and meta as your movement keys.

Also you can pry Magit from my cold, dead hands.



There are historical reasons for pretty much all default settings. For example, you said:

    "e.g. commands that act on regions should act on lines when no region is selected"
This is because traditionally Emacs never had the concept of "no region selected". The way it Emacs works is that it has two markers: "point" (which is just the cursor) and "mark" which is another position somewhere in the buffer. You can set the position to mark to that of point by pressing C-SPC. In fully traditional mode, the position of mark nor the selection is ever actually displayed in the buffer. If you press C-x C-x, the locations of point and mark are swapped, allowing you to quickly jump to mark and then back again.

The way Emacs was (and is) designed to work is that all region-based commands simply apply their function on the characters between point and mark. Since there isn't any "selection" as such, talking about what commands do without the selection simply does not make sense.

Now, in (what I consider to be) a misguided appeal to users of "windows style" editors, Emacs introduced the concept of "active regions". The underlying concept of having a point and mark is still there, but there is now also a flag indicating whether a region is "active" or not. Commands can look at this flag to perform different operations whether or not this is the case. Since several years, active regions has been enabled by default in Emacs.

The problem when having active regions enabled is that in many cases the user has to reactivate the region before performing some operations, making many region-based operations much more complicated[1] to use.

I seem to have become to the go-to person for Emacs support at my workplace, and I have seen a lot of new users being confused about regions in Emacs. Instead of adding even more Elisp code to try to coerce the application into behaving more like Notepad, I typically recommend them to turn off active regions and learn Emacs the way it was meant to be used. It's certainly different from most other editors, but the behaviour makes a lot more sense once you pick it up.

Footnotes: [1] I used the word "complicated" to mean "needs more keypresses".


> There are historical reasons for pretty much all default settings

Don't you see it as a problem? Anyone new coming has to go through all the history to get an understanding of why things work the way they work. Other software evolve over time and follow practices that result in better UX.


The obvious point is that everyone disagrees about "settings that look silly to have turned off by default".

A lot of modern software uses the 'opinionated' approach. The designers come up with their preferred way of using the software product, and build the user experience around that. This gives great results a lot of the time - you get a consistent and unsurprising experience and you can build a very intuitive experience. To pick a silly example of this, Google Chrome tries very hard to prevent the expansion of extra 'settings'. That way everyone is using the browser in the same way (this has security benefits too).

Emacs goes completely the other way. It gives you the tools to tweak absolutely every aspect of your usage, and while it may have some defaults it isn't really opinionated about which is right. It's been said many times - emacs isn't a text editor, it's a platform on which developers can build their own ideal text editor.

That isn't to say that there aren't some silly things in the defaults, but the emacs developers appear to continue to actively tweak the defaults in the direction of being ever more sensible.


Many times I find that sensible human beings can make sensible defaults. It tends to align with software I love to use. Being opinionated is not a sin if done right. Config hell is not a solution to this problem.


The "problem" is that there are so many different use cases. There are people using emacs on strange systems for decades and their opinions vastly differ from a new user looking for a javascript environment. There are lots of opinions in emacs, and usually when you want to do something to core you find out that there's a wide swath of users who have the opposite opinion to what you were thinking. It's not a bad thing, its just tough to do anything because there are so many packages, users, expectations, ranging from 1-25 years of behavior.


I very carefully didn't say being opinionated it was a sin, in fact I said completely the opposite. That design approach has produced some brilliant stuff (e.g. anything produced by Apple).

My point was that it wasn't the ONLY approach. It appears to be the best one for mass market consumer products, but developers do so many different things in so many different ways that a different approach might be more appropriate. Based on emacs' enduring popularity with a large chunk of users, it would appear that a lot of people agree.


Nothing wrong with using the arrow keys. I can't even remember how long I've been using Emacs and still use the arrow keys.


Three weeks on my work machine I disabled the arrow keys and am now forced to use C-, M-, for navigation, the first week was a bit slow I had to keep stopping and thinking, But now just three weeks later my screen movements are much more efficient and faster. I recommend you give it a try.


That's precisely where I'm at currently -- 2 days into having the arrows disabled. It tells me what key I should have pressed relative to the arrow I pressed, but you take a second to stop and think "is that REALLY what I wanted? could I do this more efficiently?"


I've never found most of the emacs navigation keys to be particularly useful. I do not want to be hitting C-n or C-f more than one time.

I use ace-jump-mode for almost all of my movement. I can go straight to where I want to with a fraction of the effort.


Perhaps it's different for me since I use a keyboard, the Kinesis Advantage, where I don't have to move my hand to find the arrow keys.


I recommend using https://github.com/technomancy/better-defaults as it's just about the only customization I do to Emacs.


I'd suggest Spacemacs offers a better set of defaults than vanilla Emacs. Spacemacs would be a better choice for many newbies IMO.

http://spacemacs.org/


See it's a tough balance. To me, the fun of emacs is getting it exactly as you like and continually optimizing little things. By not having to do SOME painful stuff, you miss out on appreciating the minutia that goes into it. At the same time, many of emacs default settings are very strange so starting with some sanity would be better for newcomers. Maybe some sort of "these are common tweaks that people make right off the bat" page would be the way to go. That way people have to do it themselves (outside of using e.g. spacemacs or prelude) but they have a common place to go to find out about those things. Or at least link to some well known emacs files for developers that code in major languages (a C guy, a Java guy, ...) to give people a place to go to read some elisp and get a feel for what people to do to their editors.


that's actually another nice thing about spacemacs. Install the Java layer and read its documentation, and you'll have a decently curated experience with several plugins set up for you. At least, assuming the maintainer of the Java layer is any good. That definitely addressed choice paralysis for me




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: