GNU Emacs

I started learning Emacs about 10 years ago in order to learn org-mode, and have fallen in love with the whole way of doing things. GNU Emacs is free and open-source software, and has been used longer than I've been alive. So many other applications I used to rely on have converted to a subscription model instead of a perpetual license, but Emacs will be free forever.

In the GNU/Linux world there are two major text editing programs: the minimalist vi (known in some implementations as elvis) and the maximalist emacs. I use emacs, which might be thought of as a thermonuclear word processor. … It is written in Lisp, which is the only computer language that is beautiful. It is colossal, and yet it only edits straight ASCII text files, which is to say, no fonts, no boldface, no underlining. In other words, the engineer-hours that, in the case of Microsoft Word, were devoted to features like mail merge, and the ability to embed feature-length motion pictures in corporate memoranda, were, in the case of emacs, focused with maniacal intensity on the deceptively simple-seeming problem of editing text. If you are a professional writer – i.e., if someone else is getting paid to worry about how your words are formatted and printed – emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish.

– Neal Stephenson, In the Beginning was the Command Line (1998)

org-mode

The best thing about emacs.

External Links

References

org-roam

Implementation of the personal wiki site Roam Research using GNU Emacs and org-mode.

Home

(About this site)

This site is created using GNU Emacs and org-mode (specifically org-roam). There are also handwritten notes created with Stylus Labs Write.

How to embed handwritten content in your org-roam site

(Transcript > The Setup > GNU Emacs)

  • add function to your config to embed SVG directly in the HTML output of ox-html #+beginsrc emacs-lisp (require 'ox-html) (require 'nxml-mode) (defcustom org+-html-embed-svg nil "Embed SVG images. You can set this variable in Org files with #+HTMLEMBEDSVG: t or #+OPTIONS: html-embed-svg:t" :type 'boolean :group 'org-export-html) (cl-pushnew '(:html-embed-svg "HTMLEMBEDSVG" "html-embed-svg" org+-html-embed-svg) (org-export-backend-options (org-export-get-backend 'html))) (defun org+-html-svg-image-embed (fun source attributes info) "Make embedding of SVG images possible in org HTML export. SVG images are embedded if :html-embed-svg is non-nil in the plist INFO. Otherwise FUN called with SOURCE, ATTRIBUTES, and INFO as arguments. SOURCE is the file name of the SVG file. This is an around advice for `org-html–svg-image' as FUN." (if (member (plist-get info :html-embed-svg) '("yes" "t" t)) (with-temp-buffer (insert-file-contents source) (with-syntax-table nxml-mode-syntax-table (while (and (search-forward "<svg") ;; barfs if a "<svg" is not found (nth 8 (syntax-ppss))))) (delete-region (point-min) (match-beginning 0)) (buffer-string)) (funcall fun source attributes info))) (advice-add 'org-html–svg-image :around #'org+-html-svg-image-embed) #+endsrc - (I found this here.) - Q: Why? - A: Without it, SVGs are wrapped in <object> tags, which breaks some of the functionality like anchor links.