diff options
| author | Karoly Lorentey | 2003-12-28 16:03:57 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2003-12-28 16:03:57 +0000 |
| commit | 2e7f2ec031f1708b80df9dc1f60f6b1cb24a5c02 (patch) | |
| tree | 6e682f963c37c5cb6610711ec395ed4e82fff7fc /lisp | |
| parent | 53fed860b6a9e8f89eca3fd8a15e49c58aace85d (diff) | |
| parent | 8af1a978a8f635a9d05f56200ba42613e3574c44 (diff) | |
| download | emacs-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/ChangeLog | 82 | ||||
| -rw-r--r-- | lisp/comint.el | 8 | ||||
| -rw-r--r-- | lisp/complete.el | 20 | ||||
| -rw-r--r-- | lisp/ffap.el | 2 | ||||
| -rw-r--r-- | lisp/fringe.el | 2 | ||||
| -rw-r--r-- | lisp/gdb-ui.el | 99 | ||||
| -rw-r--r-- | lisp/info.el | 21 | ||||
| -rw-r--r-- | lisp/international/mule-cmds.el | 5 | ||||
| -rw-r--r-- | lisp/international/mule-conf.el | 8 | ||||
| -rw-r--r-- | lisp/international/mule.el | 242 | ||||
| -rw-r--r-- | lisp/international/ucs-tables.el | 2 | ||||
| -rw-r--r-- | lisp/language/cyrillic.el | 11 | ||||
| -rw-r--r-- | lisp/progmodes/gud.el | 16 | ||||
| -rw-r--r-- | lisp/shell.el | 2 | ||||
| -rw-r--r-- | lisp/vc.el | 4 |
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 | ||
| 6 | 2003-12-25 Markus Rost <rost@mathematik.uni-bielefeld.de> | ||
| 7 | |||
| 8 | * vc.el (vc-dired-purge): Avoid error from `kill-line'. | ||
| 9 | |||
| 10 | 2003-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 | |||
| 17 | 2003-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 | |||
| 27 | 2003-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 | |||
| 41 | 2003-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 | |||
| 65 | 2003-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 | |||
| 70 | 2003-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 | |||
| 6 | 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk> | 88 | 2003-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 | |||
| 119 | Otherwise the negation of the fringe value in the currently selected | 119 | Otherwise the negation of the fringe value in the currently selected |
| 120 | frame parameter is used." | 120 | frame 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 | ||
| 179 | speedbar." | ||
| 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 | ||
| 332 | recently 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. |
| 312 | TEXT is the text of the button we clicked on, a + or - item. | 338 | TEXT 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 |
| 1314 | source in the source buffer." | 1344 | source 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 | 1102 | whitespace separated list of KEY=VALUE pairs. If VALUE contains |
| 1103 | contains whitespace or double quotes, it must be quoted in | 1103 | whitespace or double quotes, it must be quoted in double quotes and |
| 1104 | double quotes and any double quotes or backslashes must be | 1104 | any 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. |
| 2684 | The command is found by looking up in Emacs manual's indices | 2683 | The command is found by looking up in Emacs manual's indices |
| 2685 | or in another manual found via COMMAND's `info-file' property or | 2684 | or in another manual found via COMMAND's `info-file' property or |
| 2686 | the variable `Info-file-list-for-emacs'. COMMAND must be a symbol | 2685 | the variable `Info-file-list-for-emacs'. |
| 2687 | or string." | 2686 | COMMAND 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 | ||
| 448 | See the variable `ctext-non-standard-encodings-alist' for the | ||
| 449 | detail about how extended segments are handled. | ||
| 450 | |||
| 448 | This coding system should be used only for X selections. It is inappropriate | 451 | This coding system should be used only for X selections. It is inappropriate |
| 449 | for decoding and encoding files, process I/O, etc." | 452 | for 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 | |
| 1338 | This alist is used to decode an extened segment of a compound text.") | 1338 | It controls how extended segments of a compound text are handled |
| 1339 | by the coding system `compound-text-with-extensions'. | ||
| 1340 | |||
| 1341 | Each element has the form (ENCODING-NAME CODING-SYSTEM N-OCTET CHARSET). | ||
| 1342 | |||
| 1343 | ENCODING-NAME is an encoding name of an \"extended segments\". | ||
| 1344 | |||
| 1345 | CODING-SYSTEM is the coding-system to encode (or decode) the | ||
| 1346 | characters into (or from) the extended segment. | ||
| 1347 | |||
| 1348 | N-OCTET is the number of octets (bytes) that encodes a character | ||
| 1349 | in the segment. It can be 0 (meaning the number of octets per | ||
| 1350 | character is variable), 1, 2, 3, or 4. | ||
| 1351 | |||
| 1352 | CHARSET is a charater set containing characters that are encoded | ||
| 1353 | in the segment. It can be a list of character sets. It can also | ||
| 1354 | be a char-table, in which case characters that have non-nil value | ||
| 1355 | in the char-table are the target. | ||
| 1356 | |||
| 1357 | On decoding CTEXT, all encoding names listed here are recognized. | ||
| 1358 | |||
| 1359 | On encoding CTEXT, encoding names in the variable | ||
| 1360 | `ctext-non-standard-encodings' (which see) and in the information | ||
| 1361 | listed 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. | ||
| 1367 | Each 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 | ||
| 1437 | are not in the list of approved encodings, and the corresponding | ||
| 1438 | coding system, identifier string, and number of octets per encoded | ||
| 1439 | character. | ||
| 1440 | |||
| 1441 | Each element has the form (CTLSEQ . (ENCODING CHARSET NOCTETS)). CTLSEQ | ||
| 1442 | is the control sequence (sans the leading ESC) that introduces the character | ||
| 1443 | set in the text encoded by compound-text. ENCODING is a coding system | ||
| 1444 | symbol; if it is t, it means that the ctext coding system already encodes | ||
| 1445 | the text correctly, and only the leading control sequence needs to be altered. | ||
| 1446 | If ENCODING is a coding system, we need to re-encode the text with that | ||
| 1447 | coding system. CHARSET is the name of the charset we need to put into | ||
| 1448 | the leading control sequence. NOCTETS is the number of octets (bytes) that | ||
| 1449 | encode each character in this charset. NOCTETS can be 0 (meaning the number | ||
| 1450 | of 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. |
| 182 | This variable is used to initialize `comint-file-name-quote-list' in the | 182 | This variable is used to initialize `comint-file-name-quote-list' in the |
| 183 | shell buffer. The value may depend on the operating system or shell. | 183 | shell 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))) |