branch: scratch/editorconfig-cc commit 91feb336b051567ee4fc3dfeb7524ede6a939ee7 Author: 10sr <8.slas...@gmail.com> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
Use flag instead of adding -2-mode for new version testing (#251) * Use flag instead of adding -2-mode * Fix test --- editorconfig.el | 65 ++++++++++++++++++++++----------------------- ert-tests/editorconfig-2.el | 44 +++++++++++++++++------------- 2 files changed, 57 insertions(+), 52 deletions(-) diff --git a/editorconfig.el b/editorconfig.el index 5e2b941ce2..3ace919bf2 100644 --- a/editorconfig.el +++ b/editorconfig.el @@ -671,47 +671,46 @@ F is that function, and FILENAME and ARGS are arguments passed to F." (format "Error while setting variables from EditorConfig: %S" err)))) ret)) +(defvar editorconfig--enable-20210221-testing nil + "Enable testing version of `editorconfig-mode'. + +Currently this mode is not well tested yet and can cause unexpected behaviors +like killing Emacs process or not able to visit files at all.") + ;;;###autoload (define-minor-mode editorconfig-mode "Toggle EditorConfig feature. To disable EditorConfig in some buffers, modify `editorconfig-exclude-modes' or `editorconfig-exclude-regexps'." - :global t - :lighter " EditorConfig" - ;; See https://github.com/editorconfig/editorconfig-emacs/issues/141 for why - ;; not `after-change-major-mode-hook' - (dolist (hook '(change-major-mode-after-body-hook - read-only-mode-hook - ;; Some modes call `kill-all-local-variables' in their init - ;; code, which clears some values set by editorconfig. - ;; For those modes, editorconfig-apply need to be called - ;; explicitly through their hooks. - rpm-spec-mode-hook - )) - (if editorconfig-mode - (add-hook hook 'editorconfig-mode-apply) - (remove-hook hook 'editorconfig-mode-apply)))) - -(define-minor-mode editorconfig-2-mode - "Toggle EditorConfig feature. - -This function is provided temporarily for beta testing, and not well tested yet. -Currently this can cause unexpected behaviors like kill emacs processes and -destroying your files, so please use with caution if you enable this instead of - `editorconfig-mode'." :global t :lighter editorconfig-mode-lighter - (if editorconfig-2-mode - (progn - (advice-add 'find-file-noselect :around 'editorconfig--advice-find-file-noselect) - (advice-add 'insert-file-contents :around 'editorconfig--advice-insert-file-contents) - (add-hook 'read-only-mode-hook - 'editorconfig-mode-apply)) - (advice-remove 'find-file-noselect 'editorconfig--advice-find-file-noselect) - (advice-remove 'insert-file-contents 'editorconfig--advice-insert-file-contents) - (remove-hook 'read-only-mode-hook - 'editorconfig-mode-apply))) + (if editorconfig--enable-20210221-testing + (if editorconfig-mode + (progn + (advice-add 'find-file-noselect :around 'editorconfig--advice-find-file-noselect) + (advice-add 'insert-file-contents :around 'editorconfig--advice-insert-file-contents) + (add-hook 'read-only-mode-hook + 'editorconfig-mode-apply)) + (advice-remove 'find-file-noselect 'editorconfig--advice-find-file-noselect) + (advice-remove 'insert-file-contents 'editorconfig--advice-insert-file-contents) + (remove-hook 'read-only-mode-hook + 'editorconfig-mode-apply)) + + ;; editorconfig--enable-20210221-testing is disabled + ;; See https://github.com/editorconfig/editorconfig-emacs/issues/141 for why + ;; not `after-change-major-mode-hook' + (dolist (hook '(change-major-mode-after-body-hook + read-only-mode-hook + ;; Some modes call `kill-all-local-variables' in their init + ;; code, which clears some values set by editorconfig. + ;; For those modes, editorconfig-apply need to be called + ;; explicitly through their hooks. + rpm-spec-mode-hook + )) + (if editorconfig-mode + (add-hook hook 'editorconfig-mode-apply) + (remove-hook hook 'editorconfig-mode-apply))))) ;; Tools diff --git a/ert-tests/editorconfig-2.el b/ert-tests/editorconfig-2.el index 348ec49c0e..f06aba49f0 100644 --- a/ert-tests/editorconfig-2.el +++ b/ert-tests/editorconfig-2.el @@ -40,7 +40,8 @@ (ert-deftest test-editorconfig-2 nil "Check if properties are applied." - (editorconfig-2-mode 1) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) (with-visit-file (concat editorconfig-ert-dir "3_space.txt") @@ -52,10 +53,11 @@ (should (eq python-indent-offset 4)) (should (eq tab-width 8)) (should (eq indent-tabs-mode nil))) - (editorconfig-2-mode -1)) + (editorconfig-mode -1))) (ert-deftest test-lisp-use-default-indent-2 nil - (editorconfig-2-mode 1) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) (with-visit-file (concat editorconfig-secondary-ert-dir "2_space.el") @@ -75,10 +77,11 @@ (with-visit-file (concat editorconfig-secondary-ert-dir "2_space.el") (should (eq lisp-indent-offset 2)))) - (editorconfig-2-mode -1)) + (editorconfig-mode -1))) (ert-deftest test-trim-trailing-ws-2 nil - (editorconfig-2-mode 1) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) (with-visit-file (concat editorconfig-ert-dir "trim.txt") (should (memq 'delete-trailing-whitespace @@ -88,19 +91,21 @@ (read-only-mode 1) (should (not (memq 'delete-trailing-whitespace write-file-functions)))) - (editorconfig-2-mode -1)) + (editorconfig-mode -1))) (ert-deftest test-file-type-emacs-2 nil :expected-result t ;; Ignore failure - (editorconfig-2-mode 1) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) (with-visit-file (concat editorconfig-secondary-ert-dir "c.txt") (should (eq major-mode 'conf-unix-mode))) - (editorconfig-2-mode -1)) + (editorconfig-mode -1))) (ert-deftest test-file-type-ext-2 nil :expected-result t ;; Ignore failure - (editorconfig-2-mode 1) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) (with-visit-file (concat editorconfig-secondary-ert-dir "a.txt") (should (eq major-mode 'conf-unix-mode))) @@ -109,15 +114,16 @@ "bin/perlscript") (should (eq major-mode 'perl-mode)) (should (eq perl-indent-level 5))) - (editorconfig-2-mode -1)) + (editorconfig-mode -1))) (ert-deftest test-hack-properties-functions-2 nil - (editorconfig-2-mode 1) - (add-hook 'editorconfig-hack-properties-functions - (lambda (props) - (puthash 'indent_size "5" props))) - (with-visit-file (concat editorconfig-ert-dir - "4_space.py") - (should (eq python-indent-offset 5))) - (setq editorconfig-hack-properties-functions nil) - (editorconfig-2-mode -1)) + (let ((editorconfig--enable-20210221-testing t)) + (editorconfig-mode 1) + (add-hook 'editorconfig-hack-properties-functions + (lambda (props) + (puthash 'indent_size "5" props))) + (with-visit-file (concat editorconfig-ert-dir + "4_space.py") + (should (eq python-indent-offset 5))) + (setq editorconfig-hack-properties-functions nil) + (editorconfig-mode -1)))