From c26c659c32ab9d15c0a1141a50c30ca0d41e011f Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Sun, 21 Jul 2019 16:48:11 +0200 Subject: [PATCH] initial commit --- README.org | 32 +++++++++++++++ funcs.el | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++ packages.el | 16 ++++++++ 3 files changed, 158 insertions(+) create mode 100644 README.org create mode 100644 funcs.el create mode 100644 packages.el diff --git a/README.org b/README.org new file mode 100644 index 0000000..c17493c --- /dev/null +++ b/README.org @@ -0,0 +1,32 @@ +#+TITLE: Conlanging layer + +# The maximum height of the logo should be 200 pixels. +[[img/conlanging.png]] + +# TOC links should be GitHub style anchors. +* Table of Contents :TOC_4_gh:noexport: +- [[#description][Description]] + - [[#features][Features:]] +- [[#install][Install]] +- [[#key-bindings][Key bindings]] + +* Description +This layer adds support for conlanging. + +** Features: + - Conversion from translittion to other alphabets + - Open linguistic files + +* Install +To use this configuration layer, add it to your =~/.spacemacs=. You will need to +add =conlanging= to the existing =dotspacemacs-configuration-layers= list in this +file. + +* Key bindings + +| Key Binding | Description | +|---------------+-----------------------------------------------------| +| ~SPC o l m o~ | Open ~matter.org~ file | +| ~SPC o l m r~ | Translate Mattér translitteration into runes | +| ~SPC o l m l~ | Translate Mattér translitteration into native latin | +| ~SPC o l m h~ | Open ~hjepl.org~ file | diff --git a/funcs.el b/funcs.el new file mode 100644 index 0000000..cbbba3c --- /dev/null +++ b/funcs.el @@ -0,0 +1,110 @@ +;;; funcs.el --- Conlanging Layer functions File for Spacemacs +;; +;; Copyright (c) 2019-2020 Lucien Cartier-Tilet +;; +;; Author: Lucien Cartier-Tilet +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(setq latin-to-runes-table '((", *" . "᛬") + ("\\. *" . "᛭") + (" +" . "᛫") + ("ċ" . "ᛇ") ("ch" . "ᛇ") + ("ae" . "ᚫ") ("æ" . "ᚫ") + ("dh" . "ᛋ") ("z" . "ᛋ") ("ð" . "ᛋ") + ("th" . "ᚦ") ("s" . "ᚦ") ("þ" . "ᚦ") + ("w" . "ᚹ") ("ƿ" . "ᚹ") + ("g" . "ᚷ") ("ᵹ" . "ᚷ") + ("ea" . "ᛠ") + ("f" . "ᚠ") + ("u" . "ᚢ") + ("o" . "ᚩ") + ("r" . "ᚱ") + ("c" . "ᚳ") + ("h" . "ᚻ") + ("n" . "ᚾ") + ("i" . "ᛁ") + ("j" . "ᛄ") + ("p" . "ᛈ") + ("v" . "ᛝ") + ("t" . "ᛏ") + ("b" . "ᛒ") + ("e" . "ᛖ") + ("m" . "ᛗ") + ("l" . "ᛚ") + ("d" . "ᛞ") + ("é" . "ᛟ") + ("a" . "ᚪ") + ("y" . "ᚣ"))) +(setq latin-to-native-table '((" +" . " ") + ("ch" . "ċ") + ("ae" . "æ") + ("th" . "þ") ("s" . "þ") + ("dh" . "ð") ("z" . "ð") + ("w" . "ƿ") + ("j" . "i"))) +(setq latin-to-latex-runes '((", *" . ":") + ("\\. *" . "*") + (" +" . ".") + ("ch" . "I") ("ċ" . "I") + ("ae" . "æ") + ("ea" . "\\\\ea") ("ƿ" . "w") + ("dh" . "s") ("z" . "s") ("ð" . "s") + ("th" . "þ") ("s" . "þ") + ("v" . "\\\\ng") + ("é " . "\\\\oe"))) + +(defun conlanging//replace-string-by-char (t-string t-correspondance-table) + "Return a copy of t-string converted with the correspondance table" + (while t-correspondance-table + (let ((cur-from-char (car (car t-correspondance-table))) + (cur-to-char (cdr (car t-correspondance-table)))) + (setq t-string (replace-regexp-in-string cur-from-char + cur-to-char + t-string)) + (setq t-correspondance-table (cdr t-correspondance-table)))) + t-string) + +(defun conlanging//get-boundary () + "Get the boundary of either the selected region, or if there is none the +word the cursor is over" + (interactive) + (let* ((beg (region-beginning)) + (end (region-end)) + (boundary-word (bounds-of-thing-at-point 'word))) + (if (= beg end) + boundary-word + (cons beg end)))) + +(defun conlanging//replace-char-by-table (correspondance-table) + "Replaces selected text’s strings according to the table passed as argument. The +table is a list of pairs, the first element of the pair is a regex to be +searched in the selected text and the second element of the pair the string it +has to be replaced with." + (let* ((cur-boundary (conlanging//get-boundary)) + (beg (car cur-boundary)) + (end (cdr cur-boundary))) + (setq regionp (buffer-substring-no-properties beg end)) + (setq regionp (conlanging//replace-string-by-char regionp + correspondance-table)) + (delete-region beg end) + (goto-char beg) + (insert regionp))) + + +(defun conlanging/matter-to-runes () + "Replaces translitterated Mattér to its runic writing system" + (interactive) + (conlanging//replace-char-by-table latin-to-runes-table)) + +(defun conlanging/matter-to-native-latin () + "Replaces translitterated Mattér to its native latin writing system" + (interactive) + (conlanging//replace-char-by-table latin-to-native-table)) + +(defun conlanging/matter-to-latex-runes () + (interactive) + (conlanging//replace-char-by-table latin-to-latex-runes)) diff --git a/packages.el b/packages.el new file mode 100644 index 0000000..6fd034f --- /dev/null +++ b/packages.el @@ -0,0 +1,16 @@ +;;; packages.el --- conlanging layer packages file for Spacemacs. +;; +;; Copyright (c) 2012-2018 Sylvain Benner & Contributors +;; +;; Author: Lucien Cartier-Tilet +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(defconst conlanging-packages + '()) + + +;;; packages.el ends here