unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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).