Big things to expect from Emacs 25
endlessparentheses.com
endlessparentheses.com
I always hear that argument and my own experience makes me strongly disagree.
So, let's make an hypothetical example: In your own comment I need to select the text "would be font rendering". Using the mouse it took me all of one second to select it, and send it to the clipboard. May be a bit less, because I used to play Starcraft and I know my way around with a mouse.
I can look at some point in the screen, and have the mouse there in less time it would take me to count the number of words from my current cursor to the desired position.
Now it's your turn. Tell me how I can use the keyboard for exactly the same task and be faster.
Disclaimer: this is a real mouse and not the thing that laptops use. I can imagine a touchpad being slower.
/fo<RET>vweobby
/fo <RET> I use search to get me close to where I want to be
v I enter visual mode, I want to see what I'm selecting
we I select the words 'font rendering'
o I realize I want to extend my selection to the left
bb select 'would be to the left'
y yank the selected text
I didn't need to count anything and the in-progress selection was visible the whole time allowing me to make adjustments to it.If you don't know all the Vim motion keys yet and don't like counting then you could also do it like this that requires very minimal Vim knowledge:
/fo<RET><C-left><C-left>v<C-right><C-right><C-right><C-right><left>y
How would you extend the selection to the left with the mouse without loosing the already existing selection?But.. how great can it be?
Both vim and emacs (and the terminals they run in) can use the fonts that your operating system has available on them. So what's the problem? And how is that inferior to what you get in Sublime Text 3?
Genuinely curious.
Second, while a nice look is great and all, I'm more interested in sheer power, not eye candy. I guess I'm more of a function over form guy, and both vim and emacs could look a lot worse than they do now and I'd still prefer them over virtually any other text editor out there.
If there's something that other text editors can do that makes them more powerful than vim or emacs, I'd love to hear about it. That's happened in the past. Sometimes there's been some feature that they don't have. And usually, not much later, vim and emacs both clone that feature.. absorb and expand, and move on.
[1] - http://www.sublimetext.com/3dev (search for Skia)
Saying that "I can clearly see the difference" and calling it a "nice modern UI rendering/feel" is too vague to be useful for improving emacs or vim in any concrete direction.
Also, both Vim and Emacs feel really chunky and numb when showing completions and switching buffers. They take many hundreds of milliseconds to respond to keypresses, while Sublime responds close enough to instantly for me to not notice. It makes a big difference for something that's done hundreds of times per day.
(That said, I'm still using MacVim as my primary editor. The botched ST2->ST3 transition demonstrated above all else the danger of proprietary lock-in...)
It would help if you would send a comparison of screenshots to bug-gnu-emacs@gnu.org.
I'm sure Emacs has modules for whatever or I could build it, but why waste the time. I'd rather pay someone to provide a solution that saves me time. I still keep emacs open for macros. Emacs is great for defining a keyboard macro and repeating it's 1000 times.
Again, it would be nice if people offered specifics when they described something another editor could do that emacs or vim allegedly couldn't. How exactly do you navigate a buffer in Sublime that's allegedly "much quicker"? Can you give an example (including exactly which keys you press and exactly what it does in response)? Or can you at least show a video demonstrating this navigation?
As for multiple cursors, both vim and emacs have had them for years.[1][2][3][4][5]
[1] - https://github.com/terryma/vim-multiple-cursors
[2] - https://www.youtube.com/watch?v=Umb59mMvCxA
[3] - https://www.youtube.com/watch?v=NYzGBnsJ-eg
What's the fuzzy match in Emacs? C-x b?
Why don't multiple cursors ship with Emacs? I'll give it a try.
But neither emacs or vim are limited to buffer selection using this relatively primitive method (which I do like and use myself). You can select buffers using an almost overwhelming number of methods and plugins.
You can filter, use regular expressions, use timing, use fuzzy matching, by buffer contents, color buffers in buffer lists using various criteria, etc. Here are some options for emacs: [5][6]
Both vim and emacs can bind pretty much anything to any key, so you can use Cmd-t for any of those (or a function key, if you preferred something that requires only a single keypress) or virtually any other keystroke.
[1] - http://www.emacswiki.org/emacs/Helm
[2] - https://github.com/emacs-helm/helm
[3] - http://www.emacswiki.org/emacs/BufferSelection
[4] - http://www.vim.org/scripts/script.php?script_id=521
[5] - http://www.emacswiki.org/emacs/SwitchingBuffers
[6] - http://www.emacswiki.org/emacs/CategoryBufferSwitching
I use emacs because it functions the same on Windows, Linux, OS X and Solaris, all the platforms I use across work and home. I use it in the terminal rather than the GUI, because then it functions the same whether over ssh or locally - and no, TRAMP is not quite good enough. And finally, I use emacs because I've had it with learning a different IDE every couple of years. At this point, I want to invest my muscle memory and macro library in something with some longevity. I want something where getting my settings and modules all installed is no more effort than a git clone.
If I could pay someone for something that did all this for me, I would, but the solution would look a lot like emacs: highly scriptable, with a consistent terminal interface across all 4 platforms I use. Ideally it would use a much stronger, faster version of Lisp, although its dynamic scope lookup is actually convenient for layering new behaviour on top of existing code.
(On switching buffers, I use helm + projectile, which does incremental filtering search over file names. For navigating projects, I find helm-git-grep is often more useful than trying to remember a file name - this is an incremental regex search across the whole project, using git grep. No other IDE I use is quite as quick to switch buffers as my emacs config.)
Since evil-mode is a vim-emulation mode for emacs, the above is possible in vim as well.
C-( do-searching-ESC-deleting-etc C-)
There's a new Emacs StackExchange: http://emacs.stackexchange.com
Maybe it'll become enough of a database that it'll be much easier to figure out how to add the "missing" features in Emacs. Currently 720 questions. Let's see how often it's used.
I once programmed Emacs to convert an entire component of Windows Phone from Hungarian notation to something saner.
If I save a file on a remote machine (sshfs mounted), it stalls the entire interface. I only use emacs, so I don't know if "modern" text editors are better at this, but I certainly expect them to be :)
Emacs and Chromium are the applications that I spend most of my time at the computer in, and both of those go through the same font-rendering system (Infinality patched freetype) and look very nice. I also use standalone Emacs frames and almost never run it from a terminal.
Edit: I installed Sublime and took a comparison screenshot with the same font, however slightly different font weight and theme: http://i.imgur.com/UqwM0j2.png
The theme is a modified version of Zukiwi-mac that has the new Yosemite buttons [1].
[1] - https://github.com/gmcabrita/dotfiles/tree/master/.themes/Zu...
What specific improvements would you like to see in Emacs text rendering? What is Skia doing that these very common system text rendering interfaces are not?
I don't expect emacs (the community really) to all of a sudden provide awesome packages for that type of development, but it saddens me that I get more locked in to these other ides that I don't view as generally superior.
EDIT: If this works as advertised here [1] then I am all in!
It's a tradeoff; Eclipse has a lot of understanding of the different languages, which seems to me is not really worthwhile to rebuild in Elisp if you can just reuse it this way.
[1] - http://common-lisp.net/project/slime/
Then again, I don't care much for autocompletion. I started on a IntelliJ Emacs integration a few months ago: the idea was to run Rhino in an IntelliJ plugin and have IntelliJ and Emacs talk to each other using JavaScript. I got as far as getting completion working, but decided I didn't need it. If there's a real need, maybe I can dust off this "bad-idea mode".
"Dynamically loading libraries is a big deal, and it's closer than ever."
Sigh. Dynamically loaded C extensions were working long ago <https://lists.gnu.org/archive/html/gnu-emacs-sources/2002-04.... It wasn't even a "big" thing -- most of the change was in the build system.rms wouldn't let them in because he (via Moglen?) thought they would undermine the copyleft. That was worrying as a design criterion was to make them (almost?) equivalent at compile time and after loading to things built into the Emacs core normally, so that derived work status should be clear in a court.
Perhaps eventually someone will re-do other things, like replacing the GC.
Unless I am very much mistaken, cmuscheme.el (a.k.a. Inferior Scheme mode) and all the other modes derived from Comint do not ever lock up Emacs.
Like, for instance, there are huge advancements from MSVC 97 to MSVC 2013...
In recent years, since 23.0, it feels as if Emacs has improved a great deal. This is largely due to the introduction of package.el (extension / package management.) To put it in slightly more dramatic terms, it's revolutionized it.
* --daemon with emacsclient was a big improvement in usability (ie. "instant startup" by keeping it running all the time)
* As others have said, there's been a surge in elisp packages lately, thanks to package.el and friends
* Changing color themes and fonts used to be a real hassle, but no more.
* Unicode (and bidi) Just Works now, no magic incantations in ~/.emacs needed any more
* org-mode! Ten years ago, org-mode was just started and not yet a part of Emacs. I think I first installed it as an addon around 2005, but at the time it was quite barebones compared to what it is now … (and of course installing it and keeping it up-to-date was a lot more work than doing the same for any third-party package now).
-----
This question prompted me to look at https://en.wikipedia.org/wiki/GNU_Emacs#Release_history – other things I enjoy from that list include:
* good fullscreen support in X,
* lexical binding (not something you need most of the time, but indispensible when you do need it),
* docview (PROTIP: docview is better than most pdf viewers for copy-pasting text from pdf's),
* nXML (awesome XML editor),
* dbus bindings – can be handy,
* tramp! ohmydog tramp didn't even exist ten years ago!
And people were using c-mode to highlight CSS files … So yes, significant changes noticed :-)
DocView was new to me, and indeed, it does seem to do a good job at rendering PDFs. Now I just need to learn how to work it.
My personal opinion (as someone who uses the mouse a lot with Emacs) is that the most important change was the addition of the ability for Emacs to interface with the user through "window systems" (namely, X, Windows, Mac) which reached non-beta status in 1994.
(I'm ignoring the XEmacs fork since I never used it full-time.)
This allowed using the mouse much like it is used in e.g. TextEdit.app and added many possible key combinations (like Control-space and a "real" Meta key) that were not possible to express using the old terminal-based user interface.
Other important changes: high-quality ports to Mac OS X's window system in the early 2000s; the addition -- finally on 30 Jul 2009 -- of non-beta support for anti-aliased text when Emacs interfaces through the X windowing system. (Anti-aliased text was supported on OS X and on Windows much earlier than that -- probably as soon as the ports to their graphical interfaces became available.)
With the release of Emacs 24 a few years ago, a definite clunkiness around non-ascii character sets finally got sorted out with the result that most users of Emacs no longer have to think about coding systems and such.
About 10 years ago, it became possible to click on a "link" in the buffer that shows the docstring to an Emacs Lisp function to go right to the definition of that function, which was a nice new feature.
package.el excites me not at all.
And I'm very skeptical that the addition of threads to Emacs will improve it. I think it will prove an unnecessary complication.
To be fair, I've customized my .emacs to be just how I like it, and it usually "just works" for me, so I don't change it much any more. It's entirely possible there are a ton of great new features that I just haven't bothered to look for yet.
Also, when I make changes I don't check to see when the feature was added, so it's possible I'm using new features, and I've just assumed they've been there forever and I just hadn't discovered them until recently :-)
I think that with either emacs or vim, once you have got a useful setup you tend to stick to it, so discovering new features is uncommon (and both apps don't make feature discovery easy in the first place.)
* lexical scoping and fully correct lexical closures
* cl-lib integrated into core
* a package manager
* Common-Lisp-style generic places (i.e., setf support)
* A much better advice system (add-function and advice-add)
* A very good testing framework, ERT, and a test suite that uses it
Emacs is a much nicer development environment than it was ten years ago.
Personally I hope that Ergo Emacs can be merged into the main Emacs branch, as an alternative keybinding option (not a mode). Some might say, why not just use Ergo Emacs? The way I see it, it's too much work for a small group of developers to create new key bindings for all Emacs packages. By moving it into mainline (as an option), package developers know the option is available by default and can choose whether they want to support it.
Have you tried visiting the file with M-x hexl-find-file?
M-: (hexl-find-file (concat invocation-directory invocation-name))
It's no big deal, but if it is not the speed of scrolling, then I do not understand what it is about Emacs that discourages you from using it on large files without line-breaks.