aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog35
-rw-r--r--src/alloc.c10
-rw-r--r--src/atimer.h2
-rw-r--r--src/coding.c3
-rw-r--r--src/editfns.c2
-rw-r--r--src/lisp.h2
-rw-r--r--src/lread.c2
-rw-r--r--src/textprop.c16
-rw-r--r--src/xsettings.c34
9 files changed, 87 insertions, 19 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e1d2ba440ab..5589b7f34a2 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,38 @@
12010-01-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2
3 * lisp.h (make_pure_string): String pointer arg now points to const.
4
5 * alloc.c (find_string_data_in_pure, make_pure_string): String pointer
6 args now point to const.
7
82010-01-22 Eli Zaretskii <eliz@gnu.org>
9
10 * lread.c (Fload): Don't treat files without .elc extension as
11 byte-compiled if they are ``magic'', i.e. `openp' returned -2 for
12 them. (bug#5303)
13
142010-01-20 Kenichi Handa <handa@m17n.org>
15
16 * coding.c (consume_chars): If ! multibyte and the encoder is ccl,
17 treat the source as actual byte sequence.
18
192010-01-19 Alan Mackenzie <acm@muc.de>
20
21 Fix spurious before-change-functions invocation from (insert ?\n).
22 * textprop.c (set_text_properties): rename parameter
23 `signal_after_change_p' to `coherent_change_p', and make the
24 invocation of `modify_region' conditional on it.
25
262010-01-19 Jan Djärv <jan.h.d@swipnet.se>
27
28 * xsettings.c (apply_xft_settings): Save settings in Vxft_settings
29 for debug purpose.
30 (syms_of_xsettings): Declare xft-settings.
31
322010-01-18 Chong Yidong <cyd@stupidchicken.com>
33
34 * editfns.c (Fcurrent_time_string): Doc fix (Bug#5408).
35
12010-01-16 Stefan Monnier <monnier@iro.umontreal.ca> 362010-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
2 37
3 * xterm.c (event_handler_gdk): Block input (Bug#5037). 38 * xterm.c (event_handler_gdk): Block input (Bug#5037).
diff --git a/src/alloc.c b/src/alloc.c
index 3c48f8762f8..9a935cc8952 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4725,11 +4725,11 @@ check_pure_size ()
4725 4725
4726static char * 4726static char *
4727find_string_data_in_pure (data, nbytes) 4727find_string_data_in_pure (data, nbytes)
4728 char *data; 4728 const char *data;
4729 int nbytes; 4729 int nbytes;
4730{ 4730{
4731 int i, skip, bm_skip[256], last_char_skip, infinity, start, start_max; 4731 int i, skip, bm_skip[256], last_char_skip, infinity, start, start_max;
4732 unsigned char *p; 4732 const unsigned char *p;
4733 char *non_lisp_beg; 4733 char *non_lisp_beg;
4734 4734
4735 if (pure_bytes_used_non_lisp < nbytes + 1) 4735 if (pure_bytes_used_non_lisp < nbytes + 1)
@@ -4740,7 +4740,7 @@ find_string_data_in_pure (data, nbytes)
4740 for (i = 0; i < 256; i++) 4740 for (i = 0; i < 256; i++)
4741 bm_skip[i] = skip; 4741 bm_skip[i] = skip;
4742 4742
4743 p = (unsigned char *) data; 4743 p = (const unsigned char *) data;
4744 while (--skip > 0) 4744 while (--skip > 0)
4745 bm_skip[*p++] = skip; 4745 bm_skip[*p++] = skip;
4746 4746
@@ -4754,7 +4754,7 @@ find_string_data_in_pure (data, nbytes)
4754 infinity = pure_bytes_used_non_lisp + 1; 4754 infinity = pure_bytes_used_non_lisp + 1;
4755 bm_skip['\0'] = infinity; 4755 bm_skip['\0'] = infinity;
4756 4756
4757 p = (unsigned char *) non_lisp_beg + nbytes; 4757 p = (const unsigned char *) non_lisp_beg + nbytes;
4758 start = 0; 4758 start = 0;
4759 do 4759 do
4760 { 4760 {
@@ -4796,7 +4796,7 @@ find_string_data_in_pure (data, nbytes)
4796 4796
4797Lisp_Object 4797Lisp_Object
4798make_pure_string (data, nchars, nbytes, multibyte) 4798make_pure_string (data, nchars, nbytes, multibyte)
4799 char *data; 4799 const char *data;
4800 int nchars, nbytes; 4800 int nchars, nbytes;
4801 int multibyte; 4801 int multibyte;
4802{ 4802{
diff --git a/src/atimer.h b/src/atimer.h
index 5ea1197e66d..fd354caf54d 100644
--- a/src/atimer.h
+++ b/src/atimer.h
@@ -43,7 +43,7 @@ enum atimer_type
43 /* Timer is ripe at now plus an offset. */ 43 /* Timer is ripe at now plus an offset. */
44 ATIMER_RELATIVE, 44 ATIMER_RELATIVE,
45 45
46 /* Timer runs continously. */ 46 /* Timer runs continuously. */
47 ATIMER_CONTINUOUS 47 ATIMER_CONTINUOUS
48}; 48};
49 49
diff --git a/src/coding.c b/src/coding.c
index b3a51eb0c4c..935d32e6a58 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -7417,7 +7417,8 @@ consume_chars (coding, translation_table, max_lookup)
7417 { 7417 {
7418 EMACS_INT bytes; 7418 EMACS_INT bytes;
7419 7419
7420 if (coding->encoder == encode_coding_raw_text) 7420 if (coding->encoder == encode_coding_raw_text
7421 || coding->encoder == encode_coding_ccl)
7421 c = *src++, pos++; 7422 c = *src++, pos++;
7422 else if ((bytes = MULTIBYTE_LENGTH (src, src_end)) > 0) 7423 else if ((bytes = MULTIBYTE_LENGTH (src, src_end)) > 0)
7423 c = STRING_CHAR_ADVANCE_NO_UNIFY (src), pos += bytes; 7424 c = STRING_CHAR_ADVANCE_NO_UNIFY (src), pos += bytes;
diff --git a/src/editfns.c b/src/editfns.c
index 00ac0ca0fa9..093f141bff2 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1897,7 +1897,7 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
1897} 1897}
1898 1898
1899DEFUN ("current-time-string", Fcurrent_time_string, Scurrent_time_string, 0, 1, 0, 1899DEFUN ("current-time-string", Fcurrent_time_string, Scurrent_time_string, 0, 1, 0,
1900 doc: /* Return the current time, as a human-readable string. 1900 doc: /* Return the current local time, as a human-readable string.
1901Programs can use this function to decode a time, 1901Programs can use this function to decode a time,
1902since the number of columns in each field is fixed 1902since the number of columns in each field is fixed
1903if the year is in the range 1000-9999. 1903if the year is in the range 1000-9999.
diff --git a/src/lisp.h b/src/lisp.h
index 5ea0303976d..7032a3f48f4 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2686,7 +2686,7 @@ extern Lisp_Object make_uninit_multibyte_string P_ ((int, int));
2686extern Lisp_Object make_string_from_bytes P_ ((const char *, int, int)); 2686extern Lisp_Object make_string_from_bytes P_ ((const char *, int, int));
2687extern Lisp_Object make_specified_string P_ ((const char *, int, int, int)); 2687extern Lisp_Object make_specified_string P_ ((const char *, int, int, int));
2688EXFUN (Fpurecopy, 1); 2688EXFUN (Fpurecopy, 1);
2689extern Lisp_Object make_pure_string P_ ((char *, int, int, int)); 2689extern Lisp_Object make_pure_string P_ ((const char *, int, int, int));
2690extern Lisp_Object make_pure_c_string (const char *data); 2690extern Lisp_Object make_pure_c_string (const char *data);
2691extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object)); 2691extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object));
2692extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); 2692extern Lisp_Object make_pure_vector P_ ((EMACS_INT));
diff --git a/src/lread.c b/src/lread.c
index db425b82299..ba9d5378104 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1155,7 +1155,7 @@ Return t if the file exists and loads successfully. */)
1155 1155
1156 if (!bcmp (SDATA (found) + SBYTES (found) - 4, 1156 if (!bcmp (SDATA (found) + SBYTES (found) - 4,
1157 ".elc", 4) 1157 ".elc", 4)
1158 || (version = safe_to_load_p (fd)) > 0) 1158 || (fd >= 0 && (version = safe_to_load_p (fd)) > 0))
1159 /* Load .elc files directly, but not when they are 1159 /* Load .elc files directly, but not when they are
1160 remote and have no handler! */ 1160 remote and have no handler! */
1161 { 1161 {
diff --git a/src/textprop.c b/src/textprop.c
index fee73321deb..83d09cce558 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -1346,13 +1346,15 @@ the designated part of OBJECT. */)
1346/* Replace properties of text from START to END with new list of 1346/* Replace properties of text from START to END with new list of
1347 properties PROPERTIES. OBJECT is the buffer or string containing 1347 properties PROPERTIES. OBJECT is the buffer or string containing
1348 the text. OBJECT nil means use the current buffer. 1348 the text. OBJECT nil means use the current buffer.
1349 SIGNAL_AFTER_CHANGE_P nil means don't signal after changes. Value 1349 COHERENT_CHANGE_P nil means this is being called as an internal
1350 is nil if the function _detected_ that it did not replace any 1350 subroutine, rather than as a change primitive with checking of
1351 properties, non-nil otherwise. */ 1351 read-only, invoking change hooks, etc.. Value is nil if the
1352 function _detected_ that it did not replace any properties, non-nil
1353 otherwise. */
1352 1354
1353Lisp_Object 1355Lisp_Object
1354set_text_properties (start, end, properties, object, signal_after_change_p) 1356set_text_properties (start, end, properties, object, coherent_change_p)
1355 Lisp_Object start, end, properties, object, signal_after_change_p; 1357 Lisp_Object start, end, properties, object, coherent_change_p;
1356{ 1358{
1357 register INTERVAL i; 1359 register INTERVAL i;
1358 Lisp_Object ostart, oend; 1360 Lisp_Object ostart, oend;
@@ -1397,12 +1399,12 @@ set_text_properties (start, end, properties, object, signal_after_change_p)
1397 return Qnil; 1399 return Qnil;
1398 } 1400 }
1399 1401
1400 if (BUFFERP (object)) 1402 if (BUFFERP (object) && !NILP (coherent_change_p))
1401 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); 1403 modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
1402 1404
1403 set_text_properties_1 (start, end, properties, object, i); 1405 set_text_properties_1 (start, end, properties, object, i);
1404 1406
1405 if (BUFFERP (object) && !NILP (signal_after_change_p)) 1407 if (BUFFERP (object) && !NILP (coherent_change_p))
1406 signal_after_change (XINT (start), XINT (end) - XINT (start), 1408 signal_after_change (XINT (start), XINT (end) - XINT (start),
1407 XINT (end) - XINT (start)); 1409 XINT (end) - XINT (start));
1408 return Qt; 1410 return Qt;
diff --git a/src/xsettings.c b/src/xsettings.c
index 3e673129d4c..945007db2f0 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -42,6 +42,8 @@ static char *current_mono_font;
42static struct x_display_info *first_dpyinfo; 42static struct x_display_info *first_dpyinfo;
43static Lisp_Object Qfont_name, Qfont_render; 43static Lisp_Object Qfont_name, Qfont_render;
44static int use_system_font; 44static int use_system_font;
45static Lisp_Object Vxft_settings;
46
45 47
46#ifdef HAVE_GCONF 48#ifdef HAVE_GCONF
47static GConfClient *gconf_client; 49static GConfClient *gconf_client;
@@ -406,12 +408,13 @@ apply_xft_settings (dpyinfo, send_event_p)
406 FcPattern *pat; 408 FcPattern *pat;
407 struct xsettings settings, oldsettings; 409 struct xsettings settings, oldsettings;
408 int changed = 0; 410 int changed = 0;
411 char buf[256];
409 412
410 if (!read_xft_settings (dpyinfo, &settings)) 413 if (!read_xft_settings (dpyinfo, &settings))
411 return; 414 return;
412 415
413 memset (&oldsettings, 0, sizeof (oldsettings)); 416 memset (&oldsettings, 0, sizeof (oldsettings));
414 417 buf[0] = '\0';
415 pat = FcPatternCreate (); 418 pat = FcPatternCreate ();
416 XftDefaultSubstitute (dpyinfo->display, 419 XftDefaultSubstitute (dpyinfo->display,
417 XScreenNumberOfScreen (dpyinfo->screen), 420 XScreenNumberOfScreen (dpyinfo->screen),
@@ -428,20 +431,30 @@ apply_xft_settings (dpyinfo, send_event_p)
428 FcPatternDel (pat, FC_ANTIALIAS); 431 FcPatternDel (pat, FC_ANTIALIAS);
429 FcPatternAddBool (pat, FC_ANTIALIAS, settings.aa); 432 FcPatternAddBool (pat, FC_ANTIALIAS, settings.aa);
430 ++changed; 433 ++changed;
434 oldsettings.aa = settings.aa;
431 } 435 }
436 sprintf (buf, "Antialias: %d", oldsettings.aa);
437
432 if ((settings.seen & SEEN_HINTING) != 0 438 if ((settings.seen & SEEN_HINTING) != 0
433 && oldsettings.hinting != settings.hinting) 439 && oldsettings.hinting != settings.hinting)
434 { 440 {
435 FcPatternDel (pat, FC_HINTING); 441 FcPatternDel (pat, FC_HINTING);
436 FcPatternAddBool (pat, FC_HINTING, settings.hinting); 442 FcPatternAddBool (pat, FC_HINTING, settings.hinting);
437 ++changed; 443 ++changed;
444 oldsettings.hinting = settings.hinting;
438 } 445 }
446 if (strlen (buf) > 0) strcat (buf, ", ");
447 sprintf (buf+strlen (buf), "Hinting: %d", oldsettings.hinting);
439 if ((settings.seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings.rgba) 448 if ((settings.seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings.rgba)
440 { 449 {
441 FcPatternDel (pat, FC_RGBA); 450 FcPatternDel (pat, FC_RGBA);
442 FcPatternAddInteger (pat, FC_RGBA, settings.rgba); 451 FcPatternAddInteger (pat, FC_RGBA, settings.rgba);
452 oldsettings.rgba = settings.rgba;
443 ++changed; 453 ++changed;
444 } 454 }
455 if (strlen (buf) > 0) strcat (buf, ", ");
456 sprintf (buf+strlen (buf), "RGBA: %d", oldsettings.rgba);
457
445 /* Older fontconfig versions don't have FC_LCD_FILTER. */ 458 /* Older fontconfig versions don't have FC_LCD_FILTER. */
446 if ((settings.seen & SEEN_LCDFILTER) != 0 459 if ((settings.seen & SEEN_LCDFILTER) != 0
447 && oldsettings.lcdfilter != settings.lcdfilter) 460 && oldsettings.lcdfilter != settings.lcdfilter)
@@ -449,14 +462,22 @@ apply_xft_settings (dpyinfo, send_event_p)
449 FcPatternDel (pat, FC_LCD_FILTER); 462 FcPatternDel (pat, FC_LCD_FILTER);
450 FcPatternAddInteger (pat, FC_LCD_FILTER, settings.lcdfilter); 463 FcPatternAddInteger (pat, FC_LCD_FILTER, settings.lcdfilter);
451 ++changed; 464 ++changed;
465 oldsettings.lcdfilter = settings.lcdfilter;
452 } 466 }
467 if (strlen (buf) > 0) strcat (buf, ", ");
468 sprintf (buf+strlen (buf), "LCDFilter: %d", oldsettings.lcdfilter);
469
453 if ((settings.seen & SEEN_HINTSTYLE) != 0 470 if ((settings.seen & SEEN_HINTSTYLE) != 0
454 && oldsettings.hintstyle != settings.hintstyle) 471 && oldsettings.hintstyle != settings.hintstyle)
455 { 472 {
456 FcPatternDel (pat, FC_HINT_STYLE); 473 FcPatternDel (pat, FC_HINT_STYLE);
457 FcPatternAddInteger (pat, FC_HINT_STYLE, settings.hintstyle); 474 FcPatternAddInteger (pat, FC_HINT_STYLE, settings.hintstyle);
458 ++changed; 475 ++changed;
476 oldsettings.hintstyle = settings.hintstyle;
459 } 477 }
478 if (strlen (buf) > 0) strcat (buf, ", ");
479 sprintf (buf+strlen (buf), "Hintstyle: %d", oldsettings.hintstyle);
480
460 if ((settings.seen & SEEN_DPI) != 0 && oldsettings.dpi != settings.dpi 481 if ((settings.seen & SEEN_DPI) != 0 && oldsettings.dpi != settings.dpi
461 && settings.dpi > 0) 482 && settings.dpi > 0)
462 { 483 {
@@ -465,7 +486,8 @@ apply_xft_settings (dpyinfo, send_event_p)
465 FcPatternDel (pat, FC_DPI); 486 FcPatternDel (pat, FC_DPI);
466 FcPatternAddDouble (pat, FC_DPI, settings.dpi); 487 FcPatternAddDouble (pat, FC_DPI, settings.dpi);
467 ++changed; 488 ++changed;
468 489 oldsettings.dpi = settings.dpi;
490
469 /* Change the DPI on this display and all frames on the display. */ 491 /* Change the DPI on this display and all frames on the display. */
470 dpyinfo->resy = dpyinfo->resx = settings.dpi; 492 dpyinfo->resy = dpyinfo->resx = settings.dpi;
471 FOR_EACH_FRAME (tail, frame) 493 FOR_EACH_FRAME (tail, frame)
@@ -474,12 +496,16 @@ apply_xft_settings (dpyinfo, send_event_p)
474 XFRAME (frame)->resy = XFRAME (frame)->resx = settings.dpi; 496 XFRAME (frame)->resy = XFRAME (frame)->resx = settings.dpi;
475 } 497 }
476 498
499 if (strlen (buf) > 0) strcat (buf, ", ");
500 sprintf (buf+strlen (buf), "DPI: %lf", oldsettings.dpi);
501
477 if (changed) 502 if (changed)
478 { 503 {
479 XftDefaultSet (dpyinfo->display, pat); 504 XftDefaultSet (dpyinfo->display, pat);
480 if (send_event_p) 505 if (send_event_p)
481 store_font_changed_event (Qfont_render, 506 store_font_changed_event (Qfont_render,
482 XCAR (dpyinfo->name_list_element)); 507 XCAR (dpyinfo->name_list_element));
508 Vxft_settings = make_string (buf, strlen (buf));
483 } 509 }
484 else 510 else
485 FcPatternDestroy (pat); 511 FcPatternDestroy (pat);
@@ -638,6 +664,10 @@ syms_of_xsettings ()
638 doc: /* *Non-nil means to use the system defined font. */); 664 doc: /* *Non-nil means to use the system defined font. */);
639 use_system_font = 0; 665 use_system_font = 0;
640 666
667 DEFVAR_LISP ("xft-settings", &Vxft_settings,
668 doc: /* Font settings applied to Xft. */);
669 Vxft_settings = make_string ("", 0);
670
641#ifdef HAVE_XFT 671#ifdef HAVE_XFT
642 Fprovide (intern_c_string ("font-render-setting"), Qnil); 672 Fprovide (intern_c_string ("font-render-setting"), Qnil);
643#ifdef HAVE_GCONF 673#ifdef HAVE_GCONF