key-combo and the Spread of Great Ideas

I love watching great ideas percolate through the file editor ecosystem. My cup of tea is Emacs, so I notice it most there, but it happens all over the place. For example EasyMotion appeared in VIM and jumped to Emacs AceJump and then to IntelliJ (and all its children). If you are an Emacs user then you also see it happen a lot between modes.
For example ESS has this nice feature of evaluating the current line or region and stepping forward. It probably sounds so simple to you that you would question its value. Oh yea, you know LISP, so you get it that simple is powerful. Obviously that idea will spread to every mode for every language, and here is how, eval-in-repl.
Today’s story-unfolding for me has to do with setting up your key bindings in order from least to most disruptive to your hands and arm position. Xah Lee gave me the idea. Here is how I do it. key-chord is what made it possible for me. It was so uplifting to start using it. My personal workflow was so improved and I didn’t think any more about how to make it better or how key-chord might serve other purposes. Then I read about key-combo.
It does what key-chord does. OK, that is great. It does a little more though. It cycles through through symbols, too. Why do I care? In ESS the function `ess-smart-S-assign’ helps you deal with assignments in R. At some point, both R and S used the underscore for assignment. The naming standards in R are OK with using underscores in names as separators, too. So what should happen when you hit underscore in ESS mode? When you hit underscore, it starts cycling through ‘<-' and '_'. It makes total sense and it is totally expected. That is nice. key-combo lets you easily do the same thing wherever you want. I want to cycle through umlaut-accented vowels. I want to cycle through escaped and non-escaped symbols in LaTeX mode (here is one way in org). I want to cycle through through the different equality functions in our favorite languages (=, eq?, eqv?, and equal?) using only the = key. So, I will.
This thing called EMACS is really a vehicle for fun. This thing called ALEC is really a vehicle for the expression of creativity. What a treat to be here to do so collaboratively with all of you fine human beings!

How to Type the OSX "Pretzel" Key in Unicode

Emacs tells you everything that you need to know about it using describe-char:

             position: 927 of 1056 (88%), column: 33
character: ⌘ (displayed as ⌘) (codepoint 8984, #o21430, #x2318)
preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x2318
script: symbol
syntax: . which means: punctuation
category: .:Base, j:Japanese
to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
buffer code: #xE2 #x8C #x98
file code: #xE2 #x8C #x98 (encoded by coding system utf-8-unix)
display: by this font (glyph code)
mac-ct:-*-Lucida Grande-normal-normal-normal-*-17-*-*-*-p-0-iso10646-1 (#x3B4)
Character code properties: customize what to show
name: PLACE OF INTEREST SIGN
old-name: COMMAND KEY
general-category: So (Symbol, Other)
decomposition: (8984) ('⌘')
There are text properties here:
fontified t

	

EWS support for Emacs

I use Exchange at work for calendaring. I also use terminal-mode emacsclient when I’m logged in from another machine. In that scenario I can’t easily open a web browser to use Outlook Web Access. It annoyed me that I couldn’t check my schedule from within a terminal Emacs session. Thus, I did the only sensible thing and implemented full Exchange Web Services API support for Emacs.

Of course you did.

How to Correctly Enable Flycheck in Babel Source Blocks

If you already have Flycheck turned on then you already have it running your babel source block buffers, but, it isn’t working how you expect it. That buffer hasn’t got a file name. Flycheck can’t be smart about helping you out here. Via this post, the solution follows.

(defadvice org-edit-src-code (around set-buffer-file-name activate compile)
  (let ((file-name (buffer-file-name))) ;; (1)
    ad-do-it                            ;; (2)
    (setq buffer-file-name file-name))) ;; (3)

This is one of those things that if you had though about it for a few minutes, you would have turned it on yourself. It reveals how easy it is to return to the mode of “application user” from “application designer”, of Emacs. That is the source of most of my dumb “misses” regarding workflow optimizations in Emacs.

How to Handle and Large Slow Org Files

When some of us open large Org mode files, Emacs becomes nearly unresponsive, and nearly unusable. My stock advice has always been to call #+STARTUP: showeverything or do a binary search more or less to figure out which package is stomping Emacs. In this post, though, Puneeth explains that the issue may go away entirely for some of us.

Hydra, a new Emacs package to fall in love with

A few weeks ago a really nice post appeared. It explained how to use set-transient-map. Is is nice for all the same reasons that all keymaps are nice, and additionally, their transience. The example of managing text size is perfect. Everyone has that in their Emacs config. When we define a goal like “we want to adjust the text size”, we are virtually “in the zone” of performing that task. We just want to hit a couple of keys to make the font bigger or smaller and this approach makes that really easy. That idea, and post, quickly blossomed into a package and many new cool features.

That “zone thinking” is how most modes and features work, whether the authors and the users are conscious of this or not. Hydra makes you very conscious of this. Watch how quickly examples evolved into re-recreating most of what someone needed of ViM. Cool!

The user-interface feature of displaying available commands (while in that “Hydra”) in the mode-line really piques my interest about using Hydras to provide a very “user friendly” suite of features for new users. Granted, after you use the same features a lot your quit using visual helpers, but for new users, this could be really interesting.

This package has all of the earmarks of a game-changer. That is my gut feeling; it will be a major facilitator for expressing all sorts of creative approaches for creative expression in Emacs (or ALEC in my case).

For the last few months I’ve had a thought visit me more than a few times: “What would it take to implement ViM, in Emacs, without taking one peek at evil-mode”. That question was just in the collective conscious I believe. Very, very delightful to see it get answered in this delightful new package, Hydra.

Thank you Oleh!

Easily set column width in org tables

Org tables are great. Most of the time I rely on the column width auto-resizing feature. Perhaps you want to do force a smaller width though for example. Just specify the width, in its own empty row inside of angled parentheses. Default justification is right. Prefix the number with a l or c to do left or center.
Here is the page. Thanks Tory!

     |---+------------------------------|               |---+--------|
     |   |                              |               |   | <6>    |
     | 1 | one                          |               | 1 | one    |
     | 2 | two                          |     ----\     | 2 | two    |
     | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
     | 4 | four                         |               | 4 | four   |
     |---+------------------------------|               |---+--------|

org-table-edit-field (C-c `) lets you easily edit the entire field and the org super key (C-c C-c) saves it.