This post is a wonderful cookbook from which to pull.
Tag: Lisp
Build the configuration you need
The Emacs configuration for normal operations on my system has loads of useful and powerful packages loaded. Sometimes they interfere with the normal operation of org-html-export-to-*, though. The simplest way to address those issues is to generate two confirmation files: one for full-blown Emacs use and another just for doing exports. With literate programming in org-mode it is totally simple to do. It looks like this:
<<cask-block>> <<diagramming-decision>> <<modes-application-org-mode-decision>>
Ease of use in Cask 0.6
Cask is the best way to manage your Emacs packages and MELPA is the best place to find them. Because not all packages are set up to be run specifically with the packaging in mind, a lot of feature are still loaded manually (additionally, I am to be blamed for setting them up incorrectly and needing to do something manually in the first place). The convenience with the approach below is never having to update directory paths with each new release of your favorite package on MELPA that may so easily be installed with a cask update. Cask is still under active development, though, so this code may break eventually (my previous approach for example broke as of the 0.6 release).
Writing Books with Org Mode
Lisp in Small Pieces
This book is another classic that must be imbibed.
org-mode Observations 2014-03-18
org-indent-mode immediately struck me as perfect, but my personal preference
is to limit text width something around 80 columns. Making
org-hide-leading-stars
true is the perfect balance.
orgmk seems to simplify org-mode exporting.
org2blog/wp looks very interesting, but manually posting is easy enough for now.
Some users visualize source block delimeters differently. Those visualizations
might be nice to add to pretty-mode.
Andreas posted two ways in babel to store a variable. The example is just nice
to have when you are getting into babel.
There are a few ways to continue code listings in beamer, but this one seems
most simple.
May as well enable markdown export in addition to beamer.
org-enforce-todo-dependencies disallows tree completion flags when incomplete
children exist.
org-plot supports plotting.
The current Clojure namespace is maintained between source blocks now in babel.
CDLaTeX seems like a nice idea to use in org-mode.
org-writers-room looks like a great idea; asked author to post a screenshot.
org-export-exclude-tags allows you to block export of specified sub-trees.
Rainer submitted a patch to prevent R from stomping on session variables.
How to Fix a Little Eshell Issue
Wanting to set up a pleasant shell environment in Emacs, I invested in getting
Eshell happy. Everything went well but the fact that directory name
completion doesn’t work. The error message appeared:
Invalid variable reference
Lately I’ve been learning more about how to develop (or re-learning depending upon
how you look at it) so I set up the debugger to run when the error occurred:
(toggle-debug-on-error)
to receive:
Debugger entered--Lisp error: (error "Invalid variable reference") signal(error ("Invalid variable reference")) error("Invalid variable reference") eshell-parse-variable-ref() eshell-parse-variable() eshell-interpolate-variable() run-hook-with-args-until-success(eshell-interpolate-variable) byte-code("m\204-\303\304!\206\305\306f!\306u\210 \204\202)\n\204$ C\307 C\244\210)\202\306\207" [result eshell-current-argument eshell-arg-listified run-hook-with-args-until-success eshell-parse-argument-hook char-to-string nil t] 2) eshell-parse-argument() byte-code("m?\205$`\303 `U\203\304\305d{\"\210 \203 \n C\244\210*\202\207" [here arg args eshell-parse-argument error "Failed to parse argument '%s'"] 4) eshell-parse-arguments(29 #<marker at 43 in *eshell*>) byte-code("\303\304 \"\207" [begin end args nil eshell-parse-arguments] 4) eshell-complete-parse-arguments() pcomplete-parse-arguments(nil) #[0 "\306!\2053 \nU\203 \207\307\f !\206 \310 T\311 \nV\203.\312\313!\210\314\315\310\"\210 \210\262\207" [pcomplete-expand-before-complete pcomplete-index pcomplete-last pcomplete-command-completion-function pcomplete-command-name-function pcomplete-default-completion-function pcomplete-parse-arguments pcomplete-find-completion-function nil pcomplete-arg message "No completions" throw pcompleted pcomplete-stub] 5 "\n\n(fn)"]() funcall(#[0 "\306!\2053 \nU\203 \207\307\f !\206 \310 T\311 \nV\203.\312\313!\210\314\315\310\"\210 \210\262\207" [pcomplete-expand-before-complete pcomplete-index pcomplete-last pcomplete-command-completion-function pcomplete-command-name-function pcomplete-default-completion-function pcomplete-parse-arguments pcomplete-find-completion-function nil pcomplete-arg message "No completions" throw pcompleted pcomplete-stub] 5 "\n\n(fn)"]) pcomplete-completions() #[0 "\306\211\306\211\306\211\f\f \307 \310\"\211\2056\211@\311=?\2056\211A\2056\312A@\313>$.\207" [pcomplete-stub pcomplete-seen pcomplete-norm-func pcomplete-args pcomplete-last pcomplete-index nil pcomplete-completions pcomplete-do-complete listed pcomplete-insert-entry (sole shortest) pcomplete-autolist pcomplete-suffix-list pcomplete-last-completion-raw] 8 "\n\n(fn)"]() funcall(#[0 "\306\211\306\211\306\211\f\f \307 \310\"\211\2056\211@\311=?\2056\211A\2056\312A@\313>$.\207" [pcomplete-stub pcomplete-seen pcomplete-norm-func pcomplete-args pcomplete-last pcomplete-index nil pcomplete-completions pcomplete-do-complete listed pcomplete-insert-entry (sole shortest) pcomplete-autolist pcomplete-suffix-list pcomplete-last-completion-raw] 8 "\n\n(fn)"]) pcomplete(1) call-interactively(pcomplete) byte-code("\203\301\302!\207\302 \207" [interactively call-interactively pcomplete] 2) eshell-pcomplete(1) call-interactively(eshell-pcomplete nil nil)
This stacktrace is simpler because I unloaded yasnippet. This will be a good
project for me to learn more about this environment because right now I’m
not sure how to address an issue like this beyond the standard, universal issue addressing techniques.
Creation and conservation of computer files (C3F)
Wanting to learn literate programming in org-mode I figured that my Emacs configuration would be the simplest place to start. In that regard I was right, it just took a lot more work then I had expected, and that is OK. It was a non-trivial effort and I learned a lot. In my mind, the door is now wide open to utilize literate programming; the org-mode team has truly unleashed an amazing gift to the world and it may take the world some time to really understand and appreciate it.
My configs and document follow; the first one, C3F.html, is the human-readable document:
C3F
C3F.org
Cask
org-mode Observations 2014-02-28
You can also just call org-insert-link with a “C-u” prefix. That will
give you the regular find-file interface, and then insert a link to
whatever file you find. Very useful!
— Eric Abrahamsen
org-mode Observations 2014-02-25
org-download lets you drag and drop images in org-mode.
org-drill helps you write flash-cards.
org-id-links are more flexible than simple ones.