From ca1ed29bc4b638ed77fd25c11505829d2473d401 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sun, 9 Jul 2023 10:40:47 +1000 Subject: moving wiki.el to a submodule --- emacs/.emacs.d/lisp/my/wiki-faces.el | 108 ------------------------------- emacs/.emacs.d/lisp/my/wiki.el | 122 ----------------------------------- emacs/.emacs.d/lisp/wiki.el | 1 + 3 files changed, 1 insertion(+), 230 deletions(-) delete mode 100644 emacs/.emacs.d/lisp/my/wiki-faces.el delete mode 100644 emacs/.emacs.d/lisp/my/wiki.el create mode 160000 emacs/.emacs.d/lisp/wiki.el (limited to 'emacs/.emacs.d/lisp') diff --git a/emacs/.emacs.d/lisp/my/wiki-faces.el b/emacs/.emacs.d/lisp/my/wiki-faces.el deleted file mode 100644 index 00a346a..0000000 --- a/emacs/.emacs.d/lisp/my/wiki-faces.el +++ /dev/null @@ -1,108 +0,0 @@ -;;; wiki-faces.el -- faces for wiki-mode -*- lexical-binding: t -*- - -;; Copyright (C) 2023 Free Software Foundation. - -;; Author: Yuchen Pei -;; Package-Requires: ((emacs "28.2")) - -;; This file is part of dotted. - -;; dotted is free software: you can redistribute it and/or modify it under -;; the terms of the GNU Affero General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; dotted is distributed in the hope that it will be useful, but WITHOUT -;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General -;; Public License for more details. - -;; You should have received a copy of the GNU Affero General Public -;; License along with dotted. If not, see . - -;;; Commentary: - -;; faces for wiki-mode. - -;;; Code: - -(defgroup wiki-faces nil - "Faces in wiki mode." - :tag "Wiki Faces" - :group 'wiki-appearance) - -(defface wiki-level-1 '((t :inherit outline-1)) - "Face used for level 1 headlines." - :group 'wiki-faces) - -(defvar wiki-level-1 'wiki-level-1 - "Face used for level 1 headlines.") - -(defface wiki-level-2 '((t :inherit outline-2)) - "Face used for level 2 headlines." - :group 'wiki-faces) - -(defvar wiki-level-2 'wiki-level-2 - "Face used for level 2 headlines.") - -(defface wiki-level-3 '((t :inherit outline-3)) - "Face used for level 3 headlines." - :group 'wiki-faces) - -(defvar wiki-level-3 'wiki-level-3 - "Face used for level 3 headlines.") - -(defface wiki-level-4 '((t :inherit outline-4)) - "Face used for level 4 headlines." - :group 'wiki-faces) - -(defvar wiki-level-4 'wiki-level-4 - "Face used for level 4 headlines.") - -(defface wiki-level-5 '((t :inherit outline-5)) - "Face used for level 5 headlines." - :group 'wiki-faces) - -(defvar wiki-level-5 'wiki-level-5 - "Face used for level 5 headlines.") - -(defface wiki-level-6 '((t :inherit outline-6)) - "Face used for level 6 headlines." - :group 'wiki-faces) - -(defvar wiki-level-6 'wiki-level-6 - "Face used for level 6 headlines.") - -(defface wiki-hr-face '((t :inherit font-lock-builtin-face)) - "Wiki hrule face") - -(defvar wiki-hr-face 'wiki-hr-face - "Wiki hrule face") - -(defface wiki-bold-italic '((t :inherit bold-italic)) - "Wiki bold-italic face") - -(defvar wiki-bold-italic 'wiki-bold-italic - "Wiki bold-italic face") - -(defface wiki-bold '((t :inherit bold)) - "Wiki bold face") - -(defvar wiki-bold 'wiki-bold - "Wiki bold face") - -(defface wiki-italic '((t :inherit italic)) - "Wiki italic face") - -(defvar wiki-italic 'wiki-italic "Wiki italic face") - -(defface wiki-pre-face '((t :inherit org-code)) "Wiki pre face") - -(defvar wiki-pre-face 'wiki-pre-face "Wiki pre face") - -(defface wiki-link '((t :inherit org-link)) "Wiki link face") - -(defvar wiki-link 'wiki-link "Wiki link face") - -(provide 'wiki-faces) -;;; wiki-faces.el ends here diff --git a/emacs/.emacs.d/lisp/my/wiki.el b/emacs/.emacs.d/lisp/my/wiki.el deleted file mode 100644 index dce5194..0000000 --- a/emacs/.emacs.d/lisp/my/wiki.el +++ /dev/null @@ -1,122 +0,0 @@ -;;; wiki.el -- A wikitext mode -*- lexical-binding: t -*- - -;; Copyright (C) 2023 Free Software Foundation. - -;; Author: Yuchen Pei -;; Package-Requires: ((emacs "28.2")) - -;; This file is part of dotted. - -;; dotted is free software: you can redistribute it and/or modify it under -;; the terms of the GNU Affero General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; dotted is distributed in the hope that it will be useful, but WITHOUT -;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General -;; Public License for more details. - -;; You should have received a copy of the GNU Affero General Public -;; License along with dotted. If not, see . - -;;; Commentary: - -;; A wikitext mode. - -;;; Code: -(require 'wiki-faces) - -(defvar wiki-url-regexp "https?://[^ ]+") - -(defvar wiki-external-link-re - (rx (seq "[[" - (group (seq "http" - (opt "s") - "://" - (+ (not " ")))) - (opt (seq " " (group (+? anything)))) - "]]"))) - -(defvar wiki-internal-link-re - (rx (seq "[[" - ;; Target - (group - (one-or-more - (not (any "[|]")))) - ;; Label (optional) - (opt (seq "|" (group (+? anything)))) - "]]")) - ;; "\\(\\[\\[\\)\\([^][|]+\\)\\(|\\)\\([^][|]+\\)\\(\\]\\]\\)" - ) - -(defvar wiki-font-lock-keywords - (list - (cons "^======.*======\\ *$" 'wiki-level-6) - (cons "^=====.*=====\\ *$" 'wiki-level-5) - (cons "^====.*====\\ *$" 'wiki-level-4) - (cons "^===.*===\\ *$" 'wiki-level-3) - (cons "^==.*==\\ *$" 'wiki-level-2) - (cons "^=.*=\\ *$" 'wiki-level-1) - (cons "^----+\\ *$" 'wiki-hr-face) - (cons "'''''[^ \t\n].*?[^ \t\n]'''''" 'wiki-bold-italic) - (cons "'''[^ \t\n'].*?[^ \t\n']'''" 'wiki-bold) - (cons "''[^ \t\n'].*?[^ \t\n']''" 'wiki-italic) - (cons "^ .*$" 'wiki-pre-face) - '(wiki-activate-external-links) - '(wiki-activate-internal-links) - )) - -(defvar wiki-outline-regexp "=+.*=+\ *$") - -(defun wiki-outline-level () - (when (looking-at "\\(=+\\).*\\(=+\\)\ *$") - (min (length (match-string 1)) - (length (match-string 2)) - 6))) - -;; Like `org-activate-links' -(defun wiki-activate-links (link-re limit) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward link-re limit t) - (let ((start (match-beginning 0)) - (end (match-end 0)) - (visible-start (or (match-beginning 2) (match-beginning 1))) - (visible-end (or (match-end 2) (match-end 1))) - ) - (put-text-property start visible-start 'invisible t) - (put-text-property start end 'font-lock-face 'wiki-link) - (put-text-property visible-end end 'invisible t) - (add-text-properties (1- visible-start) visible-start - '(rear-nonsticky (invisible))) - (add-text-properties (1- visible-end) visible-end - '(rear-nonsticky (invisible))) - )))) - -(defun wiki-activate-internal-links (limit) - (wiki-activate-links wiki-internal-link-re limit)) - -(defun wiki-activate-external-links (limit) - (wiki-activate-links wiki-external-link-re limit)) - -(define-derived-mode wiki-mode outline-mode "Wiki" - "A wikitext mode." - - (setq-local comment-start "") - - ;; FIXME: this should not be necessary in outline mode - (setq-local font-lock-defaults - '(wiki-font-lock-keywords - t - nil - nil - (font-lock-extra-managed-props invisible font-lock-face))) - (setq-local outline-regexp wiki-outline-regexp) - (setq-local outline-level 'wiki-outline-level) - ) - -(provide 'wiki) -;;; wiki.el ends here - diff --git a/emacs/.emacs.d/lisp/wiki.el b/emacs/.emacs.d/lisp/wiki.el new file mode 160000 index 0000000..d2549f5 --- /dev/null +++ b/emacs/.emacs.d/lisp/wiki.el @@ -0,0 +1 @@ +Subproject commit d2549f5ea26f55d98c9106448002adfc023793d7 -- cgit v1.2.3