[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/sml-mode 128f9dd 19/45: * sml-mode.el (sml--rightalign-
From: |
Stefan Monnier |
Subject: |
[elpa] externals/sml-mode 128f9dd 19/45: * sml-mode.el (sml--rightalign-and-p): New function. |
Date: |
Tue, 1 Dec 2020 10:01:39 -0500 (EST) |
branch: externals/sml-mode
commit 128f9ddc552d15f7d25d5e79923ccc033cef04c5
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* sml-mode.el (sml--rightalign-and-p): New function.
---
sml-mode.el | 26 +++++++++++++++++++++++++-
testcases.sml | 1 +
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/sml-mode.el b/sml-mode.el
index e9c2477..a46d9ff 100644
--- a/sml-mode.el
+++ b/sml-mode.el
@@ -487,6 +487,30 @@ Regexp match data 0 points to the chars."
(defvar sml-indent-separator-outdent 2)
+(defun sml--rightalign-and-p ()
+ (when sml-rightalign-and
+ ;; Only right-align the "and" if the intervening code is more deeply
+ ;; indented, to avoid things like:
+ ;; datatype foo
+ ;; = Foo of int
+ ;; and bar = Bar of string
+ (save-excursion
+ (let ((max (line-end-position 0))
+ (data (smie-backward-sexp "and"))
+ (startcol (save-excursion
+ (forward-comment (- (point)))
+ (current-column)))
+ (mincol (current-column)))
+ (save-excursion
+ (search-forward "=" max t)
+ (forward-line 1)
+ (if (< (point) max) (setq max (point))))
+ (while (and (<= (point) max) (not (eobp)))
+ (skip-chars-forward " \t")
+ (setq mincol (current-column))
+ (forward-line 1))
+ (>= mincol startcol)))))
+
(defun sml-smie-rules (kind token)
;; I much preferred the pcase version of the code, especially while
;; edebugging the code. But that will have to wait until we get rid of
@@ -528,7 +552,7 @@ Regexp match data 0 points to the chars."
((equal token "and")
;; FIXME: maybe "and" (c|sh)ould be handled as an smie-separator.
(cond
- ((smie-rule-parent-p "datatype") (if sml-rightalign-and 5 0))
+ ((smie-rule-parent-p "datatype") (if (sml--rightalign-and-p) 5 0))
((smie-rule-parent-p "fun" "val") 0)))
((equal token "d=")
(cond
diff --git a/testcases.sml b/testcases.sml
index 0e98ed6..14b73d3 100644
--- a/testcases.sml
+++ b/testcases.sml
@@ -142,6 +142,7 @@ val x =
datatype foobar
= FooB of int
| FooA of bool * int
+and baz = QUX of foo
datatype foo = FOO | BAR of baz
and baz = BAZ | QUUX of foo
- [elpa] externals/sml-mode 13c27de 22/45: * sml-mode/sml-mode.el: Release new version., (continued)
- [elpa] externals/sml-mode 13c27de 22/45: * sml-mode/sml-mode.el: Release new version., Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode cdc5caf 35/45: * packages/sml-mode/sml-mode.el (sml-tyvarseq-re): Backtrack less (bug#24205), Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode b2c4602 31/45: Fix some quoting problems in doc strings, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 929f0e3 34/45: * sml-mode/sml-mode.el: Use cl-lib., Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode f74803e 33/45: * sml-mode/sml-mode.el: Use cl-lib., Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode d142867 36/45: * packages/sml-mode/sml-mode.el (sml-tyvarseq-re): Backtrack less (bug#24205), Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode aa9dbe5 37/45: * packages/sml-mode/sml-mode.el (sml-smie-rules): Remove incoherent rule., Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 7f7b551 42/45: * sml-mode.el: New var sml-abbrev-skeletons; bump vers to 6.9, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 3b3d315 39/45: Bump version to make new release, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 1460c3f 45/45: * .gitignore: New file, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 128f9dd 19/45: * sml-mode.el (sml--rightalign-and-p): New function.,
Stefan Monnier <=
- [elpa] externals/sml-mode 9f85a5d 27/45: * sml-mode/sml-mode.el (sml-smie-rules): Work around Emacs-24.3 bug., Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode c3a8cef 26/45: * sml-mode.el: Add prettify-symbols-mode and Poly/ML support, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 62c15e0 32/45: Fix some quoting problems in doc strings, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode ff02923 40/45: Bump version to make new release, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode 664e139 41/45: * sml-mode.el: New var sml-abbrev-skeletons; bump vers to 6.9, Stefan Monnier, 2020/12/01
- [elpa] externals/sml-mode af890bb 43/45: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs/elpa, Stefan Monnier, 2020/12/01