X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/d9deb89c3d9f330262fbe88b94cde69f5a34dc6c..e5e12c25622872d9fb382cdc11135a90b8e5066b:/packages/aggressive-indent/aggressive-indent.el diff --git a/packages/aggressive-indent/aggressive-indent.el b/packages/aggressive-indent/aggressive-indent.el index 67c3af857..006114b65 100644 --- a/packages/aggressive-indent/aggressive-indent.el +++ b/packages/aggressive-indent/aggressive-indent.el @@ -4,7 +4,7 @@ ;; Author: Artur Malabarba ;; URL: https://github.com/Malabarba/aggressive-indent-mode -;; Version: 1.5 +;; Version: 1.5.3 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5")) ;; Keywords: indent lisp maint tools ;; Prefix: aggressive-indent @@ -190,14 +190,13 @@ change." (null (buffer-modified-p)) (and (boundp 'smerge-mode) smerge-mode) (let ((line (thing-at-point 'line))) - (when (stringp line) - (or (string-match "\\`[[:blank:]]*\n?\\'" line) - ;; If the user is starting to type a comment. - (and (stringp comment-start) - (string-match (concat "\\`[[:blank:]]*" - (substring comment-start 0 1) - "[[:blank:]]*$") - line))))) + (and (stringp line) + ;; If the user is starting to type a comment. + (stringp comment-start) + (string-match (concat "\\`[[:blank:]]*" + (substring comment-start 0 1) + "[[:blank:]]*$") + line))) (let ((sp (syntax-ppss))) ;; Comments. (or (and (not aggressive-indent-comments-too) (elt sp 4)) @@ -369,10 +368,25 @@ or messages." (setq aggressive-indent--changed-list (cdr aggressive-indent--changed-list)))))))))) +(defvar-local aggressive-indent--balanced-parens t + "Non-nil if the current-buffer has balanced parens.") + +(defun aggressive-indent--check-parens () + "Check if parens are balanced in the current buffer. +Store result in `aggressive-indent--balanced-parens'." + (setq aggressive-indent--balanced-parens + (save-excursion + (ignore-errors + (save-restriction + (narrow-to-defun) + (check-parens) + t))))) + (defun aggressive-indent--keep-track-of-changes (l r &rest _) "Store the limits (L and R) of each change in the buffer." (when aggressive-indent-mode - (push (list l r) aggressive-indent--changed-list))) + (push (list l r) aggressive-indent--changed-list) + (aggressive-indent--check-parens))) ;;; Minor modes ;;;###autoload @@ -394,11 +408,12 @@ or messages." (memq major-mode '(text-mode fundamental-mode)) buffer-read-only)) (aggressive-indent-mode -1) - ;; Should electric indent be ON or OFF? + ;; Should electric indent be ON or OFF? (if (or (eq aggressive-indent-dont-electric-modes t) (cl-member-if #'derived-mode-p aggressive-indent-dont-electric-modes)) (aggressive-indent--local-electric nil) (aggressive-indent--local-electric t)) + (aggressive-indent--check-parens) (add-hook 'after-change-functions #'aggressive-indent--keep-track-of-changes nil 'local) (add-hook 'post-command-hook #'aggressive-indent--indent-if-changed nil 'local)) ;; Clean the hooks