Hacker News new | past | comments | ask | show | jobs | submit login
GNU Emacs 24.1 released (lists.gnu.org)
325 points by alexott on June 10, 2012 | hide | past | favorite | 73 comments



New features:

- New packaging system and interface (M-x list-packages) for downloading and installing extensions. A default package archive is hosted by GNU and maintained by the Emacs developers.

- Support for displaying and editing bidirectional text, including right-to-left scripts such as Arabic and Hebrew.

- Support for lexical scoping in Emacs Lisp.

- Improvements to the Custom Themes system (M-x customize-themes).

- Unified and improved completion system in many modes and packages.

- Support for GnuTLS (for built-in TLS/SSL encryption), GTK+ 3, ImageMagick, SELinux, and Libxml2.

This looks great. :)



You can also find out about the important changes from:

  C-h r m antinews RET
This provides a changelog in the opposite direction, which is entertaining:

  For those users who live backwards in time, here is information about
  downgrading to Emacs version 23.4.  We hope you will enjoy the greater
  simplicity that results from the absence of many Emacs 24.1 features.
-----

It can be found online here:

http://www.gnu.org/software/emacs/manual/html_node/emacs/Ant...


Woah, emacs lisp now has lexical scoping


Yes, this is pretty radical. More info from the manual:

http://www.gnu.org/software/emacs/manual/html_node/elisp/Usi...

from http://www.gnu.org/software/emacs/manual/html_node/elisp/Lex... -

Such code is also much more friendly to concurrency, which we want to add to Emacs in the near future.

Exciting times ahead ...


Indeed, will be nice when something blocking in one window doesn't lock up the whole emacs process.


YES! E.g. try running emacs on $host and run bbdb; go to some other machine and ssh ~/.bbdb $host:~/.bbdb; then ssh $host emacsclient. Now it's unresponsive until you walk over on your feet to $host and answer the revert-or-not question :(


Yes, ohhh, yes, I want that!


It's opt-in, otherwise most packages would break.

To enable it per-file use a file-local variable:

  ;;; -*- lexical-binding: t -*-


How ironic. Wouldn't it make much sense to enable it per lexical scope?

Or as Perl did it (18 years ago) with a new keyword, so that you can use both dynamic and lexical variables in the same file? Best of both worlds.


You can use both in the same file; you just need to declare the dynamic ones using defvar, etc. If you turn lexical-binding on blindly, the compiler will usually tell you which variables you need to mark as dynamic.


(eval form t) enables lexical scoping for form. http://yoo2080.wordpress.com/2011/12/31/lexical-scoping-and-... is highly recommended reading btw.


It has to be this way to remain backward-compatible. Similar to the issues Perl is going through with things like enabling strict by default (you have to request at least a certain version, I think 5.12), and distinguishing a Perl 6 file from Perl 5 one.


Well, there has been lexical-let in the cl package for quite a while.


This means that I can finally try out Emacs Prelude [1]. Fantastic!

I've been wanting to check it out for a while, but I haven't been brave enough to run a non-stable release of GNU Emacs.

http://batsov.com/prelude/


What functionality does prelude provide? Unless I'm missing something, the website suggests that you can find out by "reading the source."

I had a similar experience once with the emacs starter kit [1]. Though it's a noble effort and probably does have a ton of great features, there are some problems: you pretty much get all or nothing (ESK split it out into a "core" and "per-language" set of libraries but still, there's a lot of stuff) and it's hard to tell which things are emacs builtin and what is customizable. If you disagree with a customization you're SOL; I knew enough about emacs to know that some things had been customized, and I didn't like them, but it was nigh impossible to find out where they were customized and how to turn them off.

It reminds me of the libraries vs frameworks discussion [2]. Emacs works well with libraries (with little elisp functions counting as "mini-libraries"), and the ESK/prelude seem like frameworks.

I'm not trying to pick on these toolkits in particular. They are probably a good way to start out with emacs--I know that the ESK provides a bunch of features to make it more "friendly" out of the box for someone who is coming from something like TextMate.

Most "old-school" emacs people I know have their own .emacs that have accumulated over years and years of trying to solve specific problems or customize that one thing that's annoyed the crap out of them for a while. My .emacs is not pages and pages, but it does have some good stuff in it.

What I'd love to see (and maybe I'm inviting myself to do this) would be a tool (maybe ELPA is this tool, though It's hard to know) which allows you to search for, browse, and install elisp snippets to help you out. ELPA is good for bigger libraries (i.e. major modes) but not for "how do I create an unfill-paragraph function?"

[1] https://github.com/technomancy/emacs-starter-kit [2] http://news.ycombinator.com/item?id=2762280


Author of the Starter Kit here.

For what it's worth, I've come around to this viewpoint. I rewrote ESK for version 2, and the emphasis was on packaging as much functionality in independent packages as possible. So as of v2, the Starter Kit is mostly just about providing a default set of packages and turning on a few flags that it's just crazy to leave off (like ido). But this way more of the functionality is available to everyone, not just users of ESK.

Anyway, it certainly needs more documentation, but these days I recommend the Starter Kit more as a source of inspiration than something people should just use outright, at least if they're not in a hurry.


Thank you so much for ESK! It's really helped me get started in emacs. Also, could you think about adding undo-tree as a default for ESK? I really feel like that would be a worthy addition.


Glad you like it. I think rather than further development on the Starter Kit, effort would be better spent towards coming up with a good overview of the ecosystem, documenting available packages and how they work together.


And pushing improvements (like saner defaults, and documentation for some of the under-documented built-in packages) upstream to Emacs itself.

For those reasonably comfortable with Emacs, I think you should build it from source, and get into the habit of fixing tiny documentation problems as soon as you come across them. Mind you, I have submitted a couple such patches to the ido built-in help and they have languished un-noticed for 2 months.

P.S. Another thank-you here for the starter kit -- I no longer use it, but I did for a year or so and it did teach me several features I wouldn't have known about otherwise.


Pushing upstream is absolutely the best way to get things more widely used, but unfortunately changes to the defaults often get strong pushback from long-time users. It's a very politicized process; if improving Emacs itself were easier the Starter Kit never would have existed.


Check out el-get:

"Short Story: el-get allows you to install and manage elisp code for Emacs. It supports lots of differents types of sources and is able to install them, update them and remove them, but more importantly it will init them for you."

https://github.com/dimitri/el-get


I'm one of the el-get devs. I'd say the main advantage of el-get for the gp is that just installing it doesn't modify your emacs config in any way. In contrast to something like the ESK, it is not an opinionated set of defaults to help new users get started. It is literally nothing but a system for installing and initializing elisp code. Many of the recipes provide some initialization code to set up the code being installed, but you can completely replace that code with your own if you don't like it (or you can decide not to use the provided recipes at all and just write all your own).

It's definitely a more hands-on, low-level tool than ESK, designed for those who want the fine-grained control of a manually-built emacs config without all the manual labor of git-cloning (or hg cloning, or downloading and untarring, or cvs checkout-ing) the several dozen elisp repos that your config uses. It definitely matches my use case, which is why I kept submitting so many pull requests that the original author finally just gave me a commit bit :).

Note that I'm not saying that el-get is in any way better than ESK (I've actually contributed to ESK as well even though I don't personally use it, since ESK uses my ido-ubiquitous library). El-get is just designed for a different purpose.


Ugh. The guy maps a bunch of global keybindings, including hippie-expand and ibuffer, loads a low contrast color scheme as default, but still has the temerity to write:

"I firmly believe that the one true way to use Emacs is by using it the way it was intended to be used [...] That's why I've disabled all movement commands with arrows - to prevent you from being tempted to use them."


Yeah, it's batshit insane


Non-stable is a relative term. Emacs daily development snapshots are more stable than the stable releases of most other software.


I can vouch for this, I've been running on daily for the last 2 years and have rarely encountered a game stopping issue.


Same for the Literate Emacs24 Starter Kit (shameless plug by the maintainer). https://github.com/eschulte/emacs24-starter-kit


Wow, great job. Thanks!


There's a slightly annoying regression (to Emacs 22, behavior, I believe) in the Mac version. Some Unicode characters (like —, “, and ”) cause the line to expand in height slightly. Does anyone know of a fix?


If you modify the default font, you also have to change the default "fontset", because merely changing the default font doesn't install it as the font for unicode characters.

I use:

    (set-face-attribute 'default nil :family "Menlo" :height 120)
    (set-fontset-font "fontset-default" 'unicode "Menlo")


Perfect. Thank you so much. Guess I don't know as much about Emacs as I thought. :)


Precompiled binaries for Emacs 24.1 are already available for OS X at http://emacsformacosx.com/ .


You caught that quick! It only finished compiling a few minutes ago... (I generally kick off the release builds manually)


Last I checked your builds didn't had `ns-toggle-fullscreen`. Is that still the case?

EDIT: Looks like emacsforosx does not compile Emacs with support for above command. Will you consider it? I totally understand distributing plain vanilla version though!


No, I don't want to support a bunch of little patches on top of emacs.

But it's frustrating for me, too, because I want the feature as much as anyone else. I've been making do with "(setq ns-auto-hide-menu-bar t)" which is close to the desired behavior, especially when combined with maxframe [1]. It still has the window's title bar, so it's not exactly there.

[1] https://github.com/rmm5t/maxframe.el I use it like this (where super is the command key):

  (defun toggle-frame-maximization ()
    (interactive)
    (if (frame-parameter nil 'mf-maximized) (restore-frame) (maximize-frame)))
  (define-key global-map [(super return)] 'toggle-frame-maximization)


Homebrew includes that patch, and the recipe has been updated for emacs 24.

  brew update  
  # Lion only (or if you don't have xcode?)  
  brew tap homebrew/dupes  
  brew install apple-gcc42  
  # put these in your .bashrc  
  export HOMEBREW_USE_GCC=1  
  export HOMEBREW_VERBOSE=1  
  # /Lion only  
  brew install emacs --cocoa  
  brew linkapps


I'm getting a connection refused for http://emacsformacosx.com/


Yeah, sorry about that. It's back up now.


I had trouble with that release. I haven't tried any others yet (or tried compiling from source). The problem: after loading my init files (https://github.com/jimm/elisp) and loading a file there is something seriously wrong: the file isn't displayed properly (I'm not seeing the top of the file) and the mouse and keyboard don't let me navigate around the file. It so broken I had to re-install 23.4.

Maybe it's something in my init files, but I have not yet had time to figure out what's causing the problems.


I've traced it down to font selection. When I change the font to a larger size (Monaco or Menlo) then the top of the contents of the frame is off the screen, "above" the Mac menu bar. Strangely, Courier New works correctly with larger font sizes.

I tried the suggestion elsewhere on this page about setting font and fontset together, but that didn't fix the problem.


It's really easy to compile your own binary (if you have Xcode or the new separate compiler from Apple). Grab the source, "./configure --with-ns && make install", and Emacs.app appears in the nextstep/ subdirectory of the source tree.


Awesome release! I've been waiting for this for a long time now. It will be in Arch Linux's repositories in a few hours.

The package system is awesome, no more hassle installing plugins and extensions!

Great job GNU, thank you!


Does anyone know if/when it will be available via Ubuntu Software Center or some PPA? I am on Ubuntu 12.04.



Any idea when the precompiled Windows version will be released? Currently there seems to be no build http://ftp.gnu.org/pub/gnu/emacs/windows/


For what it's worth, the Windows binaries are now available: http://ftp.gnu.org/gnu/emacs/windows/emacs-24.1-bin-i386.zip


This might not be appropriate for your situation, but I have found it surprisingly easy to build emacs from git by using MinGW/MSYS. If you need the exact command line, send me email or reply here and I'll post it when I get back to the office on Monday.

The only non-trivial steps I had to take were to track down the "dev" msys packages for jpeg, png and xpm libraries. I do not link my nightly builds against gnutls, just to set expectations [my experience with non-native security stuff on windows leads me to avoid that headache; YMMV].


usually it takes not so much time (2-3 days) to release windows version


Someday there will be a version where the new feature will be an actually useful wiki :p


There is a “next generation, better structured and improved wiki” at http://wikemacs.org/


And it doesn't see control modifiers when used through Lion OSX screen sharing (seems a lot like this bug: http://xquartz.macosforge.org/trac/ticket/180 ).


I've been using the pretests for a while now, and the built in package manager has been an absolute joy to work with.

If I were to begin writing extensions, I'd also probably enjoy the lexical scoping a lot more.


At the end of http://wikemacs.org/wiki/GNU_Emacs_24 page, there are links to posts that describe changes in new version


So does that mean it's officially stable? This is great news.


Yep.

    The current stable release is 24.1.[0]
[0] http://www.gnu.org/software/emacs/


Fantastic, thanks :)


OSX build seems to work really well:

./configure --with-gif=no --with-ns make make install


Note to anyone attempting to build this on OS X: If you're getting strange errors when running make, ensure that you don't have the Mono framework installed as well. If you do, move it out of the way ( from /Library/Frameworks/Mono.framework to some other directory) before you try to install. After the install, move it back.


Ouch, sorry others are having trouble. Mine happened to work- but I don't know a lot about controlling the build config.

And the formatting didn't survive pasting. Should have been: ./configure --with-gif=no --with-ns; make; make install


I built it from the sources in the emacs-24 branch without a problem. For some reason only the tarball sources threw up that config error. Strange.


I'm getting this:

checking host system type... i386-apple-darwin11.3.0 configure: error: Emacs hasn't been ported to `i386-apple-darwin11.3.0' systems. Check `etc/MACHINES' for recognized configuration names.


As a note;

./configure --with-ns; make; make install, then copy to Applications.


So what is your favorite new feature?


Having ELPA built in is really nice. If I'd had a package manager back when I was first learning Emacs, I think I would have resented it a lot less. And even now, having it available without fiddling with anything will be such a nicety.


I'm looking forward to trying ELPA (my .emacs.d is so full of stuff I've not yet gotten around to trying it).

bi-di support is also really nice, I've been copypasting into other programs until now.

Also always nice to get a new org-mode version (though I'm never quite sure whether using org makes me more productive, or whether playing with new org features makes me procrastinate more).

Favourite feature that makes you go O_o : "`nato-region' converts text to NATO phonetic alphabet."


the only time i hate the packaging system [apt] is when a new version of some software is released


It should be in nix shortly: http://nixos.org/nix

Nix and apt are very complementary to each other; apt has all the stable never-breaks stuff, and nix has all the latest new code. And when you pull in something too new that breaks, you can roll it back trivially.


Great news!


wait for long time, really great!


oh frabjous day!


Callooh! Callay!


any decent mode for java yet? :-\




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

Search: