[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r108844: Speed up generate-new-buffer
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r108844: Speed up generate-new-buffer-name for invisible buffers (bug#1229) |
Date: |
Tue, 03 Jul 2012 13:47:32 -0400 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 108844
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2012-07-03 13:47:32 -0400
message:
Speed up generate-new-buffer-name for invisible buffers (bug#1229)
* src/buffer.c (Fgenerate_new_buffer_name):
Speed up finding a new buffer for invisible buffers.
* src/lisp.h (Frandom): Make it visible to C.
modified:
src/ChangeLog
src/buffer.c
src/lisp.h
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2012-07-03 16:35:53 +0000
+++ b/src/ChangeLog 2012-07-03 17:47:32 +0000
@@ -1,3 +1,9 @@
+2012-07-03 Glenn Morris <address@hidden>
+
+ * lisp.h (Frandom): Make it visible to C.
+ * buffer.c (Fgenerate_new_buffer_name): Speed up finding a new
+ buffer for invisible buffers. (Bug#1229)
+
2012-07-03 Dmitry Antipov <address@hidden>
Fix block vector allocation code to allow VECTOR_BLOCK_SIZE
=== modified file 'src/buffer.c'
--- a/src/buffer.c 2012-07-03 03:57:52 +0000
+++ b/src/buffer.c 2012-07-03 17:47:32 +0000
@@ -838,10 +838,14 @@
Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
\(starting at 2) until an unused name is found, and then return that name.
Optional second argument IGNORE specifies a name that is okay to use (if
-it is in the sequence to be tried) even if a buffer with that name exists. */)
+it is in the sequence to be tried) even if a buffer with that name exists.
+
+If NAME begins with a space (i.e., a buffer that is not normally
+visible to users), then if buffer NAME already exists a random number
+is first appended to NAME, to speed up finding a non-existent buffer. */)
(register Lisp_Object name, Lisp_Object ignore)
{
- register Lisp_Object gentemp, tem;
+ register Lisp_Object gentemp, tem, tem2;
ptrdiff_t count;
char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"];
@@ -854,11 +858,23 @@
if (NILP (tem))
return name;
+ if (!strncmp (SSDATA (name), " ", 1)) /* see bug#1229 */
+ {
+ /* Note fileio.c:make_temp_name does random differently. */
+ sprintf (number, "-%"pD"d", Frandom (make_number (999999)));
+ tem2 = concat2 (name, build_string (number));
+ tem = Fget_buffer (tem2);
+ if (NILP (tem))
+ return tem2;
+ }
+ else
+ tem2 = name;
+
count = 1;
while (1)
{
sprintf (number, "<%"pD"d>", ++count);
- gentemp = concat2 (name, build_string (number));
+ gentemp = concat2 (tem2, build_string (number));
tem = Fstring_equal (gentemp, ignore);
if (!NILP (tem))
return gentemp;
=== modified file 'src/lisp.h'
--- a/src/lisp.h 2012-07-03 14:37:55 +0000
+++ b/src/lisp.h 2012-07-03 17:47:32 +0000
@@ -2473,6 +2473,7 @@
EXFUN (Fremhash, 2);
EXFUN (Fidentity, 1);
+EXFUN (Frandom, 1);
EXFUN (Flength, 1);
EXFUN (Fappend, MANY);
EXFUN (Fconcat, MANY);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r108844: Speed up generate-new-buffer-name for invisible buffers (bug#1229),
Glenn Morris <=