-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexecline-mode.el
More file actions
33 lines (26 loc) · 1.65 KB
/
execline-mode.el
File metadata and controls
33 lines (26 loc) · 1.65 KB
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
;;; execline-mode.el --- major mode for editing execline scripts. -*- coding: utf-8; lexical-bindings: t -*-
;;; Commentary:
;;; small major mode for editing scripts written in the execline language, made by skarnet.
;;; https://skarnet.org/software/execline
;; Code
(setq execline-keywords
(let* (
(process-state-control '("execline-cd" "execline-umask" "posix-cd" "posix-umask" "emptyenv" "envfile" "export" "fdblock" "fdclose" "fdmove" "fdreserve" "fdswap" "redirfd" "piperw" "heredoc" "wait" "getcwd" "getpid" "exec" "tryexec" "exit" "trap" "withstdinas"))
(basic-block-management '("foreground" "background" "case" "if" "ifelse" "ifte" "ifthenelse" "backtick" "pipeline" "runblock"))
(variable-management '("define" "importas" "elglob" "elgetpositional" "multidefine" "multisubstitute"))
(loops '("forx" "forstdin" "forbacktickx" "loopwhilex"))
(positional-parameters '("elgetopt" "shift" "dollarat"))
(misc '("eltest" "homeof")))
;; generate regexes for each category
(block-management-regexp (regexp-opt block-management 'words))
(variable-management-regexp (regexp-opt block-management 'words))
(loops-regexp (regexp-opt loops 'words)))
`(
(,block-management-regexp . 'font-lock-keyword-face)
(,variable-management-regexp . 'font-lock-keyword-face)
(,loops-regexp . 'font-lock-keyword-face)))
(define-derived-mode execline-mode sh-mode "execline mode"
"Major mode for editing execline scripts."
(setq font-lock-defaults '((execline-keywords))))
(provide 'execline-mode)
;;; execline-mode.el ends here