-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsdml-ispell.el
98 lines (78 loc) · 3.09 KB
/
sdml-ispell.el
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
;;; sdml-ispell.el --- Spell check text content -*- lexical-binding: t; -*-
;; Copyright (c) 2023, 2024 Simon Johnston
;; Author: Simon Johnston <[email protected]>
;; Version: 0.1.7snapshot
;; Package-Requires: ((emacs "28.2") (tree-sitter-ispell "0.1.0") (sdml-mode "0.1.9"))
;; URL: https://github.com/johnstonskj/emacs-sdml-mode
;; Keywords: languages tools
;;; License:
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;; http://www.apache.org/licenses/LICENSE-2.0
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.
;;; Commentary:
;; This package enables spell checking, with ispell, for elements of an
;; SDML buffer that represent content. Currently this selects only string
;; values and comments for checking.
;;
;; Install
;;
;; Install is easiest from MELPA, here's how with `use-package`. Note the hook clause
;; to ensure this minor mode is always enabled for SDML source files.
;;
;; `(use-package sdml-ispell
;; :ensure t
;; :after (ispell sdml-mode)
;; :hook (sdml-mode . sdml-ispell-mode))'
;;
;; Or, interactively; `M-x package-install RET sdml-ispell RET'
;;
;; Usage
;;
;; Key bindings:
;;
;; `\\[tree-sitter-ispell-run-at-point]' -- spell check the element at point.
;; `\\[tree-sitter-ispell-run-buffer]' -- spell check all elements in the buffer.
;;
;;; Code:
(require 'sdml-mode)
(require 'tree-sitter-ispell)
;; --------------------------------------------------------------------------
;; Customization
;; --------------------------------------------------------------------------
(defconst sdml-ispell-grammar-text-mapping
'(quoted_string line_comment)
"Tree-sitter node types to be spell checked with ispell.")
;; --------------------------------------------------------------------------
;; Key Bindings
;; --------------------------------------------------------------------------
(defvar sdml-ispell-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "C-c C-s s") 'tree-sitter-ispell-run-at-point)
(define-key map (kbd "C-c C-s C-s") 'tree-sitter-ispell-run-buffer)
map)
"Keymap for SDML ispell major mode.")
;; --------------------------------------------------------------------------
;; Spelling Minor Mode
;; --------------------------------------------------------------------------
;;;###autoload
(define-minor-mode
sdml-ispell-mode
"Minor mode to allow `ispell' checking in SDML text content.
Currently only the tree-sitter nodes `quoted_string' and `line_comment'.
Key bindings:
\\{sdml-ispell-mode-map}"
:group 'sdml
:tag "Enable SDML ispell minor mode"
:lighter nil
(add-to-list 'tree-sitter-ispell-grammar-text-mapping
`(sdml-mode . ,sdml-ispell-grammar-text-mapping)))
(provide 'sdml-ispell)
;;; sdml-ispell.el ends here