sysrpl-mode.el 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. ;;; sysrpl-mode.el -- Major mode for the SysRPL programming language
  2. ;; Copyright (C) 2013 Paul Onions
  3. ;; Author: Paul Onions <paul.onions@acm.org>
  4. ;; Keywords: RPL, SysRPL, HP48, HP49, HP50, calculator
  5. ;; This file is free software, see the LICENCE file in this directory
  6. ;; for copying terms.
  7. ;;; Commentary:
  8. ;; A major mode for the SysRPL language, the system programming
  9. ;; language of HP48/49/50-series calculators.
  10. ;;; Code:
  11. (require 'rpl-base)
  12. (defface sysrpl-name '((t (:foreground "blue")))
  13. "Face used for displaying SysRPL names."
  14. :group 'rpl)
  15. (defvar sysrpl-syntax-table
  16. (let ((table (make-syntax-table)))
  17. (modify-syntax-entry ?: "w" table)
  18. (modify-syntax-entry ?! "w" table)
  19. (modify-syntax-entry ?@ "w" table)
  20. (modify-syntax-entry ?# "w" table)
  21. (modify-syntax-entry ?$ "w" table)
  22. (modify-syntax-entry ?% "w" table)
  23. (modify-syntax-entry ?^ "w" table)
  24. (modify-syntax-entry ?& "w" table)
  25. (modify-syntax-entry ?\? "w" table)
  26. (modify-syntax-entry ?- "w" table)
  27. (modify-syntax-entry ?_ "w" table)
  28. (modify-syntax-entry ?= "w" table)
  29. (modify-syntax-entry ?+ "w" table)
  30. (modify-syntax-entry ?/ "w" table)
  31. (modify-syntax-entry ?< "w" table)
  32. (modify-syntax-entry ?> "w" table)
  33. (modify-syntax-entry ?| "w" table)
  34. table)
  35. "The SysRPL syntax table.")
  36. (defvar sysrpl-keywords-regexp
  37. (concat "\\<" (regexp-opt rpl-sysrpl-names) "\\>")
  38. "Regular expression for SysRPL keywords.")
  39. (defvar sysrpl-keyword-face 'sysrpl-name)
  40. (defvar sysrpl-font-lock-keywords
  41. (list (cons sysrpl-keywords-regexp 'sysrpl-keyword-face)))
  42. (defvar sysrpl-mode-map
  43. (let ((map (make-sparse-keymap)))
  44. (set-keymap-parent map rpl-common-keymap)
  45. map)
  46. "The SysRPL mode local keymap.")
  47. (defvar sysrpl-mode-hook nil
  48. "Hook for customizing SysRPL mode.")
  49. (define-derived-mode sysrpl-mode prog-mode "SysRPL"
  50. "Major mode for the SysRPL language."
  51. :group 'rpl
  52. (setq font-lock-defaults (list sysrpl-font-lock-keywords))
  53. (setq rpl-menu-compile-file-enable t))
  54. (provide 'sysrpl-mode)