aboutsummaryrefslogtreecommitdiffstats
path: root/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'emacs')
-rw-r--r--emacs/.config/emacs/init.org53
-rw-r--r--emacs/.config/shepherd/init.d/emacs.scm.org (renamed from emacs/.config/shepherd/init.d/emacs.org)0
2 files changed, 53 insertions, 0 deletions
diff --git a/emacs/.config/emacs/init.org b/emacs/.config/emacs/init.org
new file mode 100644
index 0000000..ff7186d
--- /dev/null
+++ b/emacs/.config/emacs/init.org
@@ -0,0 +1,53 @@
+#+TITLE: Emacs Configuration
+
+First, lexical binding must be enabled. This is better for performance, but also makes variable binding behave more as expected, and allows the creation of closures.
+
+#+begin_src emacs-lisp :padline no
+ ;; -*- lexical-binding: t; -*-
+#+end_src
+
+#+begin_src emacs-lisp
+ (require 'oni-core)
+ (require 'oni-gui)
+#+end_src
+
+Store all auto-save files in =$XDG_DATA_HOME/emacs/auto-save-list= to prevent them from clogging up =$XDG_CONFIG_HOME/emacs/=. The XDG specification says that if =XDG_DATA_HOME= hasn't been specified a default of =~/.local/share= should be used.
+
+#+begin_src emacs-lisp
+ (add-to-list
+ 'auto-save-file-name-transforms
+ `(,(rx (zero-or-more any))
+ ,(concat (or (getenv "XDG_DATA_HOME")
+ (expand-file-name "~/.local/share"))
+ "/emacs/auto-save-list")
+ t)
+ t)
+#+end_src
+
+Use =hunspell= instead of the default =aspell=. Hunspell is used by LibreOffice and other programs too. So far (at least through Emacs) it doesn't recognize the =’= as an apostrophe and I have to use ='= in org-mode if I want spell checking to accept word contractions in English.
+
+#+begin_src emacs-lisp
+ (eval-when-compile (require 'ispell))
+ (with-eval-after-load 'ispell
+ (setq ispell-program-name "hunspell"
+ ispell-really-hunspell t))
+#+end_src
+
+Electric quote uses pretty quoting characters =’=, =‘=, =”=, and =“= instead of ='= and ="=, but when I'm in the middle of a word I don't want to use =’= (right single quotation mark), but ='= (apostrophe), which provides better results with spellchecking. So here is a function that checks whether the character before the previous is a word character.
+
+#+begin_src emacs-lisp
+ (defun oni-in-word-p ()
+ "Check whether the character just typed was part of a word."
+ (save-excursion
+ (backward-char)
+ (looking-back (rx word) (1- (point)))))
+#+end_src
+
+Now that I can check whether or not I'm typing a word, I can tell =electric-quote-mode= not to use =’= in that case.
+
+#+begin_src emacs-lisp
+ (with-eval-after-load 'electric
+ (add-hook 'electric-quote-inhibit-functions #'oni-in-word-p))
+#+end_src
+
+So now that that's settled, I should be writing ='= in words like “shouldn't'' and =’= otherwise. And spellchecking should work just fine.
diff --git a/emacs/.config/shepherd/init.d/emacs.org b/emacs/.config/shepherd/init.d/emacs.scm.org
index 11bef69..11bef69 100644
--- a/emacs/.config/shepherd/init.d/emacs.org
+++ b/emacs/.config/shepherd/init.d/emacs.scm.org