about summary refs log tree commit diff
path: root/emacs/.emacs.d/wpc/kaomoji.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.emacs.d/wpc/kaomoji.el')
-rw-r--r--emacs/.emacs.d/wpc/kaomoji.el45
1 files changed, 45 insertions, 0 deletions
diff --git a/emacs/.emacs.d/wpc/kaomoji.el b/emacs/.emacs.d/wpc/kaomoji.el
new file mode 100644
index 000000000000..d6d509c14667
--- /dev/null
+++ b/emacs/.emacs.d/wpc/kaomoji.el
@@ -0,0 +1,45 @@
+;;; kaomoji.el --- Supporting kaomoji usage -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Simple keyboards like this make life a bit better.
+
+;;; Code:
+
+(defvar kaomoji/install-kbds?
+  nil
+  "Set to t if you'd like the keybindings to be installed.")
+
+(defconst kaomoji/symbols '(("Joy" . "(⌒‿⌒)")
+                    ("Love" . "(ღ˘⌣˘ღ)")
+                    ("Sympathy" . "ヽ(~_~(・_・ )ゝ")
+                    ("Dissatisfaction" . "(>﹏<)")
+                    ("Anger" . "ヽ(‵﹏´)ノ")
+                    ("Hugging" . "(づ ̄ ³ ̄)づ")
+                    ("Hiding" . "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴")
+                    ("Sleeping" . "(-_-) zzZ")
+                    ("Embarrassed" . "(×﹏×)")
+                    ("Shrug" . "ヽ(ー_ー )ノ"))
+  "Alist of human-readable emotions to the kaomoji.")
+
+;; TODO: Consider supporting a hydra for these.
+
+(defun kaomoji/select ()
+  "Interactively select a kaomoji and copy it to the clipboard."
+  (interactive)
+  (ivy-read
+   "Select a kaomoji: "
+   kaomoji/symbols
+   :action (lambda (entry)
+             (kill-new (cdr entry))
+             (alert "Copied to clipboard!"))))
+
+;; TODO: Define Hydra for all custom keyboards.
+;; TODO: Define a better keybinding in a different keymap.
+(when kaomoji/install-kbds?
+  (general-define-key
+   :keymaps 'global
+   "M-k" #'kaomoji/select))
+
+(provide 'kaomoji)
+;;; kaomoji.el ends here