1 ;;; scdoc-mode.el --- Major mode for scdoc files -*- lexical-binding: t; -*-
2 ;; Copyright 2021 Armaan Bhojwani ISC license.
4 ;; Author: Armaan Bhojwani <me@armaanb.net>
5 ;; Maintainer: Armaan Bhojwani <me@armaanb.net>
6 ;; Created: May 30, 2021
8 ;; URL: https://git.armaanb.net/scdoc-mode
11 ;; auto-fill-mode is reccomended. Make sure to add the following to
14 ;; (autoload 'scdoc-mode "scdoc-mode" "Major mode for editing scdoc files" t)
15 ;; (add-to-list 'auto-mode-alist '("\\.scd\\'" . scdoc-mode))
19 (defface scdoc-level-1-face
20 '((t :inherit org-level-1))
21 "Face for scdoc level 1 headings."
23 (defvar scdoc-level-1-face 'scdoc-level-1-face)
25 (defface scdoc-level-2-face
26 '((t :inherit org-level-2))
27 "Face for scdoc level 2 headings."
29 (defvar scdoc-level-2-face 'org-level-2-face)
31 (defface scdoc-line-break-face
32 '((t :inherit font-lock-warning-face))
33 "Face for scdoc manual line break markers."
35 (defvar scdoc-line-break-face 'scdoc-line-break-face)
37 (defface scdoc-underline-face
38 '((t :inherit underline))
39 "Face for scdoc underlined text."
41 (defvar scdoc-underline-face 'scdoc-underline)
43 (defface scdoc-bold-face
44 '((t :weight extra-bold))
45 "Face for scdoc bolded text."
47 (defvar scdoc-bold-face 'scdoc-bold-face)
49 (defface scdoc-man-face
50 '((t :inherit font-lock-builtin-face
52 "Face for scdoc references to manpages."
54 (defvar scdoc-man-face 'scdoc-man-face)
56 (defface scdoc-literal-face
57 '((t :inherit font-lock-comment-delimiter-face))
58 "Face for scdoc literal blocks."
60 (defvar scdoc-literal-face 'scdoc-literal-face)
62 (defface scdoc-comment-face
63 '((t :inherit font-lock-comment-face))
64 "Face for scdoc comments."
66 (defvar scdoc-comment-face 'scdoc-comment-face)
69 '(("^# .*" . scdoc-level-1) ; Heading 1
70 ("^## .*" . scdoc-level-2) ; Heading 2
71 ("++$" . scdoc-line-break-face) ; Line break
72 ("\\(\\s-\\|^\\)_.*_" . scdoc-underline-face) ; Underlines
73 ("\\*.*\\*" . scdoc-bold-face) ; Bold
74 ("^```$" . scdoc-literal-face) ; Literal text
75 ("^; .*" . scdoc-comment-face) ; Comments
76 ("\\(\\s-\\|^\\)\\sw*\([0-9]\)" . scdoc-man-face) ; References to manpages
79 (define-derived-mode scdoc-mode text-mode "scdoc"
80 "Major mode for editing scdoc files."
81 (setq font-lock-defaults '(scdoc-faces)
85 ;;; scdoc-mode.el ends here