diff options
Diffstat (limited to 'emacs/recipe-mode.el')
-rw-r--r-- | emacs/recipe-mode.el | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/emacs/recipe-mode.el b/emacs/recipe-mode.el new file mode 100644 index 0000000..c38008a --- /dev/null +++ b/emacs/recipe-mode.el @@ -0,0 +1,67 @@ +;;; recipe-mode.el --- major mode for foodtool's recipe files -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 + +;; Author: <gramanas@EYE> +;; Keywords: files, data + +;; 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 <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; + +;;; Code: + +(eval-when-compile + (require 'rx)) + +(setq recipe-highlights + '( + ;; comment + ("^ *#+.*$" . 'font-lock-comment-delimiter-face) + ;; title + ("^ *@\\(.*\\)$" . (1 'font-lock-preprocessor-face)) + ;; duration + ("\\[\\(.+?\\)\\]" . (1 'font-lock-builtin-face)) + ;; quantity measurements + ("= *[[:digit:]/]+\\([ [:graph:]]+?\\)$" . (1 'font-lock-builtin-face)) + ;; variable in assignment + ("^\\(.+?\\)=.+?$" . (1 'font-lock-variable-name-face)) + ;; variable in ${} + ("\\${\\(.+?\\)}" . (1 'font-lock-variable-name-face)) + ;; single word variable + ("\\$\\([^ {\n]+\\)" . (1 'font-lock-variable-name-face)) + ;; step result + ("=>\\(.*\\)" . (1 'font-lock-variable-name-face)) + ;; include + ("^[ [:digit:]]*!" . 'font-lock-constant-face) + ;; symbols + ("@\\|-\\|>\\|+\\|=>" . 'font-lock-constant-face) + )) + +(define-derived-mode recipe-mode prog-mode "rcp" + "Mode for rcp files +\\{recipe-mode-map}" + + ;;(setq-local font-lock-defaults '(conf-font-lock-keywords nil t nil nil)) + (setq-local font-lock-defaults '(recipe-highlights)) + (setq-local comment-use-syntax nil) + (setq-local comment-start "#") + (setq-local parse-sexp-ignore-comments t)) + +(add-to-list 'auto-mode-alist '("\\.rcp\\'" . recipe-mode)) + +(provide 'recipe-mode) +;;; recipe-mode.el ends here |