branch: elpa/forth-mode
commit 45f3f20f18b3fb826b2d5753a55a256f8e8c3055
Author: Helmut Eller <[email protected]>
Commit: Helmut Eller <[email protected]>
Make indentation case-insensitive
* forth-smie.el (forth-smie--forward-token)
(forth-smie--forward-token, forth-smie-setup): Use custom tokenizer
to downcase all tokens.
* test/tests.el (forth-indent-if-then-else): Add tests case.
---
forth-smie.el | 18 +++++++++++++++++-
test/tests.el | 8 +++++++-
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/forth-smie.el b/forth-smie.el
index 3bc14fb139..ae44364ca7 100644
--- a/forth-smie.el
+++ b/forth-smie.el
@@ -33,7 +33,23 @@
(`(:elem . args) 0)
(`(:list-intro . ,_) forth-smie--basic-indent)))
+(defun forth-smie--forward-token ()
+ (forward-comment (point-max))
+ (downcase (buffer-substring-no-properties
+ (point)
+ (progn (skip-syntax-forward "w_")
+ (point)))))
+
+(defun forth-smie--backward-token ()
+ (forward-comment (- (point)))
+ (downcase (buffer-substring-no-properties
+ (point)
+ (progn (skip-syntax-backward "w_")
+ (point)))))
+
(defun forth-smie-setup ()
- (smie-setup forth-smie--grammar #'forth-smie--indentation-rules))
+ (smie-setup forth-smie--grammar #'forth-smie--indentation-rules
+ :forward-token #'forth-smie--forward-token
+ :backward-token #'forth-smie--backward-token))
(provide 'forth-smie)
diff --git a/test/tests.el b/test/tests.el
index 2f24b864cc..57e4428b4a 100644
--- a/test/tests.el
+++ b/test/tests.el
@@ -112,7 +112,13 @@ The whitespace before and including \"|\" on each line is
removed."
| 3 +
|else
| 1+
- |then"))
+ |then")
+ (forth-should-indent
+ "x IF
+ | 3 +
+ |ELSE
+ | 1+
+ |THEN"))
(ert-deftest forth-indent-begin-while-repeat ()
(forth-should-indent