diff options
| author | João Távora | 2019-05-15 13:10:22 +0100 |
|---|---|---|
| committer | João Távora | 2019-07-02 16:10:45 +0100 |
| commit | 5e88b50d542b6d1c4ff43f8ae0fabe8a647d842e (patch) | |
| tree | 46c5c7e22127d8e6aad017f925514a0fb62c19ca /test | |
| parent | 2a2a1bdb8f0f149aaf736a61685feec9380be1b1 (diff) | |
| download | emacs-5e88b50d542b6d1c4ff43f8ae0fabe8a647d842e.tar.gz emacs-5e88b50d542b6d1c4ff43f8ae0fabe8a647d842e.zip | |
Correctly reindent previous line in electric-indent-mode
Fixes: bug#35254
Do this even when electric-indent-inhibit is t, except when the
newline insertion is being performed by electric-layout-mode.
* lisp/electric.el (electric-indent-post-self-insert-function):
Reindent previous line unless operating under
electric-layout-mode.
(electric-layout-post-self-insert-function-1): Bind
electric-indent-inhibit to 'electric-layout-mode.
* test/lisp/electric-tests.el
(electric-layout-control-reindentation): New test.
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/electric-tests.el | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 4f1e5729be1..86c9eff9cda 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el | |||
| @@ -876,6 +876,25 @@ baz\"\"" | |||
| 876 | (call-interactively (key-binding `[,last-command-event]))) | 876 | (call-interactively (key-binding `[,last-command-event]))) |
| 877 | (should (equal (buffer-string) "int main () {\n \n}")))) | 877 | (should (equal (buffer-string) "int main () {\n \n}")))) |
| 878 | 878 | ||
| 879 | (ert-deftest electric-layout-control-reindentation () | ||
| 880 | "Same as `e-l-int-main-kernel-style', but checking Bug#35254." | ||
| 881 | (ert-with-test-buffer () | ||
| 882 | (plainer-c-mode) | ||
| 883 | (electric-layout-local-mode 1) | ||
| 884 | (electric-pair-local-mode 1) | ||
| 885 | (electric-indent-local-mode 1) | ||
| 886 | (setq-local electric-layout-rules | ||
| 887 | '((?\{ . (after)) | ||
| 888 | (?\} . (before)))) | ||
| 889 | (insert "int main () ") | ||
| 890 | (let ((last-command-event ?\{)) | ||
| 891 | (call-interactively (key-binding `[,last-command-event]))) | ||
| 892 | (should (equal (buffer-string) "int main () {\n \n}")) | ||
| 893 | ;; insert an additional newline and check indentation and | ||
| 894 | ;; reindentation | ||
| 895 | (call-interactively 'newline) | ||
| 896 | (should (equal (buffer-string) "int main () {\n\n \n}")))) | ||
| 897 | |||
| 879 | (define-derived-mode plainer-c-mode c-mode "pC" | 898 | (define-derived-mode plainer-c-mode c-mode "pC" |
| 880 | "A plainer/saner C-mode with no internal electric machinery." | 899 | "A plainer/saner C-mode with no internal electric machinery." |
| 881 | (c-toggle-electric-state -1) | 900 | (c-toggle-electric-state -1) |