all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ralph Amissah <ralph.amissah@gmail.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Kevin Ryde <user42_kevin@yahoo.com.au>,
	Ambrose Kofi Laing <aklaing@gmail.com>,
	emacs-devel@gnu.org
Subject: Re: Ambrose Kofi Laing & Ralph Neelante Amissah [Emacs] sisu-mode.el - a major-mode for highlighting a structured text
Date: Sun, 21 Feb 2016 02:04:43 -0500	[thread overview]
Message-ID: <20160221070443.GA4007@niu> (raw)
In-Reply-To: <jwv60xkmuft.fsf-monnier+emacs@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 6489 bytes --]

Stefan, thank you for your work. Find attached a new diff against the
original Gnu sisu-mode.el

I hope I have understood what needed to be done. Sorry if there are
further things to address. I am glad to try; also please feel free to make
changes you think necessary before applying it. In the unlikely event that
I have reason to think otherwise, I can send you a subsequent request.

On Fri, Feb 19, 2016 at 01:42:19PM -0500, Stefan Monnier wrote:
> > Please find attached sisu-mode.diff for sisu-mode.el
>
> Thanks.  I was about to apply it, but I think it's not quite right.
> it's a bit hard to see what the patch does because it includes a lot of
> whitespace changes, but even after accounting for those, there are some
> changes which I don't think really want to install.  See below.
>
>         Stefan
>
> > -;;; sisu-mode.el --- Major mode for SiSU markup text
> > +;;; sisu-mode.el --- a major-mode for highlighting a hierarchy structured text.
>
> Why did you remove SiSU from the description?
> [ Not opposed to it, but rather curious.  ]
>

+;;; sisu-mode.el --- Major mode for SiSU markup text

thanks, corrected (not sure when or why it happened and have not gone back to
try find out, reverted)

> > -;; Copyright (C) 2011  Free Software Foundation, Inc.
> > +;; Copyright (C): Free Software Foundation, Inc. (FSF) (GNU EMACS)
>

> We want to keep all the years of publication in this line.
>

+;; Copyright (C) 2011, 2016 Free Software Foundation, Inc.

> > -;; 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,
>
> The Version: pseudo-header should be of the form AA.BB.CC.DD... only.
>

+;; Author: Ralph Amissah & Ambrose Kofi Laing
+;; Keywords: text, syntax, processes, tools
+;; Version:   7.1.8

> > +;; 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]
>
> Better than a link to the file would be a link to some "sisu-mode
> project" web-page with further information than what's in this file.
>

+;; URL: 'http://www.sisudoc.org'

or should it follow the original format:
;; Home URL: SiSU:   http://www.sisudoc.org

> >  ;; License: GPLv3
>
> This is redundant.
>

removed

added

+;; with contributions from Kevin Ryde and Stefan Monnier

> > +      (cons "^group\{\\|^\}group"       'general-font-lock-red2)
>                       ^     ^
> These two backslashes do not do anything.
>

several such escapes removed

> > +;; enables outlining for sisu
> > +(add-hook 'sisu-mode-hook
> > +       '(lambda ()
> > +         (outline-minor-mode)))
>
> Please don't quote your lambdas.
> Also (lambda () (outline-minor-mode)) is just a round-about way to say
> #'outline-minor-mode.

got as far as this

+;; enables outlining for sisu
+(add-hook 'sisu-mode-hook
+         'outline-minor-mode)
+

> Finally, it's generally preferred to put such code directly in the
> sisu-mode function and leave the sisu-mode-hook nil by default.
>

I did not get this quite

> > +;(define-key evil-normal-state-map (kbd ",0") (lambda() (interactive) (show-all)))
>
> Single-semicolon comments are traditionally indented to comment-column
> (e.g. column 40 or so), so you should probably use ";;" instead here.
>

used ;;

> > -;;;###autoload
> > +;; Sisu & Autoload:
> >  (define-derived-mode sisu-mode text-mode "SiSU"
>
> This ";;;###autoload" comment is the magic cookie used to auto-generate
> sisu-mode-autoloads.el, so you don't want to remove it.
>

reinstated


> > -  "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)
>
> `define-derived-mode` already declares the function as interactive.
>

removed (interactive)

also modified the description to match what is in use elsewhere

   "Major mode for editing SiSU files.
+SiSU document structuring, publishing in multiple formats and search.
+URL `http://www.sisudoc.org/'

this description may be a bit terse, and I have no problem with some
modification, or with the removed repetition of "This major mode handles
SiSU markup"

> >    (run-hooks 'sisu-mode-hook))
>
> And `define-derived-mode` also automatically runs sisu-mode-hook for
> you, so you don't need this either.
>
> > -;;;###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))
>
> I think you want to use something like
>
>    ;;;###autoload
>    (add-to-list 'auto-mode-alist '("\\.ss[itm]\\'" . sisu-mode))
>
> or
>
>    ;;;###autoload
>    (add-to-list 'auto-mode-alist '("\\.sst\\'" . sisu-mode))
>    ;;;###autoload
>    (add-to-list 'auto-mode-alist '("\\.ssm\\'" . sisu-mode))
>    ;;;###autoload
>    (add-to-list 'auto-mode-alist '("\\.ssi\\'" . sisu-mode))
>
thanks

+;;;###autoload (add-to-list 'auto-mode-alist '("\\.ss[imt]\\'" . sisu-mode))

> > +;; 2011-07-12  Chong Yidong  <cyd@stupidchicken.com>
> > +;;
> > +;; Fix version numbers of sisu-mode, register-list, and windresize.
> > +;;
> > +;; 2011-07-08  Chong Yidong  <cyd@stupidchicken.com>
> > +;;
> > +;; sisu-mode.el: Add .sisu to auto-mode-alist using autoload cookie.
> > +;; Minor doc fixes.
> > +;;
> > +;; 2011-07-06  Stefan Monnier  <monnier@iro.umontreal.ca>
> > +;;
> > +;; * sisu-mode.el (sisu-mode): Autoload.
> > +;;
> > +;; 2011-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
> > +;;
> > +;; Add sisu-mode.el.  Update all.el licence.
>
> This gets auto-added (from the Git log) when generating the ELPA
> package, so we don't need it.
>
>

ok, removed

>         Stefan

I did a diff against the original file and put a few things back (e.g. the
triple curly braces).

Please let me know if there is more that needs to be done.

Thanks again,
Ralph

P.S. SiSU markup samples, for SiSU git contains some sample files
http://git.sisudoc.org/gitweb/?p=doc/sisu-markup-samples.git;a=summary
in particular here:
http://git.sisudoc.org/gitweb/?p=doc/sisu-markup-samples.git;a=tree;f=data/samples/current/en;hb=HEAD

P.P.S quick note to Kevin, thanks, (feel free to review the file)

[-- Attachment #2: sisu-mode-7.1.8.diff --]
[-- Type: text/x-diff, Size: 16742 bytes --]

--- 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 <suntong001@users.sf.net>, (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 "<br>"                      '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
-      "^\\(\\@\\("
-      "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 "<br>"                      '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
+          "^\\(\\@\\("
+          "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]\\)\\~\\|\\@[a-z]+:\\( \\|$\\)\\)")
+
   (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)
 

  parent reply	other threads:[~2016-02-21  7:04 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-18 22:19 Ambrose Kofi Laing & Ralph Neelante Amissah [Emacs] sisu-mode.el - a major-mode for highlighting a structured text Ralph Amissah
2016-02-19  3:59 ` Stefan Monnier
2016-02-19  6:18   ` Ralph Amissah
2016-02-19 18:42     ` Stefan Monnier
2016-02-20  0:30       ` Ralph Amissah
2016-02-21  7:04       ` Ralph Amissah [this message]
2016-02-21 15:51         ` Stefan Monnier
2016-02-21 17:17           ` Ralph Amissah
2016-02-20  2:05     ` Kevin Ryde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160221070443.GA4007@niu \
    --to=ralph.amissah@gmail.com \
    --cc=aklaing@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=user42_kevin@yahoo.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.