arclanguage/anarki: Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.
CodyReichert/awesome-cl: A curated list of awesome Common Lisp frameworks, libraries and other shiny stuff.
Fuco1/smartparens: Minor mode for Emacs that deals with parens pairs and tries to be smart about it.
Ansi Common LISP [chapter 4]
autocomplete - Does Emacs has word and line completion (like Vim’s insert mode completion)? - Stack Overflow
https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Blang/python#auto-completion-anaconda-dependencies
For convenience a shortcut key called the major mode leader key is set by default on , which saves one precious keystroke.
Elisp is usually compiled into a byte-code saved to .elc files, and that byte-code loads and runs faster than uncompiled Elisp.
People do not write byte-code; that job is left to the byte compiler. But we provide a disassembler to satisfy a cat-like curiosity.
The interpreter is backwards compatible but not forwards compatible (old versions can’t run new byte-code).
The first byte is the opcode and the second and third bytes are either a single operand or a single intermediate value. Some operands are packed into the opcode byte.
As of this writing (Emacs 24.3) there are 142 opcodes, 6 of which have been declared obsolete. Most opcodes refer to commonly used built-in functions for fast access.
Byte-code does not offer the same safety as normal Elisp. Bad byte-code can, and will, cause Emacs to crash.
The quote, by definition, prevents evaluation, and so inhibits byte compilation of the lambda expression. It’s vital that the byte compiler does not try to guess the programmer’s intent and compile the expression anyway, since that would interfere with lists that just so happen to look like lambda expressions — i.e. any list containing the lambda symbol.
it’s a special vector object that contains byte-code, and other metadata, for evaluation by Emacs’ virtual stack machine. Elisp is one of very few languages with readable function objects, and this feature is core to its ahead-of-time byte compilation.
Byte-compiled functions are significantly faster. That’s the main purpose for byte compilation after all.
The compiler performs static checks, producing warnings and errors ahead of time. This lets you spot certain classes of problems before they occur. The static analysis is even better under lexical scope due to its tighter semantics.
Under lexical scope, byte-compiled closures may use less memory. More specifically, they won’t accidentally keep objects alive longer than necessary. I’ve never seen a name for this implementation issue, but I call it overcapturing.
While it’s common for personal configurations to skip byte compilation, Elisp should still generally be written as if it were going to be byte compiled. General rule of thumb: Ensure your lambda expressions are actually evaluated.
SLIME is started with the Emacs command M-x slime. This uses the inferior-lisp package to start a Lisp process, loads and starts the Lisp-side server (known as “Swank”), and establishes a socket connection between Emacs and Lisp. Finally a REPL buffer is created where you can enter Lisp expressions for evaluation.
One of the most important modifications you should make to your environment is rebinding your caps lock key to control. You’re going to use the control key a lotand to avoid the Emacs pinky I suggest you unbind your right control entirely and instead use caps lock.
In emacs, the word “mode” is already taken, so evil refers to vim’s modes as “states” (e.g. “normal state”).
In emacs, commands are functions that can be bound to a key (interactive) or run with M-x (<a-x>). Most commands can also be run from evil’s ex command line with :command-name<cr>.
C-g is bound to keyboard-quit (or an equivalent) by default. You use it, for example, to exit the minibuffer (e.g. if you type M-: which is bound to eval-expression and want to exit). You can replace C-g with <escape> for most cases (see Using Escape to Exit the Minibuffer), but it is still useful to know about it. If emacs freezes from a long-running command or infinite loop, you can use C-g to cancel it.
C-h is a prefix key for getting help. Since emacs has a different help system, :help will not work the same as in vim. If you want to find out about a variable, you can use C-h v (describe-variable). To find out what a key is bound to, you can use C-h k to pop open a help buffer with information about the command. For example, you can find out that C-h k is bound to describe-key by pressing C-h k C-h k. Knowing about C-h k can be useful, for example, if you want to find out what a nested key is bound to. By “nested key”, I mean that you can type d C-h k i w (d<c-h>kiw) to find out that iw here is bound to evil-inner-word.
Go up to next paragraph (whitepace line) { Go down to next paragraph (whitepace line) } Go to previous function [[ Go to next function ]] Go up to outer brace [{ Go down to outer brace ]}
In Emacs, the keys and the terminology differ greatly: killing is cutting; yanking is pasting; and copying is awkwardly known as saving to the kill ring (or just copy, informally.) The reasons, as before, are historical. Most of the keys and terminology stem from IBM’s Common User Access6 (CUA) and Apple. But the CUA was introduced in 1987, many years after Emacs had settled on its own terminology and standards.
Font Locking is the correct term for syntax highlighting in Emacs, and in turn is made up of faces of properties (color, font, text size, and so on) that the font locking engines use to pretty-print the text.
ch shows two dashes (‘–’) if the buffer displayed in the window has the same contents as the corresponding file on the disk; i.e., if the buffer is “unmodified”. If the buffer is modified, it shows two stars (‘**’). For a read-only buffer, it shows ‘%*’ if the buffer is modified, and ‘%%’ otherwise.
there’s a special command called self-insert-command that, when invoked, will insert the last typed key.
The cryptic name deserves an explanation: it’s a lisp term that covers a wide range of commands that operate on balanced expressions.
You can enable it permanently by customizing the option ido-mode: M-x customize-option RET ido-mode RET
You can also improve ’s fuzzy matching by enabling flex matching: M-x customize-option RET ido-enable-flex-matching RET
M-x subword-mode Minor mode that treats CamelCase as distinct words M-x superword-mode Minor mode that treats snake_case as one word
code M-x Customize M-x customize-themes /code
code M-x info C-h i M-x apropos-command /code
[[http://melpa.milkbox.net/][Melpa] (Milkypostman’s Emacs Lisp Package Archive]]
code M-x package-list-packages /code
C-l Clear screen and redisplay all the text, moving the text around the cursor to the center of the screen
C-a and C-e move to the beginning or end of a line, and M-a and M-e move to the beginning or end of a sentence.
M-< (META Less-than), which moves to the beginning of the whole text, and M-> (META Greater-than), which moves to the end of the whole text
The easiest way to specify a numeric argument is to type a digit and/or a minus sign while holding down the META key. For example, M-5 C-n moves down five lines.
code M-x eval-buffer will evaluate the entire buffer you’re in. M-x eval-region evaluates just the region that you have marked. /code
C-q followed by any non-graphic character (even C-g) inserts that character. For instance, C-q DEL inserts a literal ‘DEL’ character.
C-u alone has the special meaning of “four times”: it multiplies the argument for the next command by four. C-u C-u multiplies it by sixteen. Thus, C-u C-u C-f moves forward sixteen characters. Other useful combinations are C-u C-n, C-u C-u C-n (move down a good fraction of a screen), C-u C-u C-o (make “a lot” of blank lines), and C-u C-k (kill four lines).
Press ‘space’ to replace it or ‘n’ to skip it and go to the next one. Press ‘!’ to replace all queries.
SPC a o w a
| Insert asset link |
SPC a o w d
| Open asset directory for current page |
SPC a o w h
| Go to home page |
SPC a o w i
| Insert page link |
SPC a o w j
| Jump to page (if helm enabled) |
SPC a o w n
| Create new page |