--- sisu-mode.el 2016-02-19 00:37:21.798481323 -0500 +++ sisu-mode-7.1.7.el 2016-02-19 00:41:27.824326557 -0500 @@ -1,10 +1,19 @@ -;;; sisu-mode.el --- Major mode for SiSU markup text +;;; sisu-mode.el --- a major-mode for highlighting a hierarchy structured text. -;; Copyright (C) 2011 Free Software Foundation, Inc. +;; Copyright (C): Free Software Foundation, Inc. (FSF) (GNU EMACS) +;; Assigned to FSF 2011-04-08 +;; +;; [this file has been edited and updated by Ralph Amissah] -;; Author: Ambrose Kofi Laing (& Ralph Amissah) -;; Keywords: text, processes, tools -;; Version: 3.0.3 +;; Author: Ralph Amissah & Ambrose Kofi Laing +;; Keywords: text, syntax, processes, tools +;; Version: 7.1.7 2015-12-26 Ralph Amissah, +;; including patch from Kevin Ryde; +;; 5.7.2 2014-10-28 Ralph Amissah; +;; 4.0.8 2013-02-17 Ralph Amissah; +;; 3.0.7 2011-04-20 Ambrose Kofi Laing & Ralph Amissah; +;; 2008-12-14 +;; URL: [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=data/sisu/conf/editor-syntax-etc/emacs/sisu-mode.el;hb=HEAD] ;; License: GPLv3 ;; Home URL: SiSU: http://www.jus.uio.no/sisu ;; originally looked at (based on) doc-mode, with kind permission of the author @@ -23,7 +32,7 @@ ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . +;; along with this program. If not, see [http://www.gnu.org/licenses/]. ;; Viva Software Libre! ;; Support the free software movement! @@ -43,10 +52,6 @@ ;; The documentation for the "Structure Of The Hierarchy Text" can be ;; found in the sisustring for the sisu-mode function. -;;; Code: - -;;{{{ Variables: - (defgroup sisu-faces nil "AsciiSisu highlighting" :group 'sisus) @@ -136,210 +141,334 @@ (defconst sisu-font-lock-keywords (eval-when-compile (list + ;;grouped text --------- + ;(cons "^```[ ]code\\(.\\|\n\\)+?\n```\n" 'general-font-lock-red2) + (cons "^```[ ]+code.*?$\\|^```$" 'general-font-lock-red2) + (cons "^```[ ]+table.*?$\\|^```$" 'general-font-lock-red2) + (cons "^```[ ]+group$\\|^```$" 'general-font-lock-red2) + (cons "^```[ ]+block$\\|^```$" 'general-font-lock-red2) + (cons "^```[ ]+poem$\\|^```$" 'general-font-lock-red2) + (cons "^```[ ]+alt$\\|^```$" 'general-font-lock-red2) + ;;grouped text --------- + (cons "^group\{\\|^\}group" 'general-font-lock-red2) + (cons "^block\{\\|^\}block" 'general-font-lock-red2) + (cons "^code\{\\|^\}code" 'general-font-lock-red2) + (cons "^poem\{\\|^\}poem" 'general-font-lock-red2) + (cons "^alt\{\\|^\}alt" 'general-font-lock-red2) + (cons "^table\{.+\\|^\}table" 'general-font-lock-red2) + (cons "^\{table[^}]+\}" 'general-font-lock-red2) + + (list + (concat + "^\`\\{3\\}[ ]+code.*?$" + "\\(.\\|\n\\)+?" + "\`\\{3\\}$" + ) + '(1 general-font-lock-red2 t) + '(2 nil t) + '(3 general-font-lock-red2 t) + ) + (list + (concat + "^\`\\{3\\}[ ]+table.*?$" + "\\(.\\|\n\\)+?" + "\`\\{3\\}$" + ) + '(1 general-font-lock-red2 t) + '(2 nil t) + '(3 general-font-lock-red2 t) + ) + (list + (concat + "^\`\\{3\\}[ ]+\\(group\\|block\\|alt\\|poem\\)$" + "\\(.\\|\n\\)+?" + "^\`\\{3\\}$" + ) + '(1 general-font-lock-red2 t) + '(2 nil t) + '(3 general-font-lock-red2 t) + ) + + ;; footnote/endnote ---- + ;(cons "\~\{.+?\}\~" 'general-font-lock-green1) + (cons "\~\{\\*\\*\\|\~\{\\*\\|\~\{\\|\}\~" 'general-font-lock-red2) + (cons "\~\\[\\+\\|\~\\[\\*\\|\~\\[\\|\\]\~" 'general-font-lock-red2) + (cons "\~\\^ \\|^\\^\~ " 'general-font-lock-red2) + (list + (concat + "\\(\*\~\\)" + "\\([^ \r\t\n]+\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-blue2 t) + ) + + ;; emphasis (can be program configured to be bold italics or underscore) + (list + (concat + "\\([*]\{\\)" + "\\([^\}]+\\)" + "\\(\}[*]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; bold ---------------- + (list + (concat + "\\([!]\{\\)" + "\\([^\}]+\\)" + "\\(\}[!]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + (cons "\\*[^ ]+\\*" 'general-font-lock-red1) + (cons "^!_ .+" 'general-font-lock-red1) + + ;; italics ------------- + (list + (concat + "\\([/]\{\\)" + "\\([^\}]+\\)" + "\\(\}[/]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-blue1 t) + '(3 general-font-lock-red1 t) + ) + + ;; underscore ---------- + (list + (concat + "\\([_]\{\\)" + "\\([^\}]+\\)" + "\\(\}[_]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; monospace ----------- + (list + (concat + "\\([#]\{\\)" + "\\([^\}]+\\)" + "\\(\}[#]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; citation ------------ + (list + (concat + "\\([\"]\{\\)" + "\\([^\}]+\\)" + "\\(\}[\"]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; inserted text ------- + (list + (concat + "\\([\+]\{\\)" + "\\([^\}]+\\)" + "\\(\}[\+]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; strike through ------ + (list + (concat + "\\(\\-\{\\)" + "\\([^\}]+\\)" + "\\(\}\\-\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; superscript --------- + (list + (concat + "\\(\\^\{\\)" + "\\([^\}]+\\)" + "\\(\}\\^\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; subscript ----------- + (list + (concat + "\\([,]\{\\)" + "\\([^\}]+\\)" + "\\(\}[,]\\)" + ) + '(1 general-font-lock-red1 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-red1 t) + ) + + ;; numbered list + (cons "^# \\|^_# " 'general-font-lock-red1) + + ;; bullet text + (cons "^_\\*[1-9] \\|^_\\* " 'general-font-lock-red1) + + ;; indented text + (cons "^_[1-9] " 'general-font-lock-red1) + (cons "^_[1-9]! " 'general-font-lock-red1) + + ;; hanging indented text [proposed enable when implemented] + (cons "^__[1-9] " 'general-font-lock-red1) + (cons "^_[0-9]_[0-9] " 'general-font-lock-red1) + (cons "^__[1-9]! " 'general-font-lock-red1) + (cons "^_[0-9]_[0-9]! " 'general-font-lock-red1) + + ;; url + (cons "\\(^\\|[ ]\\)http:[/][/][^ \t\n\r<]+" 'general-font-lock-blue2) + + ;; Comment Lines + (cons "^% .*" 'general-font-lock-blue1) + + ;; page break + (cons "^\\(-\\\\\\\\-\\|=\\\\\\\\=\\|-\\.\\.-\\)" 'general-font-lock-red2) + + ;; line break + (cons " \\\\\\\\ " 'general-font-lock-red1) + + ;; line break (depreciated) + (cons "
" 'general-font-lock-red1) + + ;; Section titles + (list "^\\(\\([1-4]\\|:?[A-D]\\)\\~\\)\\(.*\\)" + '(1 sisu-title-1 t) + '(3 sisu-title-2 t) + ) + + ;; hyper-links + (list + (concat + "\\(\{~^\\|\{\\)" + "\\([^\}\{]+\\)" + "\\(\}http:[/][/][^ \r\n\t<]+\\)" + ) + '(1 general-font-lock-blue2 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-blue2 t) + ) + + ;; book index + (list + (concat + "^\\(\=\{\\)" + "\\([^\}\{]+\\)" + "\\(}\\)$" + ) + '(1 general-font-lock-green1 t) + '(2 nil t) + '(3 general-font-lock-green1 t) + ) + + ;(cons "^\=\{.+\}" 'general-font-lock-green1) + + ;; numbers + (cons "\\<[.0-9]+\\>" 'general-font-lock-green2) + + ;; bullets sisu_normal (nearly copied regexp) + (cons "^_\\([1-9*]\\|[1-9]\\*\\) " 'general-font-lock-blue2) + + ;; image links + (list + (concat + "\\(\{\\)" + "\\([^\}\{]+\\)" + "\\(\}image\\)" + ) + '(1 general-font-lock-blue2 t) + '(2 general-font-lock-red1 t) + '(3 general-font-lock-blue2 t) + ) + + ;; insert file links + (list + (concat + "\\(<< \\)" + "\\([^ \r\t\n]+\\.ss\\)" + "\\(i\\|t\\)" + ) + '(1 general-font-lock-blue2 t) + '(2 general-font-lock-blue2 t) + '(3 general-font-lock-blue2 t) + ) + + ;; raw keywords + (list + (concat + "^\\(address@hidden(" + "creator\\|" + "title\\|" + "date\\|" + "rights\\|" + "publisher\\|" + "classify\\|" + "identifier\\|" + "original\\|" + "notes\\|" + "links\\|" + "make\\|" + "\\):\\)\\(.*\\)" + ) + '(1 sisu-title-2 keep) + '(3 sisu-title-3 keep) + ) + ) + ) + "Default expressions to highlight in AsciiSisu mode." +) + +;; enables outlining for sisu +(add-hook 'sisu-mode-hook + '(lambda () + (outline-minor-mode))) + +;;; outline mode "folding" if available +;;; TODO make sure linum (line numbering) is off, else performance penalty, sucks bigtime +;(define-key evil-normal-state-map (kbd ",0") (lambda() (interactive) (show-all))) +;(define-key evil-normal-state-map (kbd ",-") (lambda() (interactive) (hide-body))) +;(define-key evil-normal-state-map (kbd ",+") (lambda() (interactive) (show-subtree))) +;(define-key evil-normal-state-map (kbd ",=") (lambda() (interactive) (show-subtree))) +; +;;(define-key evil-normal-state-map ",0" 'show-all) +;;(define-key evil-normal-state-map ",-" 'hide-body) +;;(define-key evil-normal-state-map ",+" 'show-subtree) +;;(define-key evil-normal-state-map ",=" 'show-subtree) + +;; C-c @ C-a show all +;; C-c @ C-t show only the headings +;; C-c @ C-s show subtree at cursor location +;; C-c @ C-d hide subtree at cursor location - ;;grouped text - (cons "^group\{\\|^\}group" 'general-font-lock-red2) - (cons "^block\{\\|^\}block" 'general-font-lock-red2) - (cons "^code\{\\|^\}code" 'general-font-lock-red2) - (cons "^poem\{\\|^\}poem" 'general-font-lock-red2) - (cons "^alt\{\\|^\}alt" 'general-font-lock-red2) - (cons "^table\{.+\\|^\}table" 'general-font-lock-red2) - (cons "^\{table[^}]+\}" 'general-font-lock-red2) - - ;; footnote/endnote - ;(cons "\~\{.+?\}\~" 'general-font-lock-green1) - (cons "\~\{\\*\\*\\|\~\{\\*\\|\~\{\\|\}\~" 'general-font-lock-red2) - (cons "\~\\[\\+\\|\~\\[\\*\\|\~\\[\\|\\]\~" 'general-font-lock-red2) - - (cons "\~\\^ \\|^\\^\~ " 'general-font-lock-red2) - - (list (concat - "\\(\*\~\\)" - "\\([^ \r\t\n]+\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-blue2 t)) - - ;; emphasis (can be program configured to be bold italics or underscore) - (list (concat - "\\([*]\{\\)" - "\\([^\}]+\\)" - "\\(\}[*]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; bold - (list (concat - "\\([!]\{\\)" - "\\([^\}]+\\)" - "\\(\}[!]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - (cons "\\*[^ ]+\\*" 'general-font-lock-red1) - (cons "^!_ .+" 'general-font-lock-red1) - - ;;; italics - (list (concat - "\\([/]\{\\)" - "\\([^\}]+\\)" - "\\(\}[/]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-blue1 t) - '(3 general-font-lock-red1 t)) - - ;; underscore - (list (concat - "\\([_]\{\\)" - "\\([^\}]+\\)" - "\\(\}[_]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; monospace - (list (concat - "\\([#]\{\\)" - "\\([^\}]+\\)" - "\\(\}[#]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; citation - (list (concat - "\\([\"]\{\\)" - "\\([^\}]+\\)" - "\\(\}[\"]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; inserted text - (list (concat - "\\([\+]\{\\)" - "\\([^\}]+\\)" - "\\(\}[\+]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; strike through - (list (concat - "\\(\\-\{\\)" - "\\([^\}]+\\)" - "\\(\}\\-\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; superscript - (list (concat - "\\(\\^\{\\)" - "\\([^\}]+\\)" - "\\(\}\\^\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;; subscript - (list (concat - "\\([,]\{\\)" - "\\([^\}]+\\)" - "\\(\}[,]\\)") - '(1 general-font-lock-red1 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-red1 t)) - - ;;numbered list - (cons "^# \\|^_# " 'general-font-lock-red1) - - ;;bullet text - (cons "^_\\*[1-9] \\|^_\\* " 'general-font-lock-red1) - - ;;indented text - (cons "^_[1-9] " 'general-font-lock-red1) - - ;;url - (cons "\\(^\\|[ ]\\)http:[/][/][^ \t\n\r<]+" 'general-font-lock-blue2) - -;; \\|\$ - - ;; Comment Lines - (cons "^% .*" 'general-font-lock-blue1) - ;; line break - (cons "
" 'general-font-lock-red1) - - ;; Section titles - (list "^\\(\\([1-8]\\|:?[A-C]\\)\\~\\)\\(.*\\)" - '(1 sisu-title-1 t) - '(3 sisu-title-2 t)) - - ;; hyper-links - (list (concat - "\\(\{~^\\|\{\\)" - "\\([^\}\{]+\\)" - "\\(\}http:[/][/][^ \r\n\t<]+\\)") - '(1 general-font-lock-blue2 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-blue2 t)) - - ;; book index - (cons "^\=\{.+\}" 'general-font-lock-green1) - - ;; numbers - (cons "\\<[.0-9]+\\>" 'general-font-lock-green2) - - ;; bullets sisu_normal (nearly copied regexp) - (cons "^_\\([1-9*]\\|[1-9]\\*\\) " 'general-font-lock-blue2) - - ;; image links - (list (concat - "\\(\{\\)" - "\\([^\}\{]+\\)" - "\\(\}image\\)") - '(1 general-font-lock-blue2 t) - '(2 general-font-lock-red1 t) - '(3 general-font-lock-blue2 t)) - - ;; insert file links - (list (concat - "\\(<< \\)" - "\\([^ \r\t\n]+\\.ss\\)" - "\\(i\\|t\\)") - '(1 general-font-lock-blue2 t) - '(2 general-font-lock-blue2 t) - '(3 general-font-lock-blue2 t)) - - ;; raw keywords - (list (concat - "^\\(address@hidden(" - "title\\|" - "creator\\|" - "date\\|" - "publisher\\|" - "rights\\|" - "classify\\|" - "original\\|" - "notes\\|" - "links\\|" - "make\\|" - "\\):\\)\\(.*\\)") - '(1 sisu-title-2 keep) - '(3 sisu-title-3 keep)) - - )) - "Default expressions to highlight in AsciiSisu mode.") - -;;}}} - -;;{{{ Sisu & Autoload: - -;;;###autoload +;; Sisu & Autoload: (define-derived-mode sisu-mode text-mode "SiSU" - "Major mode for editing SiSU files. -SiSU (http://www.sisudoc.org/) is a document structuring and -publishing framework. This major mode handles SiSU markup." + "Major mode for editing SiSU files." + (interactive) (modify-syntax-entry ?\' ".") ;(flyspell-mode nil) @@ -350,6 +479,9 @@ (make-local-variable 'paragraph-ignore-fill-prefix) (setq paragraph-ignore-fill-prefix t) + (set (make-local-variable 'outline-regexp) + "^\\(\\([1-4]\\|:?[A-D]\\)\\~\\|address@hidden:\\( \\|$\\)\\)") + (make-local-variable 'require-final-newline) (setq require-final-newline t) @@ -362,10 +494,29 @@ )) (run-hooks 'sisu-mode-hook)) -;;;###autoload (add-to-list 'auto-mode-alist '("\\.sisu\\'" . sisu-mode)) +;; ##autoload +(add-to-list 'auto-mode-alist '("\\.sst\\'" . sisu-mode)) +(add-to-list 'auto-mode-alist '("\\.ssm\\'" . sisu-mode)) +(add-to-list 'auto-mode-alist '("\\.ssi\\'" . sisu-mode)) -(provide 'sisu-mode) +;;;; ChangeLog: -;;}}} +;; 2011-07-12 Chong Yidong +;; +;; Fix version numbers of sisu-mode, register-list, and windresize. +;; +;; 2011-07-08 Chong Yidong +;; +;; sisu-mode.el: Add .sisu to auto-mode-alist using autoload cookie. +;; Minor doc fixes. +;; +;; 2011-07-06 Stefan Monnier +;; +;; * sisu-mode.el (sisu-mode): Autoload. +;; +;; 2011-07-04 Stefan Monnier +;; +;; Add sisu-mode.el. Update all.el licence. +;; -;;; sisu-mode.el ends here +(provide 'sisu-mode)