From: "Simen Heggestøyl" <simenheg@runbox.com>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: emacs-devel <emacs-devel@gnu.org>,
"Kévin Le Gouguec" <kevin.legouguec@gmail.com>
Subject: Re: New feature in project.el: Remembering the previously used projects
Date: Sat, 30 May 2020 08:05:25 +0200 [thread overview]
Message-ID: <34310.7516107679$1590818781@news.gmane.org> (raw)
In-Reply-To: 7b8fe2bf-3d1e-65f8-0fdb-111bd39490b5@yandex.ru
Dmitry Gutov <dgutov@yandex.ru> writes:
> And another thought: maybe we should only add a project to the project
> list if user interaction happened (i.e. going through
> project-prompt-project-dir). Simen, what do you think?
>
> The patch below mostly does that, except it misses the case when a
> directory was selected from project-switch-project. [...]
Hm, I think it misses all cases when project-switch-project is used,
since project-current will find the project using
project--find-in-directory (project-switch-project already did the
prompting part).
Maybe a simple solution could be to only write to the file when the
addition caused the project list to change? I think it's a good change
regardless, but is it enough to fix your issue, Kévin?
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 1f2a4e8471..a2ef84e444 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -751,14 +751,15 @@ project--write-project-list
(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.
Dmitry Gutov <dgutov@yandex.ru> writes:
> Alternatively, we could defer writing the file until Emacs is being
> closed (and do that in kill-emacs-hook).
Maybe. I think doing it more eagerly has some advantages though if we
can make it work:
- Launching a new Emacs session while another one is running will use
the latest project list.
- If there's any problem writing to the file I imagine it's better to be
notified about it up front rather than at the time Emacs is killed.
-- Simen
next prev parent reply other threads:[~2020-05-30 6:05 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-28 20:06 New feature in project.el: Remembering the previously used projects Dmitry Gutov
2020-05-28 23:05 ` Basil L. Contovounesios
2020-05-28 23:29 ` Dmitry Gutov
2020-05-29 7:31 ` Philip K.
2020-05-29 13:51 ` Dmitry Gutov
2020-05-29 15:54 ` Simen Heggestøyl
[not found] ` <871rn2ivne.fsf@simenheg@gmail.com>
2020-05-30 10:29 ` Philip K.
2020-06-02 17:04 ` Simen Heggestøyl
[not found] ` <5ed68784.1c69fb81.61518.35eeSMTPIN_ADDED_BROKEN@mx.google.com>
2020-06-03 11:28 ` Basil L. Contovounesios
2020-05-30 12:38 ` Dmitry Gutov
2020-06-02 17:14 ` Simen Heggestøyl
2020-05-30 21:57 ` Juri Linkov
2020-05-30 23:39 ` Dmitry Gutov
2020-06-01 23:01 ` Juri Linkov
2020-06-02 21:34 ` Dmitry Gutov
2020-06-03 20:13 ` Dmitry Gutov
2020-06-03 22:40 ` Juri Linkov
2020-06-03 23:13 ` Dmitry Gutov
2020-06-04 21:55 ` Juri Linkov
2020-06-04 22:37 ` Dmitry Gutov
2020-06-05 8:33 ` Philip K.
2020-06-05 8:42 ` Simen Heggestøyl
2020-06-05 11:44 ` Dmitry Gutov
2020-06-05 11:59 ` Philip K.
2020-06-05 13:59 ` Philip K.
2020-06-05 17:20 ` Dmitry Gutov
2020-06-06 1:24 ` Jamie Beardslee
2020-12-19 22:18 ` Dmitry Gutov
2020-06-06 23:46 ` Juri Linkov
2020-06-07 0:40 ` Dmitry Gutov
2020-06-07 22:38 ` Juri Linkov
2020-06-02 17:43 ` Simen Heggestøyl
[not found] ` <87a71l2wjf.fsf@simenheg@gmail.com>
2020-06-02 17:57 ` Dmitry Gutov
2020-06-03 22:34 ` Juri Linkov
2020-06-03 23:17 ` Dmitry Gutov
2020-06-04 18:33 ` Simen Heggestøyl
2020-06-04 21:58 ` Juri Linkov
[not found] ` <5ed68fe1.1c69fb81.45e50.0c7cSMTPIN_ADDED_BROKEN@mx.google.com>
2020-06-03 11:28 ` Basil L. Contovounesios
2020-05-31 13:00 ` Dmitry Gutov
2020-06-02 17:51 ` Simen Heggestøyl
[not found] ` <87k10picej.fsf@simenheg@gmail.com>
2020-06-02 21:33 ` Dmitry Gutov
[not found] ` <5ed13064.1c69fb81.4bf5e.dc8eSMTPIN_ADDED_BROKEN@mx.google.com>
2020-06-03 11:28 ` Basil L. Contovounesios
2020-06-03 11:27 ` Basil L. Contovounesios
2020-06-03 11:47 ` Dmitry Gutov
2020-06-03 13:38 ` Basil L. Contovounesios
2020-06-03 19:15 ` Simen Heggestøyl
[not found] ` <87lfl4x8p0.fsf@simenheg@gmail.com>
2020-06-03 20:11 ` Dmitry Gutov
2020-06-04 18:19 ` Simen Heggestøyl
2020-05-29 22:55 ` Kévin Le Gouguec
2020-05-29 23:22 ` Dmitry Gutov
2020-05-29 23:31 ` Dmitry Gutov
2020-05-30 0:42 ` Dmitry Gutov
2020-05-30 6:05 ` Simen Heggestøyl [this message]
[not found] ` <5ed1f7ae.1c69fb81.9b99b.4ce7SMTPIN_ADDED_BROKEN@mx.google.com>
2020-05-30 12:42 ` Kévin Le Gouguec
2020-05-30 13:17 ` Dmitry Gutov
2020-05-30 17:05 ` Dmitry Gutov
2020-05-30 18:29 ` Kévin Le Gouguec
2020-06-02 17:29 ` Simen Heggestøyl
[not found] ` <877dwuc5zu.fsf@simenheg@gmail.com>
2020-05-30 13:21 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='34310.7516107679$1590818781@news.gmane.org' \
--to=simenheg@runbox.com \
--cc=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=kevin.legouguec@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).