aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lisp/electric-tests.el104
1 files changed, 104 insertions, 0 deletions
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el
index 467abd1f274..5a4b20ed04e 100644
--- a/test/lisp/electric-tests.el
+++ b/test/lisp/electric-tests.el
@@ -812,5 +812,109 @@ baz\"\""
812 :bindings '((comment-start . "<!--") (comment-use-syntax . t)) 812 :bindings '((comment-start . "<!--") (comment-use-syntax . t))
813 :test-in-comments nil :test-in-strings nil) 813 :test-in-comments nil :test-in-strings nil)
814 814
815
816;;; tests for `electric-layout-mode'
817
818(ert-deftest electric-layout-int-main-kernel-style ()
819 (ert-with-test-buffer ()
820 (c-mode)
821 (electric-layout-local-mode 1)
822 (electric-pair-local-mode 1)
823 (electric-indent-local-mode 1)
824 (setq-local electric-layout-rules
825 '((?\{ . (after-stay after))))
826 (insert "int main () ")
827 (let ((last-command-event ?\{))
828 (call-interactively (key-binding `[,last-command-event])))
829 (should (equal (buffer-string) "int main () {\n \n}"))))
830
831(ert-deftest electric-layout-int-main-allman-style ()
832 (ert-with-test-buffer ()
833 (c-mode)
834 (electric-layout-local-mode 1)
835 (electric-pair-local-mode 1)
836 (electric-indent-local-mode 1)
837 (setq-local electric-layout-rules
838 '((?\{ . (before after-stay after))))
839 (insert "int main () ")
840 (let ((last-command-event ?\{))
841 (call-interactively (key-binding `[,last-command-event])))
842 (should (equal (buffer-string) "int main ()\n{\n \n}"))))
843
844(define-derived-mode plainer-c-mode c-mode "pC"
845 "A plainer/saner C-mode with no internal electric machinery."
846 (c-toggle-electric-state -1)
847 (setq-local electric-indent-local-mode-hook nil)
848 (setq-local electric-indent-mode-hook nil)
849 (electric-indent-local-mode 1)
850 (dolist (key '(?\" ?\' ?\{ ?\} ?\( ?\) ?\[ ?\]))
851 (local-set-key (vector key) 'self-insert-command)))
852
853(ert-deftest electric-modes-in-c-mode-with-self-insert-command ()
854 (ert-with-test-buffer ()
855 (plainer-c-mode)
856 (electric-layout-local-mode 1)
857 (electric-pair-local-mode 1)
858 (electric-indent-local-mode 1)
859 (setq-local electric-layout-rules
860 '((?\{ . (before after-stay after))))
861 (insert "int main () ")
862 (let ((last-command-event ?\{))
863 (call-interactively (key-binding `[,last-command-event])))
864 (should (equal (buffer-string) "int main ()\n{\n \n}"))))
865
866(ert-deftest electric-pair-mode-newline-between-parens ()
867 (ert-with-test-buffer ()
868 (plainer-c-mode)
869 (electric-layout-local-mode -1) ;; ensure e-l-m mode is off
870 (electric-pair-local-mode 1)
871 (insert-before-markers "int main () {}")
872 (backward-char 1)
873 (let ((last-command-event ? ))
874 (call-interactively (key-binding `[,last-command-event])))
875 (should (equal (buffer-string) "int main () {\n \n}"))))
876
877(ert-deftest electric-layout-mode-newline-between-parens-without-e-p-m ()
878 (ert-with-test-buffer ()
879 (plainer-c-mode)
880 (electric-layout-local-mode 1)
881 (electric-pair-local-mode -1) ;; ensure e-p-m mode is off
882 (electric-indent-local-mode 1)
883 (setq-local electric-layout-rules
884 '((?\n
885 .
886 (lambda ()
887 (when (eq (save-excursion
888 (skip-chars-backward "\t\s")
889 (char-before (1- (point))))
890 (matching-paren (char-after)))
891 '(after-stay))))))
892 (insert "int main () {}")
893 (backward-char 1)
894 (let ((last-command-event ? ))
895 (call-interactively (key-binding `[,last-command-event])))
896 (should (equal (buffer-string) "int main () {\n \n}"))))
897
898(ert-deftest electric-layout-mode-newline-between-parens-without-e-p-m-2 ()
899 (ert-with-test-buffer ()
900 (plainer-c-mode)
901 (electric-layout-local-mode 1)
902 (electric-pair-local-mode -1) ;; ensure e-p-m mode is off
903 (electric-indent-local-mode 1)
904 (setq-local electric-layout-rules
905 '((lambda (char)
906 (when (and
907 (eq char ?\n)
908 (eq (save-excursion
909 (skip-chars-backward "\t\s")
910 (char-before (1- (point))))
911 (matching-paren (char-after))))
912 '(after-stay)))))
913 (insert "int main () {}")
914 (backward-char 1)
915 (let ((last-command-event ? ))
916 (call-interactively (key-binding `[,last-command-event])))
917 (should (equal (buffer-string) "int main () {\n \n}"))))
918
815(provide 'electric-tests) 919(provide 'electric-tests)
816;;; electric-tests.el ends here 920;;; electric-tests.el ends here