Mercurial > hg > xemacs-beta
changeset 94:1040fe1366ac xemacs-20-0f2
Import from CVS: tag xemacs-20-0f2
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:12:09 +0200 |
parents | 486ff617c2a1 |
children | e8c07a565f9c |
files | CHANGES-beta ChangeLog Makefile.in lisp/ChangeLog lisp/iso/iso-acc.el lisp/modes/make-mode.el lisp/mule/european-hooks.el lisp/packages/metamail.el lisp/utils/skeleton.el lisp/version.el src/ChangeLog src/database.c src/emacs.c src/eval.c src/glyphs.h src/redisplay.c |
diffstat | 16 files changed, 162 insertions(+), 100 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 09:11:41 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:12:09 2007 +0200 @@ -1,5 +1,8 @@ -*- indented-text -*- to 20.0 final +-- Miscellaneous bug fixes + +to 20.0 final -- iso-acc.el updated courtesy of Alexandre Oliva -- Miscellaneous bug fixes
--- a/ChangeLog Mon Aug 13 09:11:41 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:12:09 2007 +0200 @@ -1,7 +1,15 @@ +Wed Feb 5 18:03:06 1997 Steven L Baur <steve@altair.xemacs.org> + + * XEmacs 20.0 is released. + +Wed Feb 3 19:39:08 1997 Steven L Baur <steve@altair.xemacs.org> + + * XEmacs 19.15-b92 is released. + Sat Feb 1 18:17:38 1997 Steven L Baur <steve@altair.xemacs.org> * XEmacs 20.0 is released. - * XEmacs 19.15b-91 AKA XEmacs '97 NOT! is released. + * XEmacs 19.15-b91 AKA XEmacs '97 NOT! is released. Sat Feb 1 00:00:48 1997 Steven L Baur <steve@altair.xemacs.org>
--- a/Makefile.in Mon Aug 13 09:11:41 2007 +0200 +++ b/Makefile.in Mon Aug 13 09:12:09 2007 +0200 @@ -397,7 +397,6 @@ for f in *.info* ; do \ ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f ; \ chmod 0644 ${infodir}/$$f; \ - gzip -9 -f ${infodir}/$$f; \ done); \ else true; fi cd ${srcdir}/etc && for page in xemacs etags ctags gnuserv \
--- a/lisp/ChangeLog Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:12:09 2007 +0200 @@ -1,3 +1,24 @@ +Tue Feb 4 11:51:25 1997 Greg Klanderman <greg@alphatech.com> + + * modes/make-mode.el: Remove `makefile-runtime-macros-list' from + `makefile-macro-table'. + +Tue Feb 4 11:06:33 1997 Steven L Baur <steve@altair.xemacs.org> + + * packages/metamail.el (metamail-region): *junet* coding system + name changed to 'junet. + +Mon Feb 3 22:34:09 1997 Alexandre Oliva <oliva@dcc.unicamp.br> + + * iso/iso-acc.el: Critical Bug fix. + Add ISO-8859-3 support to iso-acc.el, as suggested by Dale + Gulledge. + +Mon Feb 3 17:11:21 1997 Steven L Baur <steve@altair.xemacs.org> + + * modes/make-mode.el (makefile-browser-format-macro-line): Remove + redundant (and wrong) format statement. + Fri Jan 31 21:38:47 1997 Steven L Baur <steve@altair.xemacs.org> * psgml/psgml-html.el (html-auto-sgml-entity-conversion): Allow
--- a/lisp/iso/iso-acc.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/iso/iso-acc.el Mon Aug 13 09:12:09 2007 +0200 @@ -3,11 +3,11 @@ ;; Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc. ;; Author: Johan Vromans <jv@mh.nl> -;; Version: 1.8 -;; Maintainer: FSF +;; Maintainer: Alexandre Oliva <oliva@dcc.unicamp.br> ;; Keywords: i18n ;; Adapted to XEmacs 19.14 by Alexandre Oliva <oliva@dcc.unicamp.br> -;; Last update: Jan 25, 1997 +;; $Revision: 1.3 $ +;; $Date: 1997/02/06 02:08:34 $ ;; This file is part of GNU Emacs. @@ -41,15 +41,16 @@ ;; " (second) -> diaeresis ;; ^ (caret) -> circumflex ;; ~ (tilde) -> tilde over the character -;; / (slash) -> slash through the character. -;; , (cedilla) -> cedilla under the character (except on default mode). -;; Also: /A is A-with-ring and /E is AE ligature. +;; / (slash) -> slash through the character +;; . (dot) -> dot over the character +;; , (cedilla) -> cedilla under the character (except on default mode) +;; Also: /A is A-with-ring and /E is AE ligature. ;; ;; The action taken depends on the key that follows the pseudo accent. ;; In general: ;; ;; pseudo-accent + appropriate letter -> accented letter -;; pseudo-accent + space -> pseudo-accent (except for comma) +;; pseudo-accent + space -> pseudo-accent (except comma) ;; pseudo-accent + pseudo-accent -> accent (if available) ;; pseudo-accent + other -> pseudo-accent + other ;; @@ -72,10 +73,13 @@ (if (fboundp 'read-event) () (defun read-event () (event-key (next-command-event)))) -;; needed to work on GNU Emacs (had to use this function on XEmacs) -(if (fboundp 'character-to-event) () - (defun character-to-event (ch &optional event console meta) - (if (listp ch) (car ch) ch))) +(if (fboundp 'character-to-event) + (defun iso-char-to-event (ch) + "returns an event containing the given character" + (character-to-event (list ch))) + (defun iso-char-to-event (ch) + "returns the character itself" + ch)) ;; needed for compatibility with XEmacs 19.14 and GNU Emacs 19.30 (if (fboundp 'this-single-command-keys) () @@ -85,6 +89,8 @@ (this-command-keys)) (defun this-single-command-keys () (this-command-keys)))) +;; end of compatibility modules + (defvar iso-languages '(("portuguese" (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) @@ -94,7 +100,8 @@ (?^ (?A . ?\302) (?E . ?\312) (?O . ?\324) (?a . ?\342) (?e . ?\352) (?o . ?\364) (?\ . ?^) (space . ?^)) (?\" (?U . ?\334) (?u . ?\374) (?\ . ?\") (space . ?\")) - (?\~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365) (?\ . ?\~) (space . ?\~)) + (?\~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365) (?\ . ?\~) + (space . ?\~)) (?, (?c . ?\347) (?C . ?\307))) ("irish" @@ -103,17 +110,44 @@ (?\ . ?') (space . ?'))) ("french" - (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) - (?C . ?\307) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) - (?u . ?\372) (?c . ?\347) (?\ . ?') (space . ?')) - (?` (?A . ?\300) (?E . ?\310) (?a . ?\340) (?e . ?\350) (?\ . ?`) (space . ?`)) + (?' (?E . ?\311) (?C . ?\307) (?e . ?\351) (?c . ?\347) (?\ . ?') + (space . ?')) + (?` (?A . ?\300) (?E . ?\310) (?a . ?\340) (?e . ?\350) (?\ . ?`) + (space . ?`)) (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333) (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373) (?\ . ?^) (space . ?^)) - (?\" (?U . ?\334) (?u . ?\374) (?\ . ?\") (space . ?\")) - (?\~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365) (?\ . ?\~) (space . ?\~)) + (?\" (?E . ?\313) (?I . ?\317) + (?e . ?\353) (?i . ?\357) (?\ . ?\") (space . ?\")) + (?\~ (?< . ?\253) (?> . ?\273) (?C . ?\307) (?c . ?\347) (?\ . ?\~) + (space . ?\~)) (?, (?c . ?\347) (?C . ?\307))) + ;;; ISO-8859-3, developed by D. Dale Gulledge <ddg@cci.com> + ("latin-3" + (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) + (?U . ?\332) (?a . ?\341) (?e . ?\351) (?i . ?\355) + (?o . ?\363) (?u . ?\372) (?\ . ?') (space . ?')) + (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257) + (?c . ?\345) (?g . ?\365) (?z . ?\277)) + (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) + (?U . ?\334) (?a . ?\344) (?e . ?\353) (?i . ?\357) + (?o ?\366) (?u ?\374) (?\ . ?\") (space . ?\")) + (?\/ (?\/ . ?\260) (?\ . ?/) (space . ?/)) + (?\~ (?C . ?\307) (?G . ?\253) (?N . ?\321) (?S . ?\252) + (?U . ?\335) (?\~ . ?\270) (?c . ?\347) (?g . ?\273) + (?h . ?\261) (?n . ?\361) (?u . ?\375) + (?\ . ?~) (space . ?~)) + (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) + (?H . ?\246) (?I . ?\316) (?J . ?\254) (?O . ?\324) + (?S . ?\336) (?U . ?\333) (?a . ?\342) (?c . ?\346) + (?e . ?\352) (?g . ?\370) (?h . ?\266) (?i . ?\356) + (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373) + (?\ . ?^) (space . \^)) + (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) + (?U . ?\331) (?a . ?\340) (?e . ?\350) (?i . ?\354) + (?o . ?\362) (?u . ?\371) (?\ . ?`) (space . ?`))) + ("latin-2" (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315) (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246) @@ -190,9 +224,9 @@ See the function `iso-accents-mode'.") (make-variable-buffer-local 'iso-accents-mode) -(defvar iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/ ?,) +(defvar iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/ ?, ?.) "*List of accent keys that become prefixes in ISO Accents mode. -The default is (?' ?` ?^ ?\" ?~ ?/ ?,), which contains all the supported +The default is (?' ?` ?^ ?\" ?~ ?/ ?, ?.), which contains all the supported accent keys. If you set this variable to a list in which some of those characters are missing, the missing ones do not act as accents. @@ -229,15 +263,12 @@ (delete-region (1- (point)) (point))))) (entry (cdr (assq second-char list)))) (if entry - ;; Found it: insert the accented character and - ;; return a do-nothing key - (vector (character-to-event (list entry))) + ;; Found it: return the mapped char + (vector (iso-char-to-event entry)) ;; Otherwise, advance and schedule the second key for execution. - (setq unread-command-events (append - (list - (character-to-event (list second-char))) - unread-command-events)) - (vector (character-to-event (list first-char)))))) + (setq unread-command-events (cons (iso-char-to-event second-char) + unread-command-events)) + (vector (iso-char-to-event first-char))))) ;; It is a matter of taste if you want the minor mode indicated ;; in the mode line... @@ -283,14 +314,13 @@ ;; Enable electric accents. (setq iso-accents-mode t))) -(defvar iso-accents-mode-map nil) - (defun iso-accents-customize (language) "Customize the ISO accents machinery for a particular language. It selects the customization based on the specifications in the `iso-languages' variable." (interactive (list (completing-read "Language: " iso-languages nil t))) - (let ((table (assoc language iso-languages)) tail acc) + (let ((table (assoc language iso-languages)) + tail) (if (not table) (error "Unknown language '%s'" language) (setq iso-language language @@ -299,57 +329,15 @@ (substitute-key-definition 'iso-accents-accent-key nil key-translation-map) (setq key-translation-map (make-sparse-keymap))) - (setq iso-accents-mode-map (make-sparse-keymap)) - (let ((pair (assoc 'iso-accents-mode minor-mode-map-alist))) - (if pair - (setcdr pair iso-accents-mode-map) - (let ((l minor-mode-map-alist)) - (while (cdr l) - (setq l (cdr l))) - (setcdr l (list (cons 'iso-accents-mode iso-accents-mode-map)))))) ;; Set up translations for all the characters that are used as ;; accent prefixes in this language. (setq tail iso-accents-list) (while tail - (define-key key-translation-map - (vector (character-to-event (list (car (car tail))))) + (define-key key-translation-map (vector (iso-char-to-event + (car (car tail)))) 'iso-accents-accent-key) - (setq acc (cdr (car tail))) - (while acc - (define-key iso-accents-mode-map - (vector (character-to-event (list (cdr (car acc))))) - 'iso-accents-self-insert-unless-redefined) - (setq acc (cdr acc))) (setq tail (cdr tail)))))) -(defun iso-accents-self-insert-unless-redefined (prompt) - "Temporarily disables iso-accents-mode, and checks for additional bindings of the keys that produced its invocation. If no such binding is found, 'self-insert-command is returned" - (interactive "p") - (let* ((iso-accents-mode nil) - (bind (key-binding (this-command-keys))) - (repeat t) result) - (while repeat - (setq result - (cond ((or (null bind) - (eq bind 'self-insert-command)) - (setq repeat nil) - (self-insert-command prompt)) - ((commandp bind) - (setq repeat nil) - (call-interactively bind)) - ((or (stringp bind) - (keymapp bind)) - (setq repeat nil) - bind) - ((and (consp bind) - (stringp (car bind))) - (setq bind (cdr bind))) - ((and (consp bind) - (keymapp (car bind))) - (setq bind (lookup-key (car bind) (cdr bind)))) - (t (error "Invalid key binding"))))) - result)) - (defun iso-accentuate (start end) "Convert two-character sequences in region into accented characters. Noninteractively, this operates on text from START to END.
--- a/lisp/modes/make-mode.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/modes/make-mode.el Mon Aug 13 09:12:09 2007 +0200 @@ -946,12 +946,11 @@ target makefile-target-colon)) (defun makefile-browser-format-macro-line (macro selected) - (format (concat (make-string makefile-browser-leftmost-column ?\ ) (if selected makefile-browser-selected-mark makefile-browser-unselected-mark) - (makefile-format-macro-ref macro)))) + (makefile-format-macro-ref macro))) (defun makefile-browser-fill (targets macros) (let ((inhibit-read-only t)) @@ -1108,7 +1107,9 @@ (setq makefile-browser-client (current-buffer)) (makefile-pickup-targets) (makefile-pickup-macros) - (makefile-browse makefile-target-table makefile-macro-table)) + (makefile-browse makefile-target-table + ;; take out the runtime macros which were added for completion sake -gk + (set-difference makefile-macro-table makefile-runtime-macros-list)))
--- a/lisp/mule/european-hooks.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/mule/european-hooks.el Mon Aug 13 09:12:09 2007 +0200 @@ -91,8 +91,8 @@ (define-language-environment 'european "European (for Latin-1 through Latin-5)" (lambda () - (set-coding-category-system 'iso-8-designate 'iso-8859-1) - (set-coding-priority-list '(iso-8-designate iso-8-1)) + ;(set-coding-category-system 'iso-8-designate 'iso-8859-1) + ;(set-coding-priority-list '(iso-8-designate iso-8-1)) (set-default-file-coding-system 'binary) ; iso-8859-1 ;;(setq locale-coding-system 'binary) ; iso-8859-1 (setq process-input-coding-system 'binary) ; iso-8859-1
--- a/lisp/packages/metamail.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/packages/metamail.el Mon Aug 13 09:12:09 2007 +0200 @@ -3,7 +3,7 @@ ;; Copyright (C) 1993, 1996 Masanobu UMEDA ;; Author: Masanobu UMEDA <umerin@mse.kyutech.ac.jp> -;; Version: $Header: /afs/informatik.uni-tuebingen.de/local/web/xemacs/xemacs-cvs/XEmacs/xemacs/lisp/packages/Attic/metamail.el,v 1.1.1.1 1996/12/18 22:42:53 steve Exp $ +;; Version: $Header: /afs/informatik.uni-tuebingen.de/local/web/xemacs/xemacs-cvs/XEmacs/xemacs/lisp/packages/Attic/metamail.el,v 1.2 1997/02/06 02:08:35 steve Exp $ ;; Keywords: mail, news, mime, multimedia ;; This file is part of XEmacs. @@ -166,7 +166,7 @@ (let ((selective-display nil) ;Disable ^M to nl translation. (kanji-fileio-code 2) ;Write in JIS code when nemacs. (file-coding-system ;Write in JUNET style when mule. - (if (featurep 'mule) *junet*))) + (if (featurep 'mule) 'junet))) (write-region beg end metafile nil 'nomessage)) (if buffer (set-buffer buffer)) @@ -185,7 +185,13 @@ (if (boundp 'NEMACS) (define-program-kanji-code nil metamail-program-name 2)) ;JIS (if (featurep 'mule) - (define-program-coding-system nil metamail-program-name *junet*)) + (if (fboundp 'define-program-coding-system) + (define-program-coding-system + nil + metamail-program-name + 'junet) + ;; XEmacs with MULE + (setq file-coding-system 'junet))) (apply (function call-process) metamail-program-name nil
--- a/lisp/utils/skeleton.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/utils/skeleton.el Mon Aug 13 09:12:09 2007 +0200 @@ -391,7 +391,8 @@ (defun skeleton-internal-1 (element &optional literal) - (cond ((char-or-string-p element) + (cond ((or (integerp element) + (char-or-string-p element)) (if (and (integerp element) ; -num (< element 0)) (if skeleton-untabify
--- a/lisp/version.el Mon Aug 13 09:11:41 2007 +0200 +++ b/lisp/version.el Mon Aug 13 09:12:09 2007 +0200 @@ -25,7 +25,7 @@ (defconst emacs-version "20.0" "Version numbers of this version of Emacs.") -(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (test1)"))) +(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid"))) (defconst emacs-major-version (progn (or (string-match "^[0-9]+" emacs-version)
--- a/src/ChangeLog Mon Aug 13 09:11:41 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 09:12:09 2007 +0200 @@ -1,3 +1,17 @@ +Wed Feb 5 17:13:17 1997 David Moore <dmoore@UCSD.EDU> + + * emacs.c (main_1): Try to avoid collisions against potentially + incompatible system mallocs. + +Mon Feb 3 23:04:41 1997 Joel Peterson <tarzan@aosi.com> + + * redisplay.c: Activate face/charset redisplay caching. + +Mon Feb 3 22:01:09 1997 Kyle Jones <kyle_jones@wonderworks.com> + + * eval.c (do_debug_on_exit): Don't restore old value of + debug_on_next_call improperly. + Fri Jan 31 10:28:47 1997 David Byers <davby@ida.liu.se> * frame.c (frame_matches_frametype): Fix next-window when the next
--- a/src/database.c Mon Aug 13 09:11:41 2007 +0200 +++ b/src/database.c Mon Aug 13 09:12:09 2007 +0200 @@ -71,7 +71,7 @@ XEMACS_DB_TYPE type; int mode; int ackcess; - int errno; + int dberrno; void *db_handle; DB_FUNCS *funcs; }; @@ -100,7 +100,7 @@ dbase->db_handle = NULL; dbase->ackcess = 0; dbase->mode = 0; - dbase->errno = 0; + dbase->dberrno = 0; dbase->type = DB_UNKNOWN; return (dbase); } @@ -322,7 +322,7 @@ static Lisp_Object dbm_lasterr (struct database_struct *dbp) { - char *temp = strerror (dbp->errno); + char *temp = strerror (dbp->dberrno); return (make_string ((unsigned char *) temp, strlen (temp))); } @@ -405,7 +405,7 @@ static Lisp_Object berkdb_lasterr (struct database_struct *dbp) { - char *temp = strerror (dbp->errno); + char *temp = strerror (dbp->dberrno); return (make_string ((unsigned char *) temp, strlen (temp))); } @@ -424,7 +424,7 @@ if (!status) return (make_string (valdatum.data, valdatum.size)); - db->errno = (status == 1) ? -1 : errno; + db->dberrno = (status == 1) ? -1 : errno; return (Qnil); } @@ -444,7 +444,7 @@ valdatum.size = XSTRING_LENGTH (val); status = dbp->put (dbp, &keydatum, &valdatum, NILP (replace) ? R_NOOVERWRITE : 0); - db->errno = (status == 1) ? -1 : errno; + db->dberrno = (status == 1) ? -1 : errno; return status; } @@ -462,7 +462,7 @@ if (!status) return 0; - db->errno = (status == 1) ? -1 : errno; + db->dberrno = (status == 1) ? -1 : errno; return 1; }
--- a/src/emacs.c Mon Aug 13 09:11:41 2007 +0200 +++ b/src/emacs.c Mon Aug 13 09:12:09 2007 +0200 @@ -64,6 +64,12 @@ extern void memory_warnings (void *, void (*warnfun) (CONST char *)); +#ifndef SYSTEM_MALLOC +extern void *(*__malloc_hook)(size_t); +extern void *(*__realloc_hook)(void *, size_t); +extern void (*__free_hook)(void *); +#endif /* not SYSTEM_MALLOC */ + /* Command line args from shell, as list of strings */ Lisp_Object Vcommand_line_args; @@ -441,6 +447,14 @@ Lisp_Object load_me; int inhibit_window_system; +#ifndef SYSTEM_MALLOC + /* Make sure that any libraries we link against haven't installed a + hook for a gmalloc of a potentially incompatible version. */ + __malloc_hook = NULL; + __realloc_hook = NULL; + __free_hook = NULL; +#endif /* not SYSTEM_MALLOC */ + noninteractive = 0; #ifdef NeXT
--- a/src/eval.c Mon Aug 13 09:11:41 2007 +0200 +++ b/src/eval.c Mon Aug 13 09:12:09 2007 +0200 @@ -403,9 +403,8 @@ do_debug_on_exit (Lisp_Object val) { /* This is falsified by call_debugger */ - int old_debug_on_next_call = debug_on_next_call; Lisp_Object v = call_debugger (list2 (Qexit, val)); - debug_on_next_call = old_debug_on_next_call; + return ((!UNBOUNDP (v)) ? v : val); }
--- a/src/glyphs.h Mon Aug 13 09:11:41 2007 +0200 +++ b/src/glyphs.h Mon Aug 13 09:12:09 2007 +0200 @@ -548,7 +548,7 @@ *****************************************************************************/ #define DISP_TABLE_SIZE 256 -#define DISP_CHAR_ENTRY(dp, c) ((dp)->contents[c]) +#define DISP_CHAR_ENTRY(dp, c) ((c < (dp)->size) ? (dp)->contents[c] : Qnil) struct Lisp_Vector *get_display_table (struct window *, face_index);
--- a/src/redisplay.c Mon Aug 13 09:11:41 2007 +0200 +++ b/src/redisplay.c Mon Aug 13 09:12:09 2007 +0200 @@ -108,6 +108,10 @@ Used to optimize some lookups -- we only have to do some things when the charset changes. */ + face_index last_findex; /* The face index of the previous character. + Needed to ensure the validity of the + last_charset optimization. */ + int last_char_width; /* The width of the previous character. */ int font_is_bogus; /* If true, it means we couldn't instantiate the font for this charset, so we substitute @@ -850,7 +854,8 @@ else { Lisp_Object charset = CHAR_CHARSET (data->ch); - if (!EQ (charset, data->last_charset)) + if (!EQ (charset, data->last_charset) || + data->findex != data->last_findex) { /* OK, we need to do things the hard way. */ struct window *w = XWINDOW (data->window); @@ -876,8 +881,8 @@ data->last_char_width = -1; data->new_ascent = max (data->new_ascent, (int) fi->ascent); data->new_descent = max (data->new_descent, (int) fi->descent); - /* The following line causes display goobers and I don't know why */ - /*data->last_charset = charset;*/ + data->last_charset = charset; + data->last_findex = data->findex; } width = data->last_char_width; @@ -1877,6 +1882,7 @@ data.bi_bufpos = bi_start_pos; data.pixpos = dl->bounds.left_in; data.last_charset = Qunbound; + data.last_findex = DEFAULT_INDEX; data.result_str = Qnil; /* Set the right boundary adjusting it to take into account any end @@ -2643,6 +2649,7 @@ data.cursor_x = -1; data.findex = DEFAULT_INDEX; data.last_charset = Qunbound; + data.last_findex = DEFAULT_INDEX; data.result_str = Qnil; Dynarr_reset (data.db->runes); @@ -3570,6 +3577,7 @@ data.max_pixpos = max_pixpos; data.cursor_type = NO_CURSOR; data.last_charset = Qunbound; + data.last_findex = DEFAULT_INDEX; data.result_str = result_str; data.is_modeline = 1; XSETWINDOW (data.window, w);