--- sisu-mode.el 2016-02-20 23:27:42.226633771 -0500 +++ sisu-mode-7.1.8.el 2016-02-21 01:16:40.236406813 -0500 @@ -2,15 +2,15 @@ ;; Copyright (C) 2011 Free Software Foundation, Inc. -;; Author: Ambrose Kofi Laing (& Ralph Amissah) -;; Keywords: text, processes, tools -;; Version: 3.0.3 -;; License: GPLv3 -;; Home URL: SiSU: http://www.jus.uio.no/sisu +;; Author: Ralph Amissah & Ambrose Kofi Laing +;; Keywords: text, syntax, processes, tools +;; Version: 7.1.8 +;; URL: 'http://www.sisudoc.org' ;; originally looked at (based on) doc-mode, with kind permission of the author ;; Author: SUN, Tong , (c)2001-6, all right reserved ;; Version: $Date: 2006/01/19 03:13:41 $ $Revision: 1.14 $ ;; Home URL: http://xpt.sourceforge.net/ +;; with contributions from Kevin Ryde and Stefan Monnier ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -136,200 +136,328 @@ (defconst sisu-font-lock-keywords (eval-when-compile (list - - ;;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.") + ;;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 + '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 ;;}}} @@ -338,8 +466,9 @@ ;;;###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." +SiSU document structuring, publishing in multiple formats and search. +URL `http://www.sisudoc.org/' +" (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,7 +494,7 @@ )) (run-hooks 'sisu-mode-hook)) -;;;###autoload (add-to-list 'auto-mode-alist '("\\.sisu\\'" . sisu-mode)) +;;;###autoload (add-to-list 'auto-mode-alist '("\\.ss[imt]\\'" . sisu-mode)) (provide 'sisu-mode)