Update Emacs packages
This is a massive diff that I had to do in a hurry - when leaving Urbint. I'm pretty sure that most of these are updating Emacs packages, but I'm not positive.
This commit is contained in:
parent
de97c7bcd0
commit
9da3ffee41
1361 changed files with 16539 additions and 16483 deletions
|
|
@ -1,207 +0,0 @@
|
|||
;; haskell-c2hs.el --- -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2016 Sergey Vinokurov
|
||||
;;
|
||||
;; Author: Sergey Vinokurov <serg.foo@gmail.com>
|
||||
;; Created: Monday, 7 March 2016
|
||||
|
||||
;; 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 3 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;; This mode is mostly intended for highlighting {#...#} hooks.
|
||||
;;
|
||||
;; Quick setup:
|
||||
;; (autoload 'haskell-c2hs-mode "haskell-c2hs-mode" nil t)
|
||||
;; (add-to-list 'auto-mode-alist '("\\.chs\\'" . haskell-c2hs-mode))
|
||||
;;
|
||||
|
||||
(require 'haskell-mode)
|
||||
(require 'haskell-font-lock)
|
||||
(require 'haskell-utils)
|
||||
|
||||
;;;###autoload
|
||||
(add-to-list 'auto-mode-alist '("\\.chs\\'" . haskell-c2hs-mode))
|
||||
|
||||
(defface haskell-c2hs-hook-pair-face
|
||||
'((t (:inherit 'font-lock-preprocessor-face)))
|
||||
"Face for highlighting {#...#} pairs."
|
||||
:group 'haskell)
|
||||
|
||||
(defface haskell-c2hs-hook-name-face
|
||||
'((t (:inherit 'font-lock-keyword-face)))
|
||||
"Face for highlighting c2hs hook names."
|
||||
:group 'haskell)
|
||||
|
||||
(defvar haskell-c2hs-font-lock-keywords
|
||||
`((,(eval-when-compile
|
||||
(let* ((ws '(any ?\s ?\t ?\n ?\r))
|
||||
(anychar '(or (not (any ?#))
|
||||
(seq "#"
|
||||
(not (any ?\})))))
|
||||
(any-nonquote '(or (not (any ?# ?\"))
|
||||
(seq "#"
|
||||
(not (any ?\} ?\")))))
|
||||
(cid '(seq (any (?a . ?z) (?A . ?Z) ?_)
|
||||
(* (any (?a . ?z) (?A . ?Z) (?0 . ?9) ?_))))
|
||||
(hsid-type '(seq (? "'")
|
||||
(any (?A . ?Z))
|
||||
(* (any (?a . ?z) (?A . ?Z) (?0 . ?9) ?_ ?'))))
|
||||
(equals-str-val `(seq (* ,ws)
|
||||
"="
|
||||
(* ,ws)
|
||||
"\""
|
||||
(* ,any-nonquote)
|
||||
"\"")))
|
||||
(eval
|
||||
`(rx
|
||||
(seq
|
||||
(group-n 1 "{#")
|
||||
(* ,ws)
|
||||
(or (seq (group-n 2
|
||||
"import"
|
||||
(opt (+ ,ws)
|
||||
"qualified"))
|
||||
(+ ,ws))
|
||||
(seq (group-n 2
|
||||
"context")
|
||||
(opt (+ ,ws)
|
||||
(group-n 3
|
||||
"lib")
|
||||
,equals-str-val)
|
||||
(opt (+ ,ws)
|
||||
(group-n 4
|
||||
"prefix")
|
||||
,equals-str-val)
|
||||
(opt (+ ,ws)
|
||||
(group-n 5
|
||||
"add"
|
||||
(+ ,ws)
|
||||
"prefix")
|
||||
,equals-str-val))
|
||||
(seq (group-n 2
|
||||
"type")
|
||||
(+ ,ws)
|
||||
,cid)
|
||||
(seq (group-n 2
|
||||
"sizeof")
|
||||
(+ ,ws)
|
||||
,cid)
|
||||
(seq (group-n 2
|
||||
"enum"
|
||||
(+ ,ws)
|
||||
"define")
|
||||
(+ ,ws)
|
||||
,cid)
|
||||
;; TODO: vanilla enum fontification is incomplete
|
||||
(seq (group-n 2
|
||||
"enum")
|
||||
(+ ,ws)
|
||||
,cid
|
||||
(opt (+ ,ws)
|
||||
(group-n 3
|
||||
"as")))
|
||||
;; TODO: fun hook highlighting is incompelete
|
||||
(seq (group-n 2
|
||||
(or "call"
|
||||
"fun")
|
||||
(opt (+ ,ws)
|
||||
"pure")
|
||||
(opt (+ ,ws)
|
||||
"unsafe"))
|
||||
(+ ,ws)
|
||||
,cid
|
||||
(opt (+ ,ws)
|
||||
(group-n 3
|
||||
"as")
|
||||
(opt (+ ,ws)
|
||||
(group-n 8
|
||||
"^"))))
|
||||
(group-n 2
|
||||
"get")
|
||||
(group-n 2
|
||||
"set")
|
||||
(seq (group-n 2
|
||||
"pointer")
|
||||
(or (seq (* ,ws)
|
||||
(group-n 3 "*")
|
||||
(* ,ws))
|
||||
(+ ,ws))
|
||||
,cid
|
||||
(opt (+ ,ws)
|
||||
(group-n 4 "as")
|
||||
(+ ,ws)
|
||||
,hsid-type)
|
||||
(opt (+ ,ws)
|
||||
(group-n 5
|
||||
(or "foreign"
|
||||
"stable")))
|
||||
(opt
|
||||
(or (seq (+ ,ws)
|
||||
(group-n 6
|
||||
"newtype"))
|
||||
(seq (* ,ws)
|
||||
"->"
|
||||
(* ,ws)
|
||||
,hsid-type)))
|
||||
(opt (+ ,ws)
|
||||
(group-n 7
|
||||
"nocode")))
|
||||
(group-n 2
|
||||
"class")
|
||||
(group-n 2
|
||||
"alignof")
|
||||
(group-n 2
|
||||
"offsetof")
|
||||
(seq (group-n 2
|
||||
"const")
|
||||
(+ ,ws)
|
||||
,cid)
|
||||
(seq (group-n 2
|
||||
"typedef")
|
||||
(+ ,ws)
|
||||
,cid
|
||||
(+ ,ws)
|
||||
,hsid-type)
|
||||
(group-n 2
|
||||
"nonGNU")
|
||||
;; TODO: default hook not implemented
|
||||
)
|
||||
(* ,anychar)
|
||||
(group-n 9 "#}"))))))
|
||||
;; Override highlighting for pairs in order to always distinguish them.
|
||||
(1 'haskell-c2hs-hook-pair-face t)
|
||||
(2 'haskell-c2hs-hook-name-face)
|
||||
;; Make matches lax, i.e. do not signal error if nothing
|
||||
;; matched.
|
||||
(3 'haskell-c2hs-hook-name-face nil t)
|
||||
(4 'haskell-c2hs-hook-name-face nil t)
|
||||
(5 'haskell-c2hs-hook-name-face nil t)
|
||||
(6 'haskell-c2hs-hook-name-face nil t)
|
||||
(7 'haskell-c2hs-hook-name-face nil t)
|
||||
(8 'font-lock-negation-char-face nil t)
|
||||
;; Override highlighting for pairs in order to always distinguish them.
|
||||
(9 'haskell-c2hs-hook-pair-face t))
|
||||
,@(haskell-font-lock-keywords)))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode haskell-c2hs-mode haskell-mode "C2HS"
|
||||
"Mode for editing *.chs files of the c2hs haskell tool."
|
||||
(setq-local font-lock-defaults
|
||||
(cons 'haskell-c2hs-font-lock-keywords
|
||||
(cdr font-lock-defaults))))
|
||||
|
||||
|
||||
(provide 'haskell-c2hs)
|
||||
|
||||
;; haskell-c2hs.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue