src/basilisk-mode.el

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    
    ;;; basilisk-mode.el
    
    ;;; Copyright: (C) 2018 Stephane Popinet
    ;; 
    ;;     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 the Free Software Foundation; either version 2 of
    ;;     the License, or (at your option) any later version.
    ;;     
    ;;     This program 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 General Public License for more details.
    ;;     
    ;;     You should have received a copy of the GNU General Public License
    ;;     along with GNU Emacs; if not, write to the Free Software
    ;;     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ;;     02110-1301 USA
    ;;
    ;; To use this package, you can save this file somewhere in your
    ;; load-path and put the following in your .emacs at a minimum:
    ;;
    ;; (require 'basilisk-mode)
    
    (require 'markdown-mode)
    (require 'mmm-mode)
    
    (define-derived-mode basilisk-mode c-mode "Basilisk C"
      "Major mode for editing Basilisk C files."
      (mmm-mode)
    )
    
    ;; customize mmm-mode
    (mmm-add-classes
     '((basilisk
        :submode markdown-mode
        :face mmm-declaration-submode-face
        :front "^[ \t]*/[*][*]"
        :back "[*]/[ \t]*$"
          :include-front t
          :include-back t
          )))
    (mmm-add-mode-ext-class 'basilisk-mode 'nil 'basilisk)
    
    ;; customize markdown-mode
    (setq markdown-command "page2html")
    (setq markdown-command-needs-filename t)
    (add-hook 'markdown-mode-hook
    	  `(lambda ()
    	     (local-set-key [f8]  'markdown-export-and-preview)
    	     (local-set-key [f9]  'markdown-export)
    	     ))
    
    (provide 'basilisk-mode)