aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog42
-rw-r--r--src/buffer.c5
-rw-r--r--src/fileio.c8
-rw-r--r--src/frame.c30
-rw-r--r--src/keyboard.c40
-rw-r--r--src/print.c10
-rw-r--r--src/search.c3
-rw-r--r--src/w32fns.c4
-rw-r--r--src/window.c16
9 files changed, 139 insertions, 19 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b3a9386da86..9765ec9403c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,45 @@
12004-07-17 Juanma Barranquero <lektu@terra.es>
2
3 * keyboard.c (not_single_kboard_state): Do nothing unless
4 MULTI_KBOARD is defined.
5
62004-07-17 Richard M. Stallman <rms@gnu.org>
7
8 * window.c (coordinates_in_window): Inside the window but outside
9 its box to the L or R, return ON_VERTICAL_BORDER.
10 (window_list_1): Rotate the list to start with WINDOW.
11
12 * print.c (print_preprocess): Test for print_depth at limit
13 before entering in being_printed.
14
15 * keyboard.c (not_single_kboard_state): New function.
16 (stuff_buffered_input): Now no-op only if no SIGTSTP.
17
18 * frame.c (Fdelete_frame): If we're in single_bboard_state on
19 this kboard, and we delete its last frame, go to any_kboard_state.
20
21 * buffer.c (syms_of_buffer) <transient-mark-mode>: Doc fix.
22
232004-07-15 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change)
24
25 * w32fns.c (Fx_file_dialog): Encode strings in system coding
26 system before passing them to OS functions for display.
27
282004-07-15 David Kastrup <dak@gnu.org>
29
30 * search.c (syms_of_search): Staticpro `saved_last_thing_searched'.
31 Apparently fixes an abort condition.
32
332004-07-14 Luc Teirlinck <teirllm@auburn.edu>
34
35 * fileio.c (Fvisited_file_modtime): Return a list of two integers,
36 instead of a cons.
37
382004-07-14 K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu>
39
40 * keyboard.c (echo_dash): Do nothing if there already is a dash
41 at the end of the echo string.
42
12004-07-12 Kim F. Storm <storm@cua.dk> 432004-07-12 Kim F. Storm <storm@cua.dk>
2 44
3 * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value 45 * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value
diff --git a/src/buffer.c b/src/buffer.c
index c5783ade2a0..f55ae7983f4 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5861,7 +5861,10 @@ all windows or just the selected window.
5861 5861
5862If the value is `lambda', that enables Transient Mark mode temporarily 5862If the value is `lambda', that enables Transient Mark mode temporarily
5863until the next buffer modification. If a command sets the value to `only', 5863until the next buffer modification. If a command sets the value to `only',
5864that enables Transient Mark mode for the following command only. */); 5864that enables Transient Mark mode for the following command only.
5865During that following command, the value of `transient-mark-mode'
5866is `identity'. If it is still `identity' at the end of that command,
5867it changes to nil. */);
5865 Vtransient_mark_mode = Qnil; 5868 Vtransient_mark_mode = Qnil;
5866 5869
5867 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only, 5870 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only,
diff --git a/src/fileio.c b/src/fileio.c
index 2a4d5fb230e..f81566a7656 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5630,13 +5630,17 @@ Next attempt to save will certainly not complain of a discrepancy. */)
5630DEFUN ("visited-file-modtime", Fvisited_file_modtime, 5630DEFUN ("visited-file-modtime", Fvisited_file_modtime,
5631 Svisited_file_modtime, 0, 0, 0, 5631 Svisited_file_modtime, 0, 0, 0,
5632 doc: /* Return the current buffer's recorded visited file modification time. 5632 doc: /* Return the current buffer's recorded visited file modification time.
5633The value is a list of the form (HIGH . LOW), like the time values 5633The value is a list of the form (HIGH LOW), like the time values
5634that `file-attributes' returns. If the current buffer has no recorded 5634that `file-attributes' returns. If the current buffer has no recorded
5635file modification time, this function returns 0. 5635file modification time, this function returns 0.
5636See Info node `(elisp)Modification Time' for more details. */) 5636See Info node `(elisp)Modification Time' for more details. */)
5637 () 5637 ()
5638{ 5638{
5639 return long_to_cons ((unsigned long) current_buffer->modtime); 5639 Lisp_Object tcons;
5640 tcons = long_to_cons ((unsigned long) current_buffer->modtime);
5641 if (CONSP (tcons))
5642 return list2 (XCAR (tcons), XCDR (tcons));
5643 return tcons;
5640} 5644}
5641 5645
5642DEFUN ("set-visited-file-modtime", Fset_visited_file_modtime, 5646DEFUN ("set-visited-file-modtime", Fset_visited_file_modtime,
diff --git a/src/frame.c b/src/frame.c
index 41ee5a64bd5..9a0563c6f76 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1553,6 +1553,36 @@ The functions are run with one arg, the frame to be deleted. */)
1553 } 1553 }
1554 } 1554 }
1555 1555
1556 /* If there's no other frame on the same kboard, get out of
1557 single-kboard state if we're in it for this kboard. */
1558 {
1559 Lisp_Object frames;
1560 /* Some frame we found on the same kboard, or nil if there are none. */
1561 Lisp_Object frame_on_same_kboard;
1562
1563 frame_on_same_kboard = Qnil;
1564
1565 for (frames = Vframe_list;
1566 CONSP (frames);
1567 frames = XCDR (frames))
1568 {
1569 Lisp_Object this;
1570 struct frame *f1;
1571
1572 this = XCAR (frames);
1573 if (!FRAMEP (this))
1574 abort ();
1575 f1 = XFRAME (this);
1576
1577 if (FRAME_KBOARD (f) == FRAME_KBOARD (f1))
1578 frame_on_same_kboard = this;
1579 }
1580
1581 if (NILP (frame_on_same_kboard))
1582 not_single_kboard_state (FRAME_KBOARD (f));
1583 }
1584
1585
1556 /* If we've deleted this keyboard's default_minibuffer_frame, try to 1586 /* If we've deleted this keyboard's default_minibuffer_frame, try to
1557 find another one. Prefer minibuffer-only frames, but also notice 1587 find another one. Prefer minibuffer-only frames, but also notice
1558 frames with other windows. */ 1588 frames with other windows. */
diff --git a/src/keyboard.c b/src/keyboard.c
index 3fc685d58c7..40a545180fe 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -791,6 +791,21 @@ echo_dash ()
791 == SCHARS (current_kboard->echo_string)) 791 == SCHARS (current_kboard->echo_string))
792 return; 792 return;
793 793
794 /* Do nothing if we have already put a dash at the end. */
795 if (SCHARS (current_kboard->echo_string) > 1)
796 {
797 Lisp_Object last_char, prev_char, idx;
798
799 idx = make_number (SCHARS (current_kboard->echo_string) - 2);
800 prev_char = Faref (current_kboard->echo_string, idx);
801
802 idx = make_number (SCHARS (current_kboard->echo_string) - 1);
803 last_char = Faref (current_kboard->echo_string, idx);
804
805 if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
806 return;
807 }
808
794 /* Put a dash at the end of the buffer temporarily, 809 /* Put a dash at the end of the buffer temporarily,
795 but make it go away when the next character is added. */ 810 but make it go away when the next character is added. */
796 current_kboard->echo_string = concat2 (current_kboard->echo_string, 811 current_kboard->echo_string = concat2 (current_kboard->echo_string,
@@ -1063,6 +1078,19 @@ single_kboard_state ()
1063#endif 1078#endif
1064} 1079}
1065 1080
1081/* If we're in single_kboard state for kboard KBOARD,
1082 get out of it. */
1083
1084void
1085not_single_kboard_state (kboard)
1086 KBOARD *kboard;
1087{
1088#ifdef MULTI_KBOARD
1089 if (kboard == current_kboard)
1090 single_kboard = 0;
1091#endif
1092}
1093
1066/* Maintain a stack of kboards, so other parts of Emacs 1094/* Maintain a stack of kboards, so other parts of Emacs
1067 can switch temporarily to the kboard of a given frame 1095 can switch temporarily to the kboard of a given frame
1068 and then revert to the previous status. */ 1096 and then revert to the previous status. */
@@ -10238,9 +10266,7 @@ void
10238stuff_buffered_input (stuffstring) 10266stuff_buffered_input (stuffstring)
10239 Lisp_Object stuffstring; 10267 Lisp_Object stuffstring;
10240{ 10268{
10241/* stuff_char works only in BSD, versions 4.2 and up. */ 10269#ifdef SIGTSTP /* stuff_char is defined if SIGTSTP. */
10242#ifdef BSD_SYSTEM
10243#ifndef BSD4_1
10244 register unsigned char *p; 10270 register unsigned char *p;
10245 10271
10246 if (STRINGP (stuffstring)) 10272 if (STRINGP (stuffstring))
@@ -10256,7 +10282,10 @@ stuff_buffered_input (stuffstring)
10256 10282
10257 /* Anything we have read ahead, put back for the shell to read. */ 10283 /* Anything we have read ahead, put back for the shell to read. */
10258 /* ?? What should this do when we have multiple keyboards?? 10284 /* ?? What should this do when we have multiple keyboards??
10259 Should we ignore anything that was typed in at the "wrong" kboard? */ 10285 Should we ignore anything that was typed in at the "wrong" kboard?
10286
10287 rms: we should stuff everything back into the kboard
10288 it came from. */
10260 for (; kbd_fetch_ptr != kbd_store_ptr; kbd_fetch_ptr++) 10289 for (; kbd_fetch_ptr != kbd_store_ptr; kbd_fetch_ptr++)
10261 { 10290 {
10262 10291
@@ -10269,8 +10298,7 @@ stuff_buffered_input (stuffstring)
10269 } 10298 }
10270 10299
10271 input_pending = 0; 10300 input_pending = 0;
10272#endif 10301#endif /* SIGTSTP */
10273#endif /* BSD_SYSTEM and not BSD4_1 */
10274} 10302}
10275 10303
10276void 10304void
diff --git a/src/print.c b/src/print.c
index 0abd30b5ce0..5a0f7fe6220 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1284,6 +1284,11 @@ print_preprocess (obj)
1284 int loop_count = 0; 1284 int loop_count = 0;
1285 Lisp_Object halftail; 1285 Lisp_Object halftail;
1286 1286
1287 /* Give up if we go so deep that print_object will get an error. */
1288 /* See similar code in print_object. */
1289 if (print_depth >= PRINT_CIRCLE)
1290 return;
1291
1287 /* Avoid infinite recursion for circular nested structure 1292 /* Avoid infinite recursion for circular nested structure
1288 in the case where Vprint_circle is nil. */ 1293 in the case where Vprint_circle is nil. */
1289 if (NILP (Vprint_circle)) 1294 if (NILP (Vprint_circle))
@@ -1294,11 +1299,6 @@ print_preprocess (obj)
1294 being_printed[print_depth] = obj; 1299 being_printed[print_depth] = obj;
1295 } 1300 }
1296 1301
1297 /* Give up if we go so deep that print_object will get an error. */
1298 /* See similar code in print_object. */
1299 if (print_depth >= PRINT_CIRCLE)
1300 return;
1301
1302 print_depth++; 1302 print_depth++;
1303 halftail = obj; 1303 halftail = obj;
1304 1304
diff --git a/src/search.c b/src/search.c
index 169baf05d55..0375f353dd2 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2974,6 +2974,9 @@ syms_of_search ()
2974 last_thing_searched = Qnil; 2974 last_thing_searched = Qnil;
2975 staticpro (&last_thing_searched); 2975 staticpro (&last_thing_searched);
2976 2976
2977 saved_last_thing_searched = Qnil;
2978 staticpro (&saved_last_thing_searched);
2979
2977 defsubr (&Slooking_at); 2980 defsubr (&Slooking_at);
2978 defsubr (&Sposix_looking_at); 2981 defsubr (&Sposix_looking_at);
2979 defsubr (&Sstring_match); 2982 defsubr (&Sstring_match);
diff --git a/src/w32fns.c b/src/w32fns.c
index b12bd7be28b..d5ba6e9b078 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -7735,14 +7735,14 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */)
7735 /* Create the dialog with PROMPT as title, using DIR as initial 7735 /* Create the dialog with PROMPT as title, using DIR as initial
7736 directory and using "*" as pattern. */ 7736 directory and using "*" as pattern. */
7737 dir = Fexpand_file_name (dir, Qnil); 7737 dir = Fexpand_file_name (dir, Qnil);
7738 strncpy (init_dir, SDATA (dir), MAX_PATH); 7738 strncpy (init_dir, SDATA (ENCODE_SYSTEM (dir)), MAX_PATH);
7739 init_dir[MAX_PATH] = '\0'; 7739 init_dir[MAX_PATH] = '\0';
7740 unixtodos_filename (init_dir); 7740 unixtodos_filename (init_dir);
7741 7741
7742 if (STRINGP (default_filename)) 7742 if (STRINGP (default_filename))
7743 { 7743 {
7744 char *file_name_only; 7744 char *file_name_only;
7745 char *full_path_name = SDATA (default_filename); 7745 char *full_path_name = SDATA (ENCODE_SYSTEM (default_filename));
7746 7746
7747 unixtodos_filename (full_path_name); 7747 unixtodos_filename (full_path_name);
7748 7748
diff --git a/src/window.c b/src/window.c
index b470b705397..0e318b039a4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -672,7 +672,7 @@ coordinates_in_window (w, x, y)
672 672
673 /* Outside any interesting column? */ 673 /* Outside any interesting column? */
674 if (*x < left_x || *x > right_x) 674 if (*x < left_x || *x > right_x)
675 return ON_NOTHING; 675 return ON_VERTICAL_BORDER;
676 676
677 lmargin_width = window_box_width (w, LEFT_MARGIN_AREA); 677 lmargin_width = window_box_width (w, LEFT_MARGIN_AREA);
678 rmargin_width = window_box_width (w, RIGHT_MARGIN_AREA); 678 rmargin_width = window_box_width (w, RIGHT_MARGIN_AREA);
@@ -1801,7 +1801,7 @@ static Lisp_Object
1801window_list_1 (window, minibuf, all_frames) 1801window_list_1 (window, minibuf, all_frames)
1802 Lisp_Object window, minibuf, all_frames; 1802 Lisp_Object window, minibuf, all_frames;
1803{ 1803{
1804 Lisp_Object tail, list; 1804 Lisp_Object tail, list, rest;
1805 1805
1806 decode_next_window_args (&window, &minibuf, &all_frames); 1806 decode_next_window_args (&window, &minibuf, &all_frames);
1807 list = Qnil; 1807 list = Qnil;
@@ -1810,7 +1810,17 @@ window_list_1 (window, minibuf, all_frames)
1810 if (candidate_window_p (XCAR (tail), window, minibuf, all_frames)) 1810 if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
1811 list = Fcons (XCAR (tail), list); 1811 list = Fcons (XCAR (tail), list);
1812 1812
1813 return Fnreverse (list); 1813 /* Rotate the list to start with WINDOW. */
1814 list = Fnreverse (list);
1815 rest = Fmemq (window, list);
1816 if (!NILP (rest) && !EQ (rest, list))
1817 {
1818 for (tail = list; XCDR (tail) != rest; tail = XCDR (tail))
1819 ;
1820 XSETCDR (tail, Qnil);
1821 list = nconc2 (rest, list);
1822 }
1823 return list;
1814} 1824}
1815 1825
1816 1826