summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimen Heggestøyl <simenheg@gmail.com>2020-06-02 19:20:14 +0200
committerSimen Heggestøyl <simenheg@gmail.com>2020-06-02 19:27:55 +0200
commit9afcf2bd39ceb2988ed516efa0a474137fb30f74 (patch)
tree3956ad12964ed5c0a2dd472dd7886f020873c87a
parente7065459d96498163e737c0c8e45e5dc2412f181 (diff)
downloademacs-9afcf2bd39ceb2988ed516efa0a474137fb30f74.tar.gz
Write project list to file only when changed
* lisp/progmodes/project.el (project--add-to-project-list-front): Write the project list to file only when it has changed.
-rw-r--r--lisp/progmodes/project.el13
1 files changed, 7 insertions, 6 deletions
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 314918901ea..0051a84ff84 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -771,14 +771,15 @@ Arguments the same as in `compile'."
(write-region nil nil filename nil 'silent))))
(defun project--add-to-project-list-front (pr)
- "Add project PR to the front of the project list and save it.
-Return PR."
+ "Add project PR to the front of the project list.
+Save the result to disk if the project list was changed."
(project--ensure-read-project-list)
- (let ((dir (project-root pr)))
+ (let* ((dir (project-root pr))
+ (do-write (not (equal (car project--list) dir))))
(setq project--list (delete dir project--list))
- (push dir project--list))
- (project--write-project-list)
- pr)
+ (push dir project--list)
+ (when do-write
+ (project--write-project-list))))
(defun project--remove-from-project-list (pr-dir)
"Remove directory PR-DIR from the project list.