I’ve always wanted a structural diff tool, so I built difftastic . This has been the most fascinating, most frustrating, and most challenging program I’ve ever written. How Hard Could It Be? If you write Lisp code for a while, you start to see code like JSON. Everything is basically a list. json-diff example json-diff already exists, and it’s pretty good. I wanted something similar for programming…
Some programming languages languish due to obscurity. They lack breathless blog posts exclaiming how much nicer they are to use. Other languages are too ambitious. They aspire to support so many features that the original implementers struggle to get a first version working. For example, the type system in Fortress required constraint solving which took exponential time . Sometimes a usable…
How big can a unit test be? How small can an integration test be? It’s easy to argue about whether a test is a ‘true’ unit test or not. If we test several classes together, is it still a unit test? If we use a small external API, must we call it an integration test? The problem is that testing is a spectrum , but our terminology only allows discrete levels. Putting A Number On It I propose we…
It’s been a year since the first release of Helpful ! It’s gained a ton of new features, and I’d love to share the highlights with you. Tool Integration Emacs has some excellent built-in debugging tools that I wanted to expose within Helpful. These tools missed the first release, but I’ve now had the chance to build them. From a Helpful buffer, you can now toggle edebug on a function. This allows…
Imagine that you hold Control and type your name into Emacs. Can you describe what will happen? – The ‘Emacs Guru Test’ Emacs shortcuts (known as ‘key bindings’) can seem ridiculous to beginners. Some Emacs users even argue you should change them as soon as you start using Emacs. They are wrong. In this post, I’ll describe the logic behind the Emacs key bindings. Not only will you be closer to…
Time for another Remacs update: lots of contributions, a wide range of features, and even a logo! Contributing Since the last update , we’ve seen contributions from lots of new people. We’ve added @brotzeit and @shanavas786, bringing us to seven wonderful people who can approve your PRs. Speaking of PRs, we’ve merged an amazing 64 pull requests since the last update! If you’re looking for a good…
I’ve just released Helpful , a new way of getting help in Emacs! The *Help* built-in to Emacs is already pretty good. Helpful goes a step further and includes lots of contextual info. Let’s take a look. Have you ever wondered which major modes have a keybinding for a function? Helpful reports keybindings in all keymaps! When you’re hacking on some new code, you might end up with old function…
Suggest.el v0.4 is now out, and it offers some really interesting new ways of making suggestions. Supplying Constants Suppose the user gives us the input '(a b c d) and desired output 'a . We would already suggest car , but that only gets the first element of the list. They may have wanted elt or nth , which get elements at a specific position. We now try adding constants to the user’s inputs,…
Dash.el is a lovely library, and one of the most popular on MELPA. If we can squeeze every last drop of performance out of it, everyone benefits. Let’s take a look at the black art of making elisp faster. Measure First! Chris Wellons has a great optimisation blog post that discusses the performance overhead of creating lambdas with mapcar . If we look at --map , it does indeed create anonymous…
It’s been six months since the last Remacs update, and many new features have landed! Community We now have a Gitter chat room ! Do drop by if you have any questions or wish to discuss Remacs. There’s a low traffic Remacs Subreddit too. We’ve added @jeandudey and @birkenfeld to the GitHub collaborators, bringing us to five fine people who can approve your pull requests. Elisp Features We’re still…