diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/electric-tests.el | 104 |
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 |