[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 516a8c7 5/5: Merge commit 'c0a1e24ef39e2b0f388135c2ed8f8b4
From: |
Artur Malabarba |
Subject: |
[elpa] master 516a8c7 5/5: Merge commit 'c0a1e24ef39e2b0f388135c2ed8f8b419346337c' |
Date: |
Mon, 02 May 2016 02:12:49 +0000 |
branch: master
commit 516a8c79fdb5e833ce740eed6b1d5d7cca4a8992
Merge: e2fb73d c0a1e24
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>
Merge commit 'c0a1e24ef39e2b0f388135c2ed8f8b419346337c'
---
packages/aggressive-indent/aggressive-indent.el | 37 +++++++++++++++--------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/packages/aggressive-indent/aggressive-indent.el
b/packages/aggressive-indent/aggressive-indent.el
index 22647d1..481e7ef 100644
--- a/packages/aggressive-indent/aggressive-indent.el
+++ b/packages/aggressive-indent/aggressive-indent.el
@@ -4,7 +4,7 @@
;; Author: Artur Malabarba <address@hidden>
;; URL: https://github.com/Malabarba/aggressive-indent-mode
-;; Version: 1.6
+;; Version: 1.7
;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
;; Keywords: indent lisp maint tools
;; Prefix: aggressive-indent
@@ -349,8 +349,26 @@ or messages."
"List of (left right) limit of regions changed in the last command loop.")
(make-variable-buffer-local 'aggressive-indent--changed-list)
-(defvar-local aggressive-indent--balanced-parens t
+(defvar aggressive-indent--balanced-parens t
"Non-nil if the current-buffer has balanced parens.")
+(make-variable-buffer-local 'aggressive-indent--balanced-parens)
+
+(defun aggressive-indent--proccess-changed-list-and-indent ()
+ "Indent the regions in `aggressive-indent--changed-list'."
+ (let ((inhibit-modification-hooks t)
+ (inhibit-point-motion-hooks t)
+ (indent-function
+ (if (cl-member-if #'derived-mode-p
aggressive-indent-modes-to-prefer-defun)
+ #'aggressive-indent--softly-indent-defun
#'aggressive-indent--softly-indent-region-and-on)))
+ ;; Take the 10 most recent changes.
+ (let ((cell (nthcdr 10 aggressive-indent--changed-list)))
+ (when cell (setcdr cell nil)))
+ ;; (message "----------")
+ (while aggressive-indent--changed-list
+ ;; (message "%S" (car aggressive-indent--changed-list))
+ (apply indent-function (car aggressive-indent--changed-list))
+ (setq aggressive-indent--changed-list
+ (cdr aggressive-indent--changed-list)))))
(defun aggressive-indent--indent-if-changed ()
"Indent any region that changed in the last command loop."
@@ -361,15 +379,7 @@ or messages."
(aggressive-indent--run-user-hooks))
(while-no-input
(redisplay)
- (let ((inhibit-modification-hooks t)
- (inhibit-point-motion-hooks t)
- (indent-function
- (if (cl-member-if #'derived-mode-p
aggressive-indent-modes-to-prefer-defun)
- #'aggressive-indent--softly-indent-defun
#'aggressive-indent--softly-indent-region-and-on)))
- (while aggressive-indent--changed-list
- (apply indent-function (car aggressive-indent--changed-list))
- (setq aggressive-indent--changed-list
- (cdr aggressive-indent--changed-list))))))))))
+ (aggressive-indent--proccess-changed-list-and-indent)))))))
(defun aggressive-indent--check-parens ()
"Check if parens are balanced in the current buffer.
@@ -377,8 +387,7 @@ Store result in `aggressive-indent--balanced-parens'."
(setq aggressive-indent--balanced-parens
(save-excursion
(ignore-errors
- (check-parens)
- t))))
+ (zerop (car (syntax-ppss (point-max))))))))
(defun aggressive-indent--keep-track-of-changes (l r &rest _)
"Store the limits (L and R) of each change in the buffer."
@@ -413,9 +422,11 @@ Store result in `aggressive-indent--balanced-parens'."
(aggressive-indent--local-electric t))
(aggressive-indent--check-parens)
(add-hook 'after-change-functions
#'aggressive-indent--keep-track-of-changes nil 'local)
+ (add-hook 'before-save-hook
#'aggressive-indent--proccess-changed-list-and-indent nil 'local)
(add-hook 'post-command-hook #'aggressive-indent--indent-if-changed
nil 'local))
;; Clean the hooks
(remove-hook 'after-change-functions
#'aggressive-indent--keep-track-of-changes 'local)
+ (remove-hook 'before-save-hook
#'aggressive-indent--proccess-changed-list-and-indent 'local)
(remove-hook 'post-command-hook #'aggressive-indent--indent-if-changed
'local)
(remove-hook 'post-command-hook #'aggressive-indent--softly-indent-defun
'local)))