* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
@ 2014-10-25 15:07 Dani Moncayo
2015-03-14 4:12 ` Daniel Lopez
0 siblings, 1 reply; 9+ messages in thread
From: Dani Moncayo @ 2014-10-25 15:07 UTC (permalink / raw)
To: 18828
Recipe:
0. emacs -Q
1. Eval: (setq create-lockfiles nil)
2. Visit some file
3. With another program, update the visited file.
4. Try to make some change to the buffer.
------------
Without step 1, Emacs does TRT, i.e., it detects that I'm trying to
make the first change to a buffer whose file has already changed since
it was visited, so it warns me with:
foo changed on disk; really edit the buffer? (y, n, r or C-h)
But with step 1, Emacs doesn't warn me until I try to save the buffer;
then it shows me this:
foo has changed since visited or saved. Save anyway? (yes or no)
(BTW: the above message does not get archived in the *Messages*
buffer. Why not? I think it should, as with the first warning)
Well, I think that Emacs should warn me on step 4, regardles of
whether I did step 1 or not.
I set `create-lockfiles' to nil in my init file because I don't want
Emacs to create temporary files of any kind, but obviously I want to
be warned whenever I am about to change a buffer whose file has
changed on disk after it was last read by Emacs.
I observe this bug both with the last 24.4 release and with the trunk.
In GNU Emacs 24.4.1 (i686-pc-mingw32)
of 2014-10-20 on LEG570
Windowing system distributor `Microsoft Corp.', version 6.3.9600
Important settings:
value of $LANG: ENU
locale-coding-system: cp1252
--
Dani Moncayo
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2014-10-25 15:07 bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil Dani Moncayo
@ 2015-03-14 4:12 ` Daniel Lopez
2015-04-29 9:59 ` Dani Moncayo
0 siblings, 1 reply; 9+ messages in thread
From: Daniel Lopez @ 2015-03-14 4:12 UTC (permalink / raw)
To: 18828
I've noticed this too.
(setq create-lockfiles nil) seems to turn off both the creation of
lockfiles (which are used to alert you if you start to modify a file
which another Emacs session concurrently has open in a modified, unsaved
state); and the feature of prompting you if you start to modify a file
which has changed on disk from what is visible in the buffer since you
opened or last reverted it.
I find myself wanting the latter feature but not the former. In
particular, the latter feature will detect if the file contents have
been changed by another application, whereas the lockfiles feature will
only detect if the file is currently being edited by another instance of
Emacs. So the 'create-lockfiles' variable should be limited to only
control the former feature, and maybe there should be another setting
for turning the latter feature on and off, though I wouldn't want to
turn if off myself.
Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-03-14 4:12 ` Daniel Lopez
@ 2015-04-29 9:59 ` Dani Moncayo
2015-04-29 15:44 ` Glenn Morris
0 siblings, 1 reply; 9+ messages in thread
From: Dani Moncayo @ 2015-04-29 9:59 UTC (permalink / raw)
To: 18828
Ping?
--
Dani Moncayo "looking forward to the fix for this bug"
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-04-29 9:59 ` Dani Moncayo
@ 2015-04-29 15:44 ` Glenn Morris
2015-04-29 15:53 ` Dani Moncayo
0 siblings, 1 reply; 9+ messages in thread
From: Glenn Morris @ 2015-04-29 15:44 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 18828
Dani Moncayo wrote:
> Ping?
Don't set create-lockfiles to nil?
That's the traditional mechanism by which Emacs manages this stuff.
Making it work with that feature disabled is not a high priority.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-04-29 15:44 ` Glenn Morris
@ 2015-04-29 15:53 ` Dani Moncayo
2015-04-29 15:57 ` Glenn Morris
0 siblings, 1 reply; 9+ messages in thread
From: Dani Moncayo @ 2015-04-29 15:53 UTC (permalink / raw)
To: Glenn Morris; +Cc: 18828
>> Ping?
>
> Don't set create-lockfiles to nil?
> That's the traditional mechanism by which Emacs manages this stuff.
Well, that's not what some users (like myself) may want.
I don't like those temporary files, specially on auto-sync
directories (e.g. dropbox, google drive, etc), for obvious
reasons.
> Making it work with that feature disabled is not a high priority.
Ok. Thanks.
--
Dani Moncayo
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-04-29 15:53 ` Dani Moncayo
@ 2015-04-29 15:57 ` Glenn Morris
2015-04-29 16:16 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Glenn Morris @ 2015-04-29 15:57 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 18828
Dani Moncayo wrote:
>> Don't set create-lockfiles to nil?
>> That's the traditional mechanism by which Emacs manages this stuff.
>
> Well, that's not what some users (like myself) may want.
Can only fall back to "patches welcome" then. :(
Though sadly we cannot promise to apply patches in a timely fashion. :(
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-04-29 15:57 ` Glenn Morris
@ 2015-04-29 16:16 ` Eli Zaretskii
2015-05-04 21:12 ` Dani Moncayo
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2015-04-29 16:16 UTC (permalink / raw)
To: Glenn Morris; +Cc: 18828
> From: Glenn Morris <rgm@gnu.org>
> Date: Wed, 29 Apr 2015 11:57:30 -0400
> Cc: 18828@debbugs.gnu.org
>
> Dani Moncayo wrote:
>
> >> Don't set create-lockfiles to nil?
> >> That's the traditional mechanism by which Emacs manages this stuff.
> >
> > Well, that's not what some users (like myself) may want.
>
> Can only fall back to "patches welcome" then. :(
Here you go (if no one objects, I will push this in a few days):
--- src/filelock.c~0 2015-01-26 14:45:50 +0200
+++ src/filelock.c 2015-04-29 13:46:42 +0300
@@ -669,10 +669,6 @@ lock_file (Lisp_Object fn)
struct gcpro gcpro1;
USE_SAFE_ALLOCA;
- /* Don't do locking if the user has opted out. */
- if (! create_lockfiles)
- return;
-
/* Don't do locking while dumping Emacs.
Uncompressing wtmp files uses call-process, which does not work
in an uninitialized Emacs. */
@@ -690,9 +686,6 @@ lock_file (Lisp_Object fn)
#endif
encoded_fn = ENCODE_FILE (fn);
- /* Create the name of the lock-file for file fn */
- MAKE_LOCK_NAME (lfname, encoded_fn);
-
/* See if this file is visited and has changed on disk since it was
visited. */
{
@@ -707,27 +700,35 @@ lock_file (Lisp_Object fn)
}
- /* Try to lock the lock. */
- if (0 < lock_if_free (&lock_info, lfname))
+ /* Don't do locking if the user has opted out. */
+ if (create_lockfiles)
{
- /* Someone else has the lock. Consider breaking it. */
- Lisp_Object attack;
- char *dot = lock_info.dot;
- ptrdiff_t pidlen = lock_info.colon - (dot + 1);
- static char const replacement[] = " (pid ";
- int replacementlen = sizeof replacement - 1;
- memmove (dot + replacementlen, dot + 1, pidlen);
- strcpy (dot + replacementlen + pidlen, ")");
- memcpy (dot, replacement, replacementlen);
- attack = call2 (intern ("ask-user-about-lock"), fn,
- build_string (lock_info.user));
- /* Take the lock if the user said so. */
- if (!NILP (attack))
- lock_file_1 (lfname, 1);
+
+ /* Create the name of the lock-file for file fn */
+ MAKE_LOCK_NAME (lfname, encoded_fn);
+
+ /* Try to lock the lock. */
+ if (0 < lock_if_free (&lock_info, lfname))
+ {
+ /* Someone else has the lock. Consider breaking it. */
+ Lisp_Object attack;
+ char *dot = lock_info.dot;
+ ptrdiff_t pidlen = lock_info.colon - (dot + 1);
+ static char const replacement[] = " (pid ";
+ int replacementlen = sizeof replacement - 1;
+ memmove (dot + replacementlen, dot + 1, pidlen);
+ strcpy (dot + replacementlen + pidlen, ")");
+ memcpy (dot, replacement, replacementlen);
+ attack = call2 (intern ("ask-user-about-lock"), fn,
+ build_string (lock_info.user));
+ /* Take the lock if the user said so. */
+ if (!NILP (attack))
+ lock_file_1 (lfname, 1);
+ }
+ SAFE_FREE ();
}
UNGCPRO;
- SAFE_FREE ();
}
void
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-04-29 16:16 ` Eli Zaretskii
@ 2015-05-04 21:12 ` Dani Moncayo
2015-05-08 9:22 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Dani Moncayo @ 2015-05-04 21:12 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 18828
> Here you go (if no one objects, I will push this in a few days):
Hi Eli,
I've tested your patch and seems to fix the problem.
Thank you so much.
--
Dani Moncayo "looking forward to this commit"
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil
2015-05-04 21:12 ` Dani Moncayo
@ 2015-05-08 9:22 ` Eli Zaretskii
0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2015-05-08 9:22 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 18828-done
> Date: Mon, 4 May 2015 23:12:54 +0200
> From: Dani Moncayo <dmoncayo@gmail.com>
> Cc: 18828@debbugs.gnu.org
>
> > Here you go (if no one objects, I will push this in a few days):
>
> Hi Eli,
>
> I've tested your patch and seems to fix the problem.
>
> Thank you so much.
Thanks, I pushed it.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-05-08 9:22 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-25 15:07 bug#18828: 24.4; Early collision warning when 'create-lockfiles' is set to nil Dani Moncayo
2015-03-14 4:12 ` Daniel Lopez
2015-04-29 9:59 ` Dani Moncayo
2015-04-29 15:44 ` Glenn Morris
2015-04-29 15:53 ` Dani Moncayo
2015-04-29 15:57 ` Glenn Morris
2015-04-29 16:16 ` Eli Zaretskii
2015-05-04 21:12 ` Dani Moncayo
2015-05-08 9:22 ` Eli Zaretskii
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).