In a recent post to the emacs-devel mailing list, RMS talked straight about the goals of the GNU project:
Remember that the main purpose of the GNU system – including GNU Emacs – is freedom. Technical progress and convenience are secondary goals.
Time for a new release of Flycheck, the modern syntax-checking extension for Emacs:
In two months since the last release, Flycheck got a bunch of new syntax checkers, a brand-new error list, and the ability to override the executables of syntax checkers.
In the current release of Flycheck, the executable used by a syntax checker is hard-coded. The python-pylint syntax checker will always use the first pylint executable in exec-path.
The only way to effectively change the executable was to create symbolic links in a directory in front of exec-path, which is somewhat inconvenient, if you wanted to change the executable frequently, or use a different executable in different buffer.
I have the honour and pleasure to announce a new release of Flycheck, the modern syntax-checking extension for Emacs:
It is three months since the last release, so this release brings quite a lot of changes. For a complete list of all changes, please read the complete list of changes. In this post, I will just go through the most important ones.
At June, 13th Emacs trunk introduced a new macro with-eval-after-load. It behaves like eval-after-load, except that it takes multiple unquoted forms and wraps them into a lambda to enable byte compilation:
(with-eval-after-load 'python (add-hook 'python-mode-hook #'subword-mode) (setq python-check-command "flake8"))
This supersedes much of my last post about byte compilation in eval-after-load. However, the new macro does not load the corresponding features during byte compilation, so I’ll wrap my old stante-after macro around it to avoid bogus warnings, just like in the last post:
(defmacro stante-after (feature &rest forms) (declare (indent 1) (debug t)) `(,(if (or (not byte-compile-current-file) (if (symbolp feature) (require feature nil :no-error) (load feature :no-message :no-error))) 'progn (message "stante-after: cannot find %s" feature) 'with-no-warnings) (with-eval-after-load ',feature ,@forms)))
To ensure compatibility with releases and older snapshot builds, I define with-eval-after-load if it is absent:
(unless (fboundp 'with-eval-after-load) (defmacro with-eval-after-load (file &rest body) `(eval-after-load ,file `(funcall (function ,(lambda () ,@body))))))
This compatibility definition of with-eval-after-load uses the same idea as the old definition of the stante-after macro and simply wraps the body in a lambda form.
In this post we will explore eval-after-load and its relation to byte compilation. We introduce eval-after-load, and point out the lack of byte compilation as serious drawback. Eventually we will present a macro around eval-after-load which compiles eval-after-load forms, and explain its advantages and disadvantages.
If you use a recent build of Emacs trunk, be sure to read the follow up on the new Emacs macro with-eval-after-load.
While uploading the recent 0.9 release of Flycheck, I realized that Flycheck has just had its half year anniversary.
Carton is a little utility to manage Emacs packages. Simply speaking, it is to package.el, what Bundler is to Rubygems.
You can use it to manage the packages in your Emacs configuration, or the development dependencies of packages that you are developing.
Carton works around a Carton file, in which package repositories and packages are specified. The command carton works on this file, and provides commands to install and update the packages in a Carton file.