diff options
| author | Paul Eggert | 2016-10-10 07:39:05 -0700 |
|---|---|---|
| committer | Paul Eggert | 2016-10-10 07:39:05 -0700 |
| commit | 46b83c0f08f936eb1a0ae761db557169fe295cc7 (patch) | |
| tree | bdb663d86a908a83b7c953316d04714664b32a0c /src | |
| parent | be589ea0dc71063d26595378df303a2a1c25ee4e (diff) | |
| parent | 4f406e9813e073b675bb45613bf1dd111eec2368 (diff) | |
| download | emacs-46b83c0f08f936eb1a0ae761db557169fe295cc7.tar.gz emacs-46b83c0f08f936eb1a0ae761db557169fe295cc7.zip | |
Merge from origin/emacs-25
4f406e9 CC Mode manual: remove reference to former Emacs variable las...
44e402e Allow to disable compaction of font caches
4ff4b66 Allow selection of font for symbols as in Emacs 24.x
c03d44b ; Fix last commit
d4be4f3 ; Fix indexing in lispref manual
ed399f2 ; Minor improvement in documentation of generators
197a6bc Fix horizontal scrolling during Isearch
3566644 Fix infloop in redisplay due to truncated lines and invisible...
# Conflicts:
# etc/NEWS
Diffstat (limited to 'src')
| -rw-r--r-- | src/alloc.c | 6 | ||||
| -rw-r--r-- | src/font.c | 13 | ||||
| -rw-r--r-- | src/fontset.c | 13 | ||||
| -rw-r--r-- | src/xdisp.c | 5 |
4 files changed, 33 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c index 72987dd3190..ab23072aafa 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5598,7 +5598,11 @@ compact_font_caches (void) | |||
| 5598 | for (t = terminal_list; t; t = t->next_terminal) | 5598 | for (t = terminal_list; t; t = t->next_terminal) |
| 5599 | { | 5599 | { |
| 5600 | Lisp_Object cache = TERMINAL_FONT_CACHE (t); | 5600 | Lisp_Object cache = TERMINAL_FONT_CACHE (t); |
| 5601 | if (CONSP (cache)) | 5601 | /* Inhibit compacting the caches if the user so wishes. Some of |
| 5602 | the users don't mind a larger memory footprint, but do mind | ||
| 5603 | slower redisplay. */ | ||
| 5604 | if (!inhibit_compacting_font_caches | ||
| 5605 | && CONSP (cache)) | ||
| 5602 | { | 5606 | { |
| 5603 | Lisp_Object entry; | 5607 | Lisp_Object entry; |
| 5604 | 5608 | ||
diff --git a/src/font.c b/src/font.c index cfbc5c7e266..f8e6794cbb1 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -5434,6 +5434,19 @@ Set it to nil to enable logging. If the environment variable | |||
| 5434 | EMACS_FONT_LOG is set at startup, it defaults to nil. */); | 5434 | EMACS_FONT_LOG is set at startup, it defaults to nil. */); |
| 5435 | Vfont_log = Qnil; | 5435 | Vfont_log = Qnil; |
| 5436 | 5436 | ||
| 5437 | DEFVAR_BOOL ("inhibit-compacting-font-caches", inhibit_compacting_font_caches, | ||
| 5438 | doc: /* | ||
| 5439 | If non-nil, don't compact font caches during GC. | ||
| 5440 | Some large fonts cause lots of consing and trigger GC. If they | ||
| 5441 | are removed from the font caches, they will need to be opened | ||
| 5442 | again during redisplay, which slows down redisplay. If you | ||
| 5443 | see font-related delays in displaying some special characters, | ||
| 5444 | and cannot switch to a smaller font for those characters, set | ||
| 5445 | this variable non-nil. | ||
| 5446 | Disabling compaction of font caches might enlarge the Emacs memory | ||
| 5447 | footprint in sessions that use lots of different fonts. */); | ||
| 5448 | inhibit_compacting_font_caches = 0; | ||
| 5449 | |||
| 5437 | #ifdef HAVE_WINDOW_SYSTEM | 5450 | #ifdef HAVE_WINDOW_SYSTEM |
| 5438 | #ifdef HAVE_FREETYPE | 5451 | #ifdef HAVE_FREETYPE |
| 5439 | syms_of_ftfont (); | 5452 | syms_of_ftfont (); |
diff --git a/src/fontset.c b/src/fontset.c index fe595d81a3e..38ff780ccba 100644 --- a/src/fontset.c +++ b/src/fontset.c | |||
| @@ -921,7 +921,8 @@ face_for_char (struct frame *f, struct face *face, int c, | |||
| 921 | if (ASCII_CHAR_P (c) || CHAR_BYTE8_P (c)) | 921 | if (ASCII_CHAR_P (c) || CHAR_BYTE8_P (c)) |
| 922 | return face->ascii_face->id; | 922 | return face->ascii_face->id; |
| 923 | 923 | ||
| 924 | if (c > 0 && EQ (CHAR_TABLE_REF (Vchar_script_table, c), Qsymbol)) | 924 | if (use_default_font_for_symbols /* let the user disable this feature */ |
| 925 | && c > 0 && EQ (CHAR_TABLE_REF (Vchar_script_table, c), Qsymbol)) | ||
| 925 | { | 926 | { |
| 926 | /* Fonts often have characters for punctuation and other | 927 | /* Fonts often have characters for punctuation and other |
| 927 | symbols, even if they don't match the 'symbol' script. So | 928 | symbols, even if they don't match the 'symbol' script. So |
| @@ -2150,6 +2151,16 @@ This affects how a composite character which contains | |||
| 2150 | such a character is displayed on screen. */); | 2151 | such a character is displayed on screen. */); |
| 2151 | Vuse_default_ascent = Qnil; | 2152 | Vuse_default_ascent = Qnil; |
| 2152 | 2153 | ||
| 2154 | DEFVAR_BOOL ("use-default-font-for-symbols", use_default_font_for_symbols, | ||
| 2155 | doc: /* | ||
| 2156 | If non-nil, use the default face's font for symbols and punctuation. | ||
| 2157 | |||
| 2158 | By default, Emacs will try to use the default face's font for | ||
| 2159 | displaying symbol and punctuation characters, disregarding the | ||
| 2160 | fontsets, if the default font can display the character. | ||
| 2161 | Set this to nil to make Emacs honor the fontsets instead. */); | ||
| 2162 | use_default_font_for_symbols = 1; | ||
| 2163 | |||
| 2153 | DEFVAR_LISP ("ignore-relative-composition", Vignore_relative_composition, | 2164 | DEFVAR_LISP ("ignore-relative-composition", Vignore_relative_composition, |
| 2154 | doc: /* | 2165 | doc: /* |
| 2155 | Char table of characters which are not composed relatively. | 2166 | Char table of characters which are not composed relatively. |
diff --git a/src/xdisp.c b/src/xdisp.c index 3eb11cc0c1e..3af5ea49ab6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -6304,9 +6304,10 @@ forward_to_next_line_start (struct it *it, bool *skipped_p, | |||
| 6304 | } | 6304 | } |
| 6305 | else | 6305 | else |
| 6306 | { | 6306 | { |
| 6307 | while (get_next_display_element (it) | 6307 | while (!newline_found_p) |
| 6308 | && !newline_found_p) | ||
| 6309 | { | 6308 | { |
| 6309 | if (!get_next_display_element (it)) | ||
| 6310 | break; | ||
| 6310 | newline_found_p = ITERATOR_AT_END_OF_LINE_P (it); | 6311 | newline_found_p = ITERATOR_AT_END_OF_LINE_P (it); |
| 6311 | if (newline_found_p && it->bidi_p && bidi_it_prev) | 6312 | if (newline_found_p && it->bidi_p && bidi_it_prev) |
| 6312 | *bidi_it_prev = it->bidi_it; | 6313 | *bidi_it_prev = it->bidi_it; |