aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2003-12-28 16:03:57 +0000
committerKaroly Lorentey2003-12-28 16:03:57 +0000
commit2e7f2ec031f1708b80df9dc1f60f6b1cb24a5c02 (patch)
tree6e682f963c37c5cb6610711ec395ed4e82fff7fc /lisp
parent53fed860b6a9e8f89eca3fd8a15e49c58aace85d (diff)
parent8af1a978a8f635a9d05f56200ba42613e3574c44 (diff)
downloademacs-2e7f2ec031f1708b80df9dc1f60f6b1cb24a5c02.tar.gz
emacs-2e7f2ec031f1708b80df9dc1f60f6b1cb24a5c02.zip
Merged in changes from CVS HEAD
Patches applied: * miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-138 Update from CVS * miles@gnu.org--gnu-2003/emacs--cvs-trunk--0--patch-139 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-15
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog82
-rw-r--r--lisp/comint.el8
-rw-r--r--lisp/complete.el20
-rw-r--r--lisp/ffap.el2
-rw-r--r--lisp/fringe.el2
-rw-r--r--lisp/gdb-ui.el99
-rw-r--r--lisp/info.el21
-rw-r--r--lisp/international/mule-cmds.el5
-rw-r--r--lisp/international/mule-conf.el8
-rw-r--r--lisp/international/mule.el242
-rw-r--r--lisp/international/ucs-tables.el2
-rw-r--r--lisp/language/cyrillic.el11
-rw-r--r--lisp/progmodes/gud.el16
-rw-r--r--lisp/shell.el2
-rw-r--r--lisp/vc.el4
15 files changed, 329 insertions, 195 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 20b42e74cdf..5c667e0b353 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -3,6 +3,88 @@
3 * dired.el (dired-between-files): Always use dired-move-to-filename, 3 * dired.el (dired-between-files): Always use dired-move-to-filename,
4 which is more robust in non-english locales. 4 which is more robust in non-english locales.
5 5
62003-12-25 Markus Rost <rost@mathematik.uni-bielefeld.de>
7
8 * vc.el (vc-dired-purge): Avoid error from `kill-line'.
9
102003-12-24 Andreas Schwab <schwab@suse.de>
11
12 * shell.el (shell-file-name-quote-list): Add backslash.
13
14 * comint.el (comint-quote-filename): Correctly handle backslash
15 in comint-file-name-quote-list.
16
172003-12-24 Kenichi Handa <handa@m17n.org>
18
19 * international/mule-cmds.el (set-default-coding-systems): Call
20 ucs-set-table-for-input for all buffers that don't have local
21 value of buffer-file-coding-system.
22
23 * international/ucs-tables.el (ucs-set-table-for-input): If
24 translation-table-for-encode is a symbol, get its
25 translation-table property.
26
272003-12-23 Luc Teirlinck <teirllm@auburn.edu>
28
29 * ffap.el (ffap-read-file-or-url): Eliminate reliance of the call
30 to `completing-read' on a recently fixed bug.
31
32 * fringe.el (fringe-query-style): Suggest `?' in minibuffer prompt,
33 instead of SPACE, to get the list of possible fringe modes. SPACE
34 only works if both `partial-completion-mode' and
35 `completion-auto-help' are nil.
36
37 * complete.el (PC-is-complete-p): delete.
38 (PC-do-completion): Replace all calls to `PC-is-complete-p' with
39 calls to `test-completion'.
40
412003-12-23 Nick Roberts <nick@nick.uklinux.net>
42
43 * progmodes/gud.el (gud-speedbar-buttons): Use speed-bar-edit-line
44 to edit values when there are no children.
45
46 * gdb-ui.el (gdba, gdb-assembler-mode): Call the mode "Machine" as
47 a mode called "Assembler" already exists.
48 (gdb-use-colon-colon-notation, gdb-show-changed-values): New
49 options.
50 (gud-watch): Use format option. Remove font properties from
51 string.
52 (gdb-var-create-handler, gdb-var-list-children-handler): Don't
53 bother about properties as there are none.
54 (gdb-var-create-handler, gdb-var-list-children-handler)
55 (gdb-var-update-handler): Call gdb-var-evaluate-expression-handler
56 with two arguments.
57 (gdb-var-evaluate-expression-handler, gdb-post-prompt): Let
58 speedbar show value changes with a different font.
59 (gdb-edit-value): New defun.
60 (gdb-clear-partial-output, gdb-clear-inferior-io)
61 (def-gdb-auto-update-handler): Use erase-buffer.
62 (gdb-frame-handler): Display watch expressions in
63 FUNCTION::VARIABLE format if required.
64
652003-12-23 John Paul Wallington <jpw@gnu.org>
66
67 * info.el (Info-unescape-quotes, Info-split-parameter-string)
68 (Info-goto-emacs-command-node): Doc fixes.
69
702003-12-03 Kenichi Handa <handa@m17n.org>
71
72 * language/cyrillic.el: Register "microsoft-cp1251" in
73 ctext-non-standard-encodings-alist.
74 ("Bulgarian"): Add ctext-non-standard-encodings.
75 ("Belarusian"): Likewise.
76
77 * international/mule-conf.el (compound-text-with-extensions):
78 Change the type to 2 (iso-2022 base).
79
80 * international/mule.el (ctext-non-standard-encodings-alist):
81 Change the format.
82 (ctext-non-standard-encodings): New variable.
83 (ctext-post-read-conversion): Fully re-written.
84 (ctext-non-standard-designations-alist): Delete it.
85 (ctext-non-standard-encodings-table): New function.
86 (ctext-pre-write-conversion): Fully re-written.
87
62003-11-30 Per Abrahamsen <abraham@dina.kvl.dk> 882003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
7 89
8 * cus-edit.el (custom-add-parent-links): Add documentation links 90 * cus-edit.el (custom-add-parent-links): Add documentation links
diff --git a/lisp/comint.el b/lisp/comint.el
index 8405e8afcb6..5509e71d984 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2625,11 +2625,13 @@ Magic characters are those in `comint-file-name-quote-list'."
2625 (if (null comint-file-name-quote-list) 2625 (if (null comint-file-name-quote-list)
2626 filename 2626 filename
2627 (let ((regexp 2627 (let ((regexp
2628 (format "\\(^\\|[^\\]\\)\\([%s]\\)" 2628 (format "[%s]"
2629 (mapconcat 'char-to-string comint-file-name-quote-list "")))) 2629 (mapconcat 'char-to-string comint-file-name-quote-list ""))))
2630 (save-match-data 2630 (save-match-data
2631 (while (string-match regexp filename) 2631 (let ((i 0))
2632 (setq filename (replace-match "\\1\\\\\\2" nil nil filename))) 2632 (while (string-match regexp filename i)
2633 (setq filename (replace-match "\\\\\\&" nil nil filename))
2634 (setq i (1+ (match-end 0)))))
2633 filename)))) 2635 filename))))
2634 2636
2635(defun comint-unquote-filename (filename) 2637(defun comint-unquote-filename (filename)
diff --git a/lisp/complete.el b/lisp/complete.el
index 130d0ecb31f..d3c5de459d5 100644
--- a/lisp/complete.el
+++ b/lisp/complete.el
@@ -368,7 +368,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
368 368
369 ;; Check if buffer contents can already be considered complete 369 ;; Check if buffer contents can already be considered complete
370 (if (and (eq mode 'exit) 370 (if (and (eq mode 'exit)
371 (PC-is-complete-p str table pred)) 371 (test-completion str table pred))
372 'complete 372 'complete
373 373
374 ;; Do substitutions in directory names 374 ;; Do substitutions in directory names
@@ -641,7 +641,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
641 (if improved 641 (if improved
642 642
643 ;; We changed it... would it be complete without the space? 643 ;; We changed it... would it be complete without the space?
644 (if (PC-is-complete-p (buffer-substring 1 (1- end)) 644 (if (test-completion (buffer-substring 1 (1- end))
645 table pred) 645 table pred)
646 (delete-region (1- end) end))) 646 (delete-region (1- end) end)))
647 647
@@ -649,7 +649,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
649 649
650 ;; We changed it... enough to be complete? 650 ;; We changed it... enough to be complete?
651 (and (eq mode 'exit) 651 (and (eq mode 'exit)
652 (PC-is-complete-p (field-string) table pred)) 652 (test-completion (field-string) table pred))
653 653
654 ;; If totally ambiguous, display a list of completions 654 ;; If totally ambiguous, display a list of completions
655 (if (or (eq completion-auto-help t) 655 (if (or (eq completion-auto-help t)
@@ -680,20 +680,6 @@ of `minibuffer-completion-table' and the minibuffer contents.")
680 (car poss))))) 680 (car poss)))))
681 t))))) 681 t)))))
682 682
683
684(defun PC-is-complete-p (str table pred)
685 (let ((res (if (listp table)
686 (assoc str table)
687 (if (vectorp table)
688 (or (equal str "nil") ; heh, heh, heh
689 (intern-soft str table))
690 (funcall table str pred 'lambda)))))
691 (and res
692 (or (not pred)
693 (and (not (listp table)) (not (vectorp table)))
694 (funcall pred res))
695 res)))
696
697(defun PC-chop-word (new old) 683(defun PC-chop-word (new old)
698 (let ((i -1) 684 (let ((i -1)
699 (j -1)) 685 (j -1))
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 668700a5c1f..b249ce8daa0 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1216,7 +1216,7 @@ which may actually result in an url rather than a filename."
1216 'ffap-read-file-or-url-internal 1216 'ffap-read-file-or-url-internal
1217 dir 1217 dir
1218 nil 1218 nil
1219 (if dir (cons guess (length dir)) guess) 1219 (if dir (cons guess (1+ (length dir))) guess)
1220 (list 'file-name-history)))) 1220 (list 'file-name-history))))
1221 ;; Do file substitution like (interactive "F"), suggested by MCOOK. 1221 ;; Do file substitution like (interactive "F"), suggested by MCOOK.
1222 (or (ffap-url-p guess) (setq guess (substitute-in-file-name guess))) 1222 (or (ffap-url-p guess) (setq guess (substitute-in-file-name guess)))
diff --git a/lisp/fringe.el b/lisp/fringe.el
index 039a41e5adc..16a21752b58 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -119,7 +119,7 @@ If ALL-FRAMES, the negation of the fringe values in
119Otherwise the negation of the fringe value in the currently selected 119Otherwise the negation of the fringe value in the currently selected
120frame parameter is used." 120frame parameter is used."
121 (let ((mode (intern (completing-read 121 (let ((mode (intern (completing-read
122 "Select fringe mode for all frames (SPACE for list): " 122 "Select fringe mode for all frames (type ? for list): "
123 '(("none") ("default") ("left-only") 123 '(("none") ("default") ("left-only")
124 ("right-only") ("half") ("minimal")) 124 ("right-only") ("half") ("minimal"))
125 nil t)))) 125 nil t))))
diff --git a/lisp/gdb-ui.el b/lisp/gdb-ui.el
index 8166edd83c7..2c9b3390b58 100644
--- a/lisp/gdb-ui.el
+++ b/lisp/gdb-ui.el
@@ -35,16 +35,15 @@
35 35
36;; Start the debugger with M-x gdba. 36;; Start the debugger with M-x gdba.
37 37
38;; This file is based on gdba.el from GDB 5.0 written by Tom Lord and Jim 38;; This file has evolved from gdba.el from GDB 5.0 written by Tom Lord and Jim
39;; Kingdon and uses GDB's annotation interface. You don't need to know about 39;; Kingdon and uses GDB's annotation interface. You don't need to know about
40;; annotations to use this mode as a debugger, but if you are interested 40;; annotations to use this mode as a debugger, but if you are interested
41;; developing the mode itself, then see the Annotations section in the GDB 41;; developing the mode itself, then see the Annotations section in the GDB
42;; info manual. 42;; info manual. Some GDB/MI commands are also used through th CLI command
43;; 'interpreter mi <mi-command>'.
43;; 44;;
44;; Known Bugs: 45;; Known Bugs:
45;; Does not auto-display arrays of structures or structures containing arrays. 46;;
46;; On MS Windows, Gdb 5.1.1 from MinGW 2.0 does not flush the output from the
47;; inferior.
48 47
49;;; Code: 48;;; Code:
50 49
@@ -121,7 +120,7 @@ The following interactive lisp functions help control operation :
121 (set (make-local-variable 'gud-minor-mode) 'gdba) 120 (set (make-local-variable 'gud-minor-mode) 'gdba)
122 (set (make-local-variable 'gud-marker-filter) 'gud-gdba-marker-filter) 121 (set (make-local-variable 'gud-marker-filter) 'gud-gdba-marker-filter)
123 ;; 122 ;;
124 (gud-def gud-break (if (not (string-equal mode-name "Assembler")) 123 (gud-def gud-break (if (not (string-equal mode-name "Machine"))
125 (gud-call "break %f:%l" arg) 124 (gud-call "break %f:%l" arg)
126 (save-excursion 125 (save-excursion
127 (beginning-of-line) 126 (beginning-of-line)
@@ -129,7 +128,7 @@ The following interactive lisp functions help control operation :
129 (gud-call "break *%a" arg))) 128 (gud-call "break *%a" arg)))
130 "\C-b" "Set breakpoint at current line or address.") 129 "\C-b" "Set breakpoint at current line or address.")
131 ;; 130 ;;
132 (gud-def gud-remove (if (not (string-equal mode-name "Assembler")) 131 (gud-def gud-remove (if (not (string-equal mode-name "Machine"))
133 (gud-call "clear %f:%l" arg) 132 (gud-call "clear %f:%l" arg)
134 (save-excursion 133 (save-excursion
135 (beginning-of-line) 134 (beginning-of-line)
@@ -137,7 +136,7 @@ The following interactive lisp functions help control operation :
137 (gud-call "clear *%a" arg))) 136 (gud-call "clear *%a" arg)))
138 "\C-d" "Remove breakpoint at current line or address.") 137 "\C-d" "Remove breakpoint at current line or address.")
139 ;; 138 ;;
140 (gud-def gud-until (if (not (string-equal mode-name "Assembler")) 139 (gud-def gud-until (if (not (string-equal mode-name "Machine"))
141 (gud-call "until %f:%l" arg) 140 (gud-call "until %f:%l" arg)
142 (save-excursion 141 (save-excursion
143 (beginning-of-line) 142 (beginning-of-line)
@@ -175,15 +174,23 @@ The following interactive lisp functions help control operation :
175 ;; 174 ;;
176 (run-hooks 'gdba-mode-hook)) 175 (run-hooks 'gdba-mode-hook))
177 176
177(defcustom gdb-use-colon-colon-notation t
178 "Non-nil means use FUNCTION::VARIABLE format to display variables in the
179speedbar."
180 :type 'boolean
181 :group 'gud)
182
178(defun gud-watch () 183(defun gud-watch ()
179 "Watch expression at point." 184 "Watch expression at point."
180 (interactive) 185 (interactive)
181 (let ((expr (tooltip-identifier-from-point (point)))) 186 (let ((expr (tooltip-identifier-from-point (point))))
182 (if (string-equal gdb-current-language "c") 187 (if (and (string-equal gdb-current-language "c")
188 gdb-use-colon-colon-notation)
183 (setq expr (concat gdb-current-frame "::" expr))) 189 (setq expr (concat gdb-current-frame "::" expr)))
184 (catch 'already-watched 190 (catch 'already-watched
185 (dolist (var gdb-var-list) 191 (dolist (var gdb-var-list)
186 (if (string-equal expr (car var)) (throw 'already-watched nil))) 192 (if (string-equal expr (car var)) (throw 'already-watched nil)))
193 (set-text-properties 0 (length expr) nil expr)
187 (gdb-enqueue-input 194 (gdb-enqueue-input
188 (list (concat "server interpreter mi \"-var-create - * " expr "\"\n") 195 (list (concat "server interpreter mi \"-var-create - * " expr "\"\n")
189 `(lambda () (gdb-var-create-handler ,expr)))))) 196 `(lambda () (gdb-var-create-handler ,expr))))))
@@ -197,10 +204,10 @@ The following interactive lisp functions help control operation :
197 (goto-char (point-min)) 204 (goto-char (point-min))
198 (if (re-search-forward gdb-var-create-regexp nil t) 205 (if (re-search-forward gdb-var-create-regexp nil t)
199 (let ((var (list expr 206 (let ((var (list expr
200 (match-string-no-properties 1) 207 (match-string 1)
201 (match-string-no-properties 2) 208 (match-string 2)
202 (match-string-no-properties 3) 209 (match-string 3)
203 nil))) 210 nil nil)))
204 (push var gdb-var-list) 211 (push var gdb-var-list)
205 (speedbar 1) 212 (speedbar 1)
206 (if (equal (nth 2 var) "0") 213 (if (equal (nth 2 var) "0")
@@ -208,13 +215,13 @@ The following interactive lisp functions help control operation :
208 (list (concat "server interpreter mi \"-var-evaluate-expression " 215 (list (concat "server interpreter mi \"-var-evaluate-expression "
209 (nth 1 var) "\"\n") 216 (nth 1 var) "\"\n")
210 `(lambda () (gdb-var-evaluate-expression-handler 217 `(lambda () (gdb-var-evaluate-expression-handler
211 ,(nth 1 var))))) 218 ,(nth 1 var) nil))))
212 (setq gdb-var-changed t))) 219 (setq gdb-var-changed t)))
213 (if (re-search-forward "Undefined command" nil t) 220 (if (re-search-forward "Undefined command" nil t)
214 (message "Watching expressions requires gdb 6.0 onwards") 221 (message "Watching expressions requires gdb 6.0 onwards")
215 (message "No symbol %s in current context." expr))))) 222 (message "No symbol %s in current context." expr)))))
216 223
217(defun gdb-var-evaluate-expression-handler (varnum) 224(defun gdb-var-evaluate-expression-handler (varnum changed)
218 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 225 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
219 (goto-char (point-min)) 226 (goto-char (point-min))
220 (re-search-forward ".*value=\"\\(.*?\\)\"" nil t) 227 (re-search-forward ".*value=\"\\(.*?\\)\"" nil t)
@@ -223,7 +230,8 @@ The following interactive lisp functions help control operation :
223 (dolist (var gdb-var-list) 230 (dolist (var gdb-var-list)
224 (if (string-equal varnum (cadr var)) 231 (if (string-equal varnum (cadr var))
225 (progn 232 (progn
226 (setcar (nthcdr 4 var) (match-string-no-properties 1)) 233 (if changed (setcar (nthcdr 5 var) t))
234 (setcar (nthcdr 4 var) (match-string 1))
227 (setcar (nthcdr num gdb-var-list) var) 235 (setcar (nthcdr num gdb-var-list) var)
228 (throw 'var-found nil))) 236 (throw 'var-found nil)))
229 (setq num (+ num 1)))))) 237 (setq num (+ num 1))))))
@@ -247,10 +255,11 @@ The following interactive lisp functions help control operation :
247 (progn 255 (progn
248 (push var var-list) 256 (push var var-list)
249 (while (re-search-forward gdb-var-list-children-regexp nil t) 257 (while (re-search-forward gdb-var-list-children-regexp nil t)
250 (let ((varchild (list (match-string-no-properties 2) 258 (let ((varchild (list (match-string 2)
251 (match-string-no-properties 1) 259 (match-string 1)
252 (match-string-no-properties 3) 260 (match-string 3)
253 (match-string-no-properties 4) 261 (match-string 5)
262 (match-string 4)
254 nil))) 263 nil)))
255 (dolist (var1 gdb-var-list) 264 (dolist (var1 gdb-var-list)
256 (if (string-equal (cadr var1) (cadr varchild)) 265 (if (string-equal (cadr var1) (cadr varchild))
@@ -263,7 +272,7 @@ The following interactive lisp functions help control operation :
263 "server interpreter mi \"-var-evaluate-expression " 272 "server interpreter mi \"-var-evaluate-expression "
264 (nth 1 varchild) "\"\n") 273 (nth 1 varchild) "\"\n")
265 `(lambda () (gdb-var-evaluate-expression-handler 274 `(lambda () (gdb-var-evaluate-expression-handler
266 ,(nth 1 varchild))))))))) 275 ,(nth 1 varchild) nil))))))))
267 (push var var-list))) 276 (push var var-list)))
268 (setq gdb-var-list (nreverse var-list)))))) 277 (setq gdb-var-list (nreverse var-list))))))
269 278
@@ -281,12 +290,12 @@ The following interactive lisp functions help control operation :
281 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 290 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
282 (goto-char (point-min)) 291 (goto-char (point-min))
283 (while (re-search-forward gdb-var-update-regexp nil t) 292 (while (re-search-forward gdb-var-update-regexp nil t)
284 (let ((varnum (match-string-no-properties 1))) 293 (let ((varnum (match-string 1)))
285 (gdb-enqueue-input 294 (gdb-enqueue-input
286 (list (concat "server interpreter mi \"-var-evaluate-expression " 295 (list (concat "server interpreter mi \"-var-evaluate-expression "
287 varnum "\"\n") 296 varnum "\"\n")
288 `(lambda () (gdb-var-evaluate-expression-handler 297 `(lambda () (gdb-var-evaluate-expression-handler
289 ,varnum))))))) 298 ,varnum t)))))))
290 (gdb-set-pending-triggers 299 (gdb-set-pending-triggers
291 (delq 'gdb-var-update (gdb-get-pending-triggers)))) 300 (delq 'gdb-var-update (gdb-get-pending-triggers))))
292 301
@@ -299,7 +308,7 @@ The following interactive lisp functions help control operation :
299 (var (assoc expr gdb-var-list)) 308 (var (assoc expr gdb-var-list))
300 (varnum (cadr var))) 309 (varnum (cadr var)))
301 (gdb-enqueue-input 310 (gdb-enqueue-input
302 (list (concat "server interpreter mi \"-var-delete " varnum "\"\n") 311 (list (concat "server interpreter mi \"-var-delete " varnum "\"\n")
303 'ignore)) 312 'ignore))
304 (setq gdb-var-list (delq var gdb-var-list)) 313 (setq gdb-var-list (delq var gdb-var-list))
305 (dolist (varchild gdb-var-list) 314 (dolist (varchild gdb-var-list)
@@ -307,6 +316,23 @@ The following interactive lisp functions help control operation :
307 (setq gdb-var-list (delq varchild gdb-var-list))))) 316 (setq gdb-var-list (delq varchild gdb-var-list)))))
308 (setq gdb-var-changed t))) 317 (setq gdb-var-changed t)))
309 318
319(defun gdb-edit-value (text token indent)
320 "Assign a value to a variable displayed in the speedbar"
321 (interactive)
322 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
323 (varnum (cadr var)) (value))
324 (setq value (read-string "New value: "))
325 (gdb-enqueue-input
326 (list (concat "server interpreter mi \"-var-assign "
327 varnum " " value "\"\n")
328 'ignore))))
329
330(defcustom gdb-show-changed-values t
331 "Non-nil means use font-lock-warning-face to display values that have
332recently changed in the speedbar."
333 :type 'boolean
334 :group 'gud)
335
310(defun gdb-speedbar-expand-node (text token indent) 336(defun gdb-speedbar-expand-node (text token indent)
311 "Expand the node the user clicked on. 337 "Expand the node the user clicked on.
312TEXT is the text of the button we clicked on, a + or - item. 338TEXT is the text of the button we clicked on, a + or - item.
@@ -732,6 +758,11 @@ output from the current command if that happens to be appropriate."
732 (gdb-invalidate-registers) 758 (gdb-invalidate-registers)
733 (gdb-invalidate-locals) 759 (gdb-invalidate-locals)
734 (gdb-invalidate-threads) 760 (gdb-invalidate-threads)
761 (dolist (frame (frame-list))
762 (when (string-equal (frame-parameter frame 'name) "Speedbar")
763 (setq gdb-var-changed t) ; force update
764 (dolist (var gdb-var-list)
765 (setcar (nthcdr 5 var) nil))))
735 (gdb-var-update))) 766 (gdb-var-update)))
736 (let ((sink (gdb-get-output-sink))) 767 (let ((sink (gdb-get-output-sink)))
737 (cond 768 (cond
@@ -822,7 +853,7 @@ output from the current command if that happens to be appropriate."
822 853
823(defun gdb-clear-partial-output () 854(defun gdb-clear-partial-output ()
824 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 855 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
825 (delete-region (point-min) (point-max)))) 856 (erase-buffer)))
826 857
827(defun gdb-append-to-inferior-io (string) 858(defun gdb-append-to-inferior-io (string)
828 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io) 859 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io)
@@ -833,7 +864,7 @@ output from the current command if that happens to be appropriate."
833 864
834(defun gdb-clear-inferior-io () 865(defun gdb-clear-inferior-io ()
835 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io) 866 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io)
836 (delete-region (point-min) (point-max)))) 867 (erase-buffer)))
837 868
838 869
839;; One trick is to have a command who's output is always available in a buffer 870;; One trick is to have a command who's output is always available in a buffer
@@ -883,7 +914,7 @@ output from the current command if that happens to be appropriate."
883 (with-current-buffer buf 914 (with-current-buffer buf
884 (let ((p (point)) 915 (let ((p (point))
885 (buffer-read-only nil)) 916 (buffer-read-only nil))
886 (delete-region (point-min) (point-max)) 917 (erase-buffer)
887 (insert-buffer-substring (gdb-get-create-buffer 918 (insert-buffer-substring (gdb-get-create-buffer
888 'gdb-partial-output-buffer)) 919 'gdb-partial-output-buffer))
889 (goto-char p))))) 920 (goto-char p)))))
@@ -1258,7 +1289,7 @@ the source buffer."
1258 1289
1259(def-gdb-auto-updated-buffer gdb-threads-buffer 1290(def-gdb-auto-updated-buffer gdb-threads-buffer
1260 gdb-invalidate-threads 1291 gdb-invalidate-threads
1261 "info threads\n" 1292 "server info threads\n"
1262 gdb-info-threads-handler 1293 gdb-info-threads-handler
1263 gdb-info-threads-custom) 1294 gdb-info-threads-custom)
1264 1295
@@ -1308,7 +1339,6 @@ the source buffer."
1308 (re-search-backward "^\\s-*\\([0-9]*\\)" nil t) 1339 (re-search-backward "^\\s-*\\([0-9]*\\)" nil t)
1309 (match-string-no-properties 1))) 1340 (match-string-no-properties 1)))
1310 1341
1311
1312(defun gdb-threads-select () 1342(defun gdb-threads-select ()
1313 "Make the thread on the current line become the current thread and display the 1343 "Make the thread on the current line become the current thread and display the
1314source in the source buffer." 1344source in the source buffer."
@@ -1506,7 +1536,7 @@ the source buffer."
1506 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer)) 1536 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
1507 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer)) 1537 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer))
1508 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer)) 1538 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
1509; (define-key menu [assembler] '("Assembler" . gdb-frame-assembler-buffer)) 1539; (define-key menu [assembler] '("Machine" . gdb-frame-assembler-buffer))
1510) 1540)
1511 1541
1512(let ((menu (make-sparse-keymap "GDB-Windows"))) 1542(let ((menu (make-sparse-keymap "GDB-Windows")))
@@ -1518,7 +1548,7 @@ the source buffer."
1518 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer)) 1548 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer))
1519 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer)) 1549 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer))
1520 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer)) 1550 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
1521; (define-key menu [assembler] '("Assembler" . gdb-display-assembler-buffer)) 1551; (define-key menu [assembler] '("Machine" . gdb-display-assembler-buffer))
1522) 1552)
1523 1553
1524(let ((menu (make-sparse-keymap "View"))) 1554(let ((menu (make-sparse-keymap "View")))
@@ -1527,7 +1557,7 @@ the source buffer."
1527; (define-key menu [both] '(menu-item "Both" gdb-view-both 1557; (define-key menu [both] '(menu-item "Both" gdb-view-both
1528; :help "Display both source and assembler" 1558; :help "Display both source and assembler"
1529; :button (:radio . (eq gdb-selected-view 'both)))) 1559; :button (:radio . (eq gdb-selected-view 'both))))
1530 (define-key menu [assembler] '(menu-item "Assembler" gdb-view-assembler 1560 (define-key menu [assembler] '(menu-item "Machine" gdb-view-assembler
1531 :help "Display assembler only" 1561 :help "Display assembler only"
1532 :button (:radio . (eq gdb-selected-view 'assembler)))) 1562 :button (:radio . (eq gdb-selected-view 'assembler))))
1533 (define-key menu [source] '(menu-item "Source" gdb-view-source-function 1563 (define-key menu [source] '(menu-item "Source" gdb-view-source-function
@@ -1829,7 +1859,7 @@ BUFFER nil or omitted means use the current buffer."
1829 1859
1830\\{gdb-assembler-mode-map}" 1860\\{gdb-assembler-mode-map}"
1831 (setq major-mode 'gdb-assembler-mode) 1861 (setq major-mode 'gdb-assembler-mode)
1832 (setq mode-name "Assembler") 1862 (setq mode-name "Machine")
1833 (setq left-margin-width 2) 1863 (setq left-margin-width 2)
1834 (setq fringes-outside-margins t) 1864 (setq fringes-outside-margins t)
1835 (setq buffer-read-only t) 1865 (setq buffer-read-only t)
@@ -1910,7 +1940,8 @@ BUFFER nil or omitted means use the current buffer."
1910 (gdb-get-create-buffer 'gdb-assembler-buffer)) 1940 (gdb-get-create-buffer 'gdb-assembler-buffer))
1911 ;;update with new frame for machine code if necessary 1941 ;;update with new frame for machine code if necessary
1912 (gdb-invalidate-assembler)))))) 1942 (gdb-invalidate-assembler))))))
1913 (if (looking-at "source language \\(\\S-*\\)") 1943 (forward-line)
1944 (if (looking-at " source language \\(\\S-*\\)\.")
1914 (setq gdb-current-language (match-string 1)))) 1945 (setq gdb-current-language (match-string 1))))
1915 1946
1916(provide 'gdb-ui) 1947(provide 'gdb-ui)
diff --git a/lisp/info.el b/lisp/info.el
index 47af5bb8154..9616dbb1feb 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1086,7 +1086,7 @@ a case-insensitive match is tried."
1086 (+ (- nodepos lastfilepos) (point))))) 1086 (+ (- nodepos lastfilepos) (point)))))
1087 1087
1088(defun Info-unescape-quotes (value) 1088(defun Info-unescape-quotes (value)
1089 "Unescape double quotes and backslashes in VALUE" 1089 "Unescape double quotes and backslashes in VALUE."
1090 (let ((start 0) 1090 (let ((start 0)
1091 (unquote value)) 1091 (unquote value))
1092 (while (string-match "[^\\\"]*\\(\\\\\\)[\\\\\"]" unquote start) 1092 (while (string-match "[^\\\"]*\\(\\\\\\)[\\\\\"]" unquote start)
@@ -1099,10 +1099,9 @@ a case-insensitive match is tried."
1099;; into the Info file for handling images. 1099;; into the Info file for handling images.
1100(defun Info-split-parameter-string (parameter-string) 1100(defun Info-split-parameter-string (parameter-string)
1101 "Return alist of (\"KEY\" . \"VALUE\") from PARAMETER-STRING; a 1101 "Return alist of (\"KEY\" . \"VALUE\") from PARAMETER-STRING; a
1102 whitespace separated list of KEY=VALUE pairs. If VALUE 1102whitespace separated list of KEY=VALUE pairs. If VALUE contains
1103 contains whitespace or double quotes, it must be quoted in 1103whitespace or double quotes, it must be quoted in double quotes and
1104 double quotes and any double quotes or backslashes must be 1104any double quotes or backslashes must be escaped (\\\",\\\\)."
1105 escaped (\\\",\\\\)."
1106 (let ((start 0) 1105 (let ((start 0)
1107 (parameter-alist)) 1106 (parameter-alist))
1108 (while (string-match 1107 (while (string-match
@@ -2683,12 +2682,12 @@ The locations are of the format used in `Info-history', i.e.
2683 "Go to the Info node in the Emacs manual for command COMMAND. 2682 "Go to the Info node in the Emacs manual for command COMMAND.
2684The command is found by looking up in Emacs manual's indices 2683The command is found by looking up in Emacs manual's indices
2685or in another manual found via COMMAND's `info-file' property or 2684or in another manual found via COMMAND's `info-file' property or
2686the variable `Info-file-list-for-emacs'. COMMAND must be a symbol 2685the variable `Info-file-list-for-emacs'.
2687or string." 2686COMMAND must be a symbol or string."
2688 (interactive "CFind documentation for command: ") 2687 (interactive "CFind documentation for command: ")
2689 ;; If command is given as a string, convert it to a symbol. 2688 ;; If command is given as a string, convert it to a symbol.
2690 (if (stringp command) 2689 (if (stringp command)
2691 (setq command (intern command))) 2690 (setq command (intern command)))
2692 (or (commandp command) 2691 (or (commandp command)
2693 (signal 'wrong-type-argument (list 'commandp command))) 2692 (signal 'wrong-type-argument (list 'commandp command)))
2694 (let ((where (Info-find-emacs-command-nodes command))) 2693 (let ((where (Info-find-emacs-command-nodes command)))
@@ -2785,9 +2784,9 @@ Preserve text properties."
2785 (setq mb (match-beginning 0) 2784 (setq mb (match-beginning 0)
2786 me (1+ mb) 2785 me (1+ mb)
2787 m (substring string mb me) 2786 m (substring string mb me)
2788 matches (cons m 2787 matches (cons m
2789 (cons m 2788 (cons m
2790 (cons (substring string start mb) 2789 (cons (substring string start mb)
2791 matches))) 2790 matches)))
2792 start me)) 2791 start me))
2793 (push (substring string start end) matches) 2792 (push (substring string start end) matches)
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index a9ed8299ad9..5e957d6b8ab 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -321,6 +321,11 @@ This also sets the following values:
321 o default value for the command `set-keyboard-coding-system'." 321 o default value for the command `set-keyboard-coding-system'."
322 (check-coding-system coding-system) 322 (check-coding-system coding-system)
323 (setq-default buffer-file-coding-system coding-system) 323 (setq-default buffer-file-coding-system coding-system)
324 (if (fboundp 'ucs-set-table-for-input)
325 (dolist (buffer (buffer-list))
326 (or (local-variable-p 'buffer-file-coding-system buffer)
327 (ucs-set-table-for-input buffer))))
328
324 (if default-enable-multibyte-characters 329 (if default-enable-multibyte-characters
325 (setq default-file-name-coding-system coding-system)) 330 (setq default-file-name-coding-system coding-system))
326 ;; If coding-system is nil, honor that on MS-DOS as well, so 331 ;; If coding-system is nil, honor that on MS-DOS as well, so
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 53a02e5caef..d160e4107f0 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -442,12 +442,16 @@ Like `compound-text', but does not produce escape sequences for compositions."
442 '((safe-charsets . t))) 442 '((safe-charsets . t)))
443 443
444(make-coding-system 444(make-coding-system
445 'compound-text-with-extensions 5 ?x 445 'compound-text-with-extensions 2 ?x
446 "Compound text encoding with extended segments. 446 "Compound text encoding with extended segments.
447 447
448See the variable `ctext-non-standard-encodings-alist' for the
449detail about how extended segments are handled.
450
448This coding system should be used only for X selections. It is inappropriate 451This coding system should be used only for X selections. It is inappropriate
449for decoding and encoding files, process I/O, etc." 452for decoding and encoding files, process I/O, etc."
450 nil 453 '((ascii t) (latin-iso8859-1 katakana-jisx0201 t) t t
454 nil ascii-eol ascii-cntl)
451 '((post-read-conversion . ctext-post-read-conversion) 455 '((post-read-conversion . ctext-post-read-conversion)
452 (pre-write-conversion . ctext-pre-write-conversion))) 456 (pre-write-conversion . ctext-pre-write-conversion)))
453 457
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 2c7160b381b..1674f7bf61a 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1330,12 +1330,42 @@ ARG is a list of coding categories ordered by priority."
1330;;; X selections 1330;;; X selections
1331 1331
1332(defvar ctext-non-standard-encodings-alist 1332(defvar ctext-non-standard-encodings-alist
1333 '(("ISO8859-15" . iso-8859-15) 1333 '(("big5-0" big5 2 (chinese-big5-1 chinese-big5-2))
1334 ("ISO8859-14" . iso-8859-14) 1334 ("ISO8859-14" iso-8859-14 1 latin-iso8859-14)
1335 ("KOI8-R" . koi8-r) 1335 ("ISO8859-15" iso-8859-15 1 latin-iso8859-15))
1336 ("BIG5-0" . big5)) 1336 "Alist of non-standard encoding names vs the corresponding usages in CTEXT.
1337 "Alist of non-standard encoding names vs Emacs coding systems. 1337
1338This alist is used to decode an extened segment of a compound text.") 1338It controls how extended segments of a compound text are handled
1339by the coding system `compound-text-with-extensions'.
1340
1341Each element has the form (ENCODING-NAME CODING-SYSTEM N-OCTET CHARSET).
1342
1343ENCODING-NAME is an encoding name of an \"extended segments\".
1344
1345CODING-SYSTEM is the coding-system to encode (or decode) the
1346characters into (or from) the extended segment.
1347
1348N-OCTET is the number of octets (bytes) that encodes a character
1349in the segment. It can be 0 (meaning the number of octets per
1350character is variable), 1, 2, 3, or 4.
1351
1352CHARSET is a charater set containing characters that are encoded
1353in the segment. It can be a list of character sets. It can also
1354be a char-table, in which case characters that have non-nil value
1355in the char-table are the target.
1356
1357On decoding CTEXT, all encoding names listed here are recognized.
1358
1359On encoding CTEXT, encoding names in the variable
1360`ctext-non-standard-encodings' (which see) and in the information
1361listed for the current language environment under the key
1362`ctext-non-standard-encodings' are used.")
1363
1364(defvar ctext-non-standard-encodings
1365 '("big5-0")
1366 "List of non-standard encoding names used in extended segments of CTEXT.
1367Each element must be one of the names listed in the variable
1368`ctext-non-standard-encodings-alist' (which see).")
1339 1369
1340(defvar ctext-non-standard-encodings-regexp 1370(defvar ctext-non-standard-encodings-regexp
1341 (string-to-multibyte 1371 (string-to-multibyte
@@ -1347,13 +1377,9 @@ This alist is used to decode an extened segment of a compound text.")
1347 "\\(\e%G[^\e]*\e%@\\)"))) 1377 "\\(\e%G[^\e]*\e%@\\)")))
1348 1378
1349;; Functions to support "Non-Standard Character Set Encodings" defined 1379;; Functions to support "Non-Standard Character Set Encodings" defined
1350;; by the COMPOUND-TEXT spec. 1380;; by the COMPOUND-TEXT spec. They also support "The UTF-8 encoding"
1351;; We support that by decoding the whole data by `ctext' which just 1381;; described in the section 7 of the documentation of COMPOUND-TEXT
1352;; pertains byte sequences belonging to ``extended segment'', then 1382;; distributed with XFree86.
1353;; decoding those byte sequences one by one in Lisp.
1354;; This function also supports "The UTF-8 encoding" described in the
1355;; section 7 of the documentation fo COMPOUND-TEXT distributed with
1356;; XFree86.
1357 1383
1358(defun ctext-post-read-conversion (len) 1384(defun ctext-post-read-conversion (len)
1359 "Decode LEN characters encoded as Compound Text with Extended Segments." 1385 "Decode LEN characters encoded as Compound Text with Extended Segments."
@@ -1365,7 +1391,6 @@ This alist is used to decode an extened segment of a compound text.")
1365 pos bytes) 1391 pos bytes)
1366 (or in-workbuf 1392 (or in-workbuf
1367 (narrow-to-region (point) (+ (point) len))) 1393 (narrow-to-region (point) (+ (point) len)))
1368 (decode-coding-region (point-min) (point-max) 'ctext)
1369 (if in-workbuf 1394 (if in-workbuf
1370 (set-buffer-multibyte t)) 1395 (set-buffer-multibyte t))
1371 (while (re-search-forward ctext-non-standard-encodings-regexp 1396 (while (re-search-forward ctext-non-standard-encodings-regexp
@@ -1376,11 +1401,14 @@ This alist is used to decode an extened segment of a compound text.")
1376 (let* ((M (char-after (+ pos 4))) 1401 (let* ((M (char-after (+ pos 4)))
1377 (L (char-after (+ pos 5))) 1402 (L (char-after (+ pos 5)))
1378 (encoding (match-string 2)) 1403 (encoding (match-string 2))
1379 (coding (or (cdr (assoc-ignore-case 1404 (encoding-info (assoc-ignore-case
1380 encoding 1405 encoding
1381 ctext-non-standard-encodings-alist)) 1406 ctext-non-standard-encodings-alist))
1382 (coding-system-p 1407 (coding (if encoding-info
1383 (intern (downcase encoding)))))) 1408 (nth 1 encoding-info)
1409 (setq encoding (intern (downcase encoding)))
1410 (and (coding-system-p encoding)
1411 encoding))))
1384 (setq bytes (- (+ (* (- M 128) 128) (- L 128)) 1412 (setq bytes (- (+ (* (- M 128) 128) (- L 128))
1385 (- (point) (+ pos 6)))) 1413 (- (point) (+ pos 6))))
1386 (when coding 1414 (when coding
@@ -1388,66 +1416,39 @@ This alist is used to decode an extened segment of a compound text.")
1388 (forward-char bytes) 1416 (forward-char bytes)
1389 (decode-coding-region (- (point) bytes) (point) coding))) 1417 (decode-coding-region (- (point) bytes) (point) coding)))
1390 ;; ESC % G --UTF-8-BYTES-- ESC % @ 1418 ;; ESC % G --UTF-8-BYTES-- ESC % @
1391 (setq bytes (- (point) pos)) 1419 (delete-char -3)
1392 (decode-coding-region (- (point) bytes) (point) 'utf-8)))) 1420 (delete-region pos (+ pos 3))
1421 (decode-coding-region pos (point) 'utf-8))))
1393 (goto-char (point-min)) 1422 (goto-char (point-min))
1394 (- (point-max) (point))))) 1423 (- (point-max) (point)))))
1395 1424
1396;; From X registry 2001/06/01 1425;; Return a char table of extended segment usage for each character.
1397;; 20. NON-STANDARD CHARACTER SET ENCODINGS 1426;; Each value of the char table is nil, one of the elements of
1398 1427;; `ctext-non-standard-encodings-alist', or the symbol `utf-8'.
1399;; See Section 6 of the Compound Text standard. 1428
1400 1429(defun ctext-non-standard-encodings-table ()
1401;; Name Reference 1430 (let ((table (make-char-table 'translation-table)))
1402;; ---- --------- 1431 (aset table (make-char 'mule-unicode-0100-24ff) 'utf-8)
1403;; "DEC.CNS11643.1986-2" [53] 1432 (aset table (make-char 'mule-unicode-2500-33ff) 'utf-8)
1404;; CNS11643 2-plane using the recommended 1433 (aset table (make-char 'mule-unicode-e000-ffff) 'utf-8)
1405;; internal representation scheme 1434 (dolist (encoding (reverse
1406;; "DEC.DTSCS.1990-2" [54] 1435 (append
1407;; DEC Taiwan Supplemental Character Set 1436 (get-language-info current-language-environment
1408;; "fujitsu.u90x03" [87] 1437 'ctext-non-standard-encodings)
1409;; "ILA" [62] 1438 ctext-non-standard-encodings)))
1410;; registry prefix 1439 (let* ((slot (assoc encoding ctext-non-standard-encodings-alist))
1411;; "IPSYS" [59] 1440 (charset (nth 3 slot)))
1412;; registry prefix 1441 (if charset
1413;; "omron_UDC" [45] 1442 (cond ((charsetp charset)
1414;; omron User Defined Charset 1443 (aset table (make-char charset) slot))
1415;; "omron_UDC_ja" [45] 1444 ((listp charset)
1416;; omron User Defined Charset for Japanese 1445 (dolist (elt charset)
1417;; "omron_UDC_zh" [45] 1446 (aset table (make-char elt) slot)))
1418;; omron User Defined Charset for Chinese(Main land) 1447 ((char-table-p charset)
1419;; "omron_UDC_tw" [45] 1448 (map-char-table #'(lambda (k v)
1420;; omron User Defined Charset for Chinese(Taiwan) 1449 (if (and v (> k 128)) (aset table k slot)))
1421 1450 charset))))))
1422;; If you add charsets here, be sure to modify the regexp used by 1451 table))
1423;; ctext-pre-write-conversion to look up non-standard charsets.
1424(defvar ctext-non-standard-designations-alist
1425 '(("$(0" . (big5 "big5-0" 2))
1426 ("$(1" . (big5 "big5-0" 2))
1427 ;; The following are actually standard; generating extended
1428 ;; segments for them is wrong and screws e.g. Latin-9 users.
1429 ;; 8859-{10,13,16} aren't Emacs charsets anyhow. -- fx
1430;; ("-V" . (t "iso8859-10" 1))
1431;; ("-Y" . (t "iso8859-13" 1))
1432;; ("-_" . (t "iso8859-14" 1))
1433;; ("-b" . (t "iso8859-15" 1))
1434;; ("-f" . (t "iso8859-16" 1))
1435 )
1436 "Alist of ctext control sequences that introduce character sets which
1437are not in the list of approved encodings, and the corresponding
1438coding system, identifier string, and number of octets per encoded
1439character.
1440
1441Each element has the form (CTLSEQ . (ENCODING CHARSET NOCTETS)). CTLSEQ
1442is the control sequence (sans the leading ESC) that introduces the character
1443set in the text encoded by compound-text. ENCODING is a coding system
1444symbol; if it is t, it means that the ctext coding system already encodes
1445the text correctly, and only the leading control sequence needs to be altered.
1446If ENCODING is a coding system, we need to re-encode the text with that
1447coding system. CHARSET is the name of the charset we need to put into
1448the leading control sequence. NOCTETS is the number of octets (bytes) that
1449encode each character in this charset. NOCTETS can be 0 (meaning the number
1450of octets per character is variable), 1, 2, 3, or 4.")
1451 1452
1452(defun ctext-pre-write-conversion (from to) 1453(defun ctext-pre-write-conversion (from to)
1453 "Encode characters between FROM and TO as Compound Text w/Extended Segments. 1454 "Encode characters between FROM and TO as Compound Text w/Extended Segments.
@@ -1470,47 +1471,56 @@ text, and convert it in the temporary buffer. Otherwise, convert in-place."
1470 (insert-buffer-substring buf from to)))) 1471 (insert-buffer-substring buf from to))))
1471 1472
1472 ;; Now we can encode the whole buffer. 1473 ;; Now we can encode the whole buffer.
1473 (let ((case-fold-search nil) 1474 (let ((encoding-table (ctext-non-standard-encodings-table))
1474 last-coding-system-used 1475 last-coding-system-used
1475 pos posend desig encode-info encoding chset noctets textlen) 1476 last-pos last-encoding-info
1476 (goto-char (point-min)) 1477 encoding-info end-pos)
1477 ;; At first encode the whole buffer. 1478 (goto-char (setq last-pos (point-min)))
1478 (encode-coding-region (point-min) (point-max) 'ctext-no-compositions) 1479 (setq end-pos (point-marker))
1479 ;; Then replace ISO-2022 charset designations with extended 1480 (while (re-search-forward "[^\000-\177]+" nil t)
1480 ;; segments, for those charsets that are not part of the 1481 ;; Found a sequence of non-ASCII characters.
1481 ;; official X registry. The regexp below finds the leading 1482 (setq last-pos (match-beginning 0)
1482 ;; sequences for big5. 1483 last-encoding-info (aref encoding-table (char-after last-pos)))
1483 (while (re-search-forward "\e\\(\$([01]\\)" nil 'move) 1484 (set-marker end-pos (match-end 0))
1484 (setq pos (match-beginning 0) 1485 (goto-char (1+ last-pos))
1485 posend (point) 1486 (catch 'tag
1486 desig (match-string 1) 1487 (while t
1487 encode-info (cdr (assoc desig 1488 (setq encoding-info
1488 ctext-non-standard-designations-alist)) 1489 (if (< (point) end-pos)
1489 encoding (car encode-info) 1490 (aref encoding-table (following-char))))
1490 chset (cadr encode-info) 1491 (unless (eq last-encoding-info encoding-info)
1491 noctets (car (cddr encode-info))) 1492 (cond ((consp last-encoding-info)
1492 (skip-chars-forward "^\e") 1493 ;; Encode the previous range using an extended
1493 (cond 1494 ;; segment.
1494 ((eq encoding t) ; only the leading sequence needs to be changed 1495 (let ((encoding-name (car last-encoding-info))
1495 (setq textlen (+ (- (point) posend) (length chset) 1)) 1496 (coding-system (nth 1 last-encoding-info))
1496 ;; Generate the control sequence for an extended segment. 1497 (noctets (nth 2 last-encoding-info))
1497 (replace-match (format "\e%%/%d%c%c%s" 1498 len)
1498 noctets 1499 (encode-coding-region last-pos (point) coding-system)
1499 (+ (/ textlen 128) 128) 1500 (setq len (+ (length encoding-name) 1
1500 (+ (% textlen 128) 128) 1501 (- (point) last-pos)))
1501 chset) 1502 (save-excursion
1502 t t)) 1503 (goto-char last-pos)
1503 ((coding-system-p encoding) ; need to recode the entire segment... 1504 (insert (string-to-multibyte
1504 (decode-coding-region pos (point) 'ctext-no-compositions) 1505 (format "\e%%/%d%c%c%s"
1505 (encode-coding-region pos (point) encoding) 1506 noctets
1506 (setq textlen (+ (- (point) pos) (length chset) 1)) 1507 (+ (/ len 128) 128)
1507 (save-excursion 1508 (+ (% len 128) 128)
1508 (goto-char pos) 1509 encoding-name))))))
1509 (insert (format "\e%%/%d%c%c%s" 1510 ((eq last-encoding-info 'utf-8)
1510 noctets 1511 ;; Encode the previous range using UTF-8 encoding
1511 (+ (/ textlen 128) 128) 1512 ;; extention.
1512 (+ (% textlen 128) 128) 1513 (encode-coding-region last-pos (point) 'mule-utf-8)
1513 chset)))))) 1514 (save-excursion
1515 (goto-char last-pos)
1516 (insert "\e%G"))
1517 (insert "\e%@")))
1518 (setq last-pos (point)
1519 last-encoding-info encoding-info))
1520 (if (< (point) end-pos)
1521 (forward-char 1)
1522 (throw 'tag nil)))))
1523 (set-marker end-pos nil)
1514 (goto-char (point-min)))) 1524 (goto-char (point-min))))
1515 ;; Must return nil, as build_annotations_2 expects that. 1525 ;; Must return nil, as build_annotations_2 expects that.
1516 nil) 1526 nil)
diff --git a/lisp/international/ucs-tables.el b/lisp/international/ucs-tables.el
index d91a4b9fbf2..476c8dfc191 100644
--- a/lisp/international/ucs-tables.el
+++ b/lisp/international/ucs-tables.el
@@ -2507,6 +2507,8 @@ BUFFER defaults to the current buffer."
2507 (coding-system-base default-buffer-file-coding-system)))) 2507 (coding-system-base default-buffer-file-coding-system))))
2508 (when cs 2508 (when cs
2509 (setq table (coding-system-get cs 'translation-table-for-encode)) 2509 (setq table (coding-system-get cs 'translation-table-for-encode))
2510 (if (and table (symbolp table))
2511 (setq table (get table 'translation-table)))
2510 (unless (char-table-p table) 2512 (unless (char-table-p table)
2511 (setq table (coding-system-get cs 'translation-table-for-input))) 2513 (setq table (coding-system-get cs 'translation-table-for-input)))
2512 (when (char-table-p table) 2514 (when (char-table-p table)
diff --git a/lisp/language/cyrillic.el b/lisp/language/cyrillic.el
index ad3ab940492..19ff671834b 100644
--- a/lisp/language/cyrillic.el
+++ b/lisp/language/cyrillic.el
@@ -465,9 +465,17 @@ Support for Russian using koi8-r and the russian-computer input method.")
465 465
466(define-coding-system-alias 'cp1251 'windows-1251) 466(define-coding-system-alias 'cp1251 'windows-1251)
467 467
468(let ((elt `("microsoft-cp1251" windows-1251 1
469 ,(get 'encode-windows-1251 'translation-table)))
470 (slot (assoc "microsoft-cp1251" ctext-non-standard-encodings-alist)))
471 (if slot
472 (setcdr slot (cdr elt))
473 (push elt ctext-non-standard-encodings-alist)))
474
468(set-language-info-alist 475(set-language-info-alist
469 "Bulgarian" `((coding-system windows-1251) 476 "Bulgarian" `((coding-system windows-1251)
470 (coding-priority windows-1251) 477 (coding-priority windows-1251)
478 (ctext-non-standard-encodings "microsoft-cp1251")
471 (nonascii-translation 479 (nonascii-translation
472 . ,(get 'decode-windows-1251 'translation-table)) 480 . ,(get 'decode-windows-1251 'translation-table))
473 (input-method . "bulgarian-bds") 481 (input-method . "bulgarian-bds")
@@ -479,6 +487,7 @@ Support for Russian using koi8-r and the russian-computer input method.")
479(set-language-info-alist 487(set-language-info-alist
480 "Belarusian" `((coding-system windows-1251) 488 "Belarusian" `((coding-system windows-1251)
481 (coding-priority windows-1251) 489 (coding-priority windows-1251)
490 (ctext-non-standard-encodings "microsoft-cp1251")
482 (nonascii-translation 491 (nonascii-translation
483 . ,(get 'decode-windows-1251 'translation-table)) 492 . ,(get 'decode-windows-1251 'translation-table))
484 (input-method . "belarusian") 493 (input-method . "belarusian")
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 61fa0fad845..1d58bcd732c 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -326,7 +326,7 @@ off the specialized speedbar mode."
326 (goto-char (point-min)) 326 (goto-char (point-min))
327 (let ((case-fold-search t)) 327 (let ((case-fold-search t))
328 (looking-at "Watch Expressions:"))))) 328 (looking-at "Watch Expressions:")))))
329 (erase-buffer) 329 (erase-buffer)
330 (insert "Watch Expressions:\n") 330 (insert "Watch Expressions:\n")
331 (let ((var-list gdb-var-list)) 331 (let ((var-list gdb-var-list))
332 (while var-list 332 (while var-list
@@ -337,17 +337,21 @@ off the specialized speedbar mode."
337 start (1+ (match-beginning 0)))) 337 start (1+ (match-beginning 0))))
338 (if (equal (nth 2 var) "0") 338 (if (equal (nth 2 var) "0")
339 (speedbar-make-tag-line 'bracket ?? nil nil 339 (speedbar-make-tag-line 'bracket ?? nil nil
340 (concat (car var) " " (nth 4 var)) 340 (concat (car var) "\t" (nth 4 var))
341 'gdb-var-delete 341 'gdb-edit-value
342 nil 'speedbar-directory-face depth) 342 nil
343 (if (and (nth 5 var)
344 gdb-show-changed-values)
345 'font-lock-warning-face
346 nil) depth)
343 (if (and (cadr var-list) 347 (if (and (cadr var-list)
344 (string-match varnum (cadr (cadr var-list)))) 348 (string-match varnum (cadr (cadr var-list))))
345 (setq char ?-)) 349 (setq char ?-))
346 (speedbar-make-tag-line 'bracket char 350 (speedbar-make-tag-line 'bracket char
347 'gdb-speedbar-expand-node varnum 351 'gdb-speedbar-expand-node varnum
348 (concat (car var) " " (nth 3 var)) 352 (concat (car var) "\t" (nth 3 var))
349 'gdb-var-delete 353 'gdb-var-delete
350 nil 'speedbar-directory-face depth))) 354 nil nil depth)))
351 (setq var-list (cdr var-list)))) 355 (setq var-list (cdr var-list))))
352 (setq gdb-var-changed nil))) 356 (setq gdb-var-changed nil)))
353 (t (if (and (save-excursion 357 (t (if (and (save-excursion
diff --git a/lisp/shell.el b/lisp/shell.el
index c9191bc1648..cc83dcf1429 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -177,7 +177,7 @@ This is a fine thing to set in your `.emacs' file.")
177(defvar shell-file-name-quote-list 177(defvar shell-file-name-quote-list
178 (if (memq system-type '(ms-dos windows-nt)) 178 (if (memq system-type '(ms-dos windows-nt))
179 nil 179 nil
180 (append shell-delimiter-argument-list '(?\ ?\* ?\! ?\" ?\' ?\` ?\#))) 180 (append shell-delimiter-argument-list '(?\ ?\* ?\! ?\" ?\' ?\` ?\# ?\\)))
181 "List of characters to quote when in a file name. 181 "List of characters to quote when in a file name.
182This variable is used to initialize `comint-file-name-quote-list' in the 182This variable is used to initialize `comint-file-name-quote-list' in the
183shell buffer. The value may depend on the operating system or shell. 183shell buffer. The value may depend on the operating system or shell.
diff --git a/lisp/vc.el b/lisp/vc.el
index 77ec540bae4..79ce8594599 100644
--- a/lisp/vc.el
+++ b/lisp/vc.el
@@ -7,7 +7,7 @@
7;; Maintainer: Andre Spiegel <spiegel@gnu.org> 7;; Maintainer: Andre Spiegel <spiegel@gnu.org>
8;; Keywords: tools 8;; Keywords: tools
9 9
10;; $Id: vc.el,v 1.360 2003/09/01 15:45:17 miles Exp $ 10;; $Id: vc.el,v 1.361 2003/12/24 23:18:10 uid66361 Exp $
11 11
12;; This file is part of GNU Emacs. 12;; This file is part of GNU Emacs.
13 13
@@ -2144,7 +2144,7 @@ Called by dired after any portion of a vc-dired buffer has been read in."
2144 ;; We cannot remove the top level directory. 2144 ;; We cannot remove the top level directory.
2145 ;; Just make it look a little nicer. 2145 ;; Just make it look a little nicer.
2146 (forward-line 1) 2146 (forward-line 1)
2147 (kill-line) 2147 (or (eobp) (kill-line))
2148 (if (not (dired-next-subdir 1 t)) 2148 (if (not (dired-next-subdir 1 t))
2149 (goto-char (point-max)))))) 2149 (goto-char (point-max))))))
2150 (goto-char (point-min))) 2150 (goto-char (point-min)))