]> code.delx.au - gnu-emacs/blobdiff - lisp/simple.el
(turn-on-auto-fill): Mark it as an option for `text-mode-hook'.
[gnu-emacs] / lisp / simple.el
index ab4fa87513792f63e15162cb6c7dbf28bced6e74..18f8bc9a4b949205ebc0d546d6c90e5f07c63d7b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; simple.el --- basic editing commands for Emacs
 
-;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 1998
+;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 98, 1999
 ;;        Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
@@ -517,29 +517,40 @@ Each language environment may show different external character components."
                     pos total percent beg end col hscroll)
          (message "point=%d of %d(%d%%)  column %d %s"
                   pos total percent col hscroll))
-      (let* ((coding-system buffer-file-coding-system)
-            (encoding
-             (encode-coding-string (char-to-string char) coding-system t))
-            (encoding-string-hex
-             (mapconcat (lambda (ch) (format "0x%x" ch)) encoding " "))
-            (encoding-msg
-             (if (and coding-system
-                              (not (and (= (length encoding) 1)
-                                        (= (aref encoding 0) char))))
-                 (format "(0%o, %d, 0x%x, ext %s)"
-                         char char char
-                         encoding-string-hex)
-               (format "(0%o, %d, 0x%x)"
-                       char char char))))
+      (let ((charset (char-charset char))
+           (coding-system buffer-file-coding-system)
+           slot external encoding-msg)
+       ;; To decided an external character code, we use
+       ;; charset-origin-alist property of buffer-file-coding-system.
+       ;; But, if buffer-file-coding-system is nil of undecided, use
+       ;; that property of default-buffer-file-coding-system.  If
+       ;; that property value is nil, we don't show external
+       ;; character code.
+       (if (or (not coding-system)
+               (eq (coding-system-type coding-system) t))
+           (setq coding-system default-buffer-file-coding-system))
+       (if (and coding-system
+                (setq slot
+                      (coding-system-get coding-system 'charset-origin-alist))
+                (setq slot (assq charset slot)))
+           (setq external (list (nth 1 slot) (funcall (nth 2 slot) char))))
+       (setq encoding-msg
+             (if external
+                 (format "(0%o, %d, 0x%x, ext 0x%x)"
+                         char char char (nth 1 external))
+               (format "(0%o, %d, 0x%x)" char char char)))
        (if detail
-           (let* ((internal (split-char char))
-                  (charset (char-charset char))
-                  (slot (assq charset charset-origin-alist))
-                  external)
-             (if slot
-                 (setq external (list (nth 1 slot) (funcall (nth 2 slot) char)))
-               (if (eq charset 'composition)
-                   (setq internal '("composite-character"))
+           ;; We show the detailed information of CHAR.
+           (let (internal)
+             (if (eq charset 'composition)
+                 ;; For a composite character, we show the components
+                 ;; only.
+                 (setq internal (concat "(composition of \""
+                                        (decompose-composite-char char)
+                                        "\")")
+                       external nil)
+               (setq internal (split-char char))
+               (unless external
                  (setq external (cons (charset-short-name charset)
                                       (copy-sequence (cdr internal))))
                  (if (= (charset-iso-graphic-plane charset) 1)
@@ -552,7 +563,7 @@ Each language environment may show different external character components."
                       (if (< char 256)
                           (single-key-description char)
                         (char-to-string char))
-                      encoding-msg (or internal "") (or external "")))
+                      encoding-msg internal (or external "")))
          (if (or (/= beg 1) (/= end (1+ total)))
              (message "Char: %s %s point=%d of %d(%d%%) <%d - %d>  column %d %s"
                       (if (< char 256)
@@ -1184,7 +1195,8 @@ will be intermixed in the output stream.")
                                      error-buffer)
   "Execute string COMMAND in inferior shell with region as input.
 Normally display output (if any) in temp buffer `*Shell Command Output*';
-Prefix arg means replace the region with it.
+Prefix arg means replace the region with it.  Return the exit code of
+COMMAND.
 
 To specify a coding system for converting non-ASCII characters
 in the input and output to the shell command, use \\[universal-coding-system-argument]
@@ -1239,7 +1251,8 @@ of ERROR-BUFFER."
         (if error-buffer 
             (concat (file-name-directory temp-file-name-pattern)
                     (make-temp-name "scor"))
-          nil)))
+          nil))
+       exit-status)
     (if (or replace
            (and output-buffer
                 (not (or (bufferp output-buffer) (stringp output-buffer))))
@@ -1249,11 +1262,12 @@ of ERROR-BUFFER."
          ;; Don't muck with mark unless REPLACE says we should.
          (goto-char start)
          (and replace (push-mark))
-         (call-process-region start end shell-file-name t
-                              (if error-file
-                                  (list t error-file)
-                                t)
-                              nil shell-command-switch command)
+         (setq exit-status
+               (call-process-region start end shell-file-name t
+                                    (if error-file
+                                        (list t error-file)
+                                      t)
+                                    nil shell-command-switch command))
          (let ((shell-buffer (get-buffer "*Shell Command Output*")))
            (and shell-buffer (not (eq shell-buffer (current-buffer)))
                 (kill-buffer shell-buffer)))
@@ -1263,8 +1277,7 @@ of ERROR-BUFFER."
       ;; replacing its entire contents.
       (let ((buffer (get-buffer-create
                     (or output-buffer "*Shell Command Output*")))
-           (success nil)
-           (exit-status nil))
+           (success nil))
        (unwind-protect
            (if (eq buffer (current-buffer))
                ;; If the input is the same buffer as the output,
@@ -1279,9 +1292,10 @@ of ERROR-BUFFER."
                                                  (if error-file
                                                      (list t error-file)
                                                    t)
-                                                 nil shell-command-switch command))
-                      (setq success t))
-             ;; Clear the output buffer, then run the command with output there.
+                                                 nil shell-command-switch
+                                                 command)))
+             ;; Clear the output buffer, then run the command with
+             ;; output there.
              (save-excursion
                (set-buffer buffer)
                (setq buffer-read-only nil)
@@ -1291,8 +1305,8 @@ of ERROR-BUFFER."
                                         (if error-file
                                             (list buffer error-file)
                                           buffer)
-                                        nil shell-command-switch command))
-             (setq success t))
+                                        nil shell-command-switch command)))
+         (setq success (zerop exit-status))
          ;; Report the amount of output.
          (let ((lines (save-excursion
                         (set-buffer buffer)
@@ -1323,7 +1337,8 @@ of ERROR-BUFFER."
          (set-buffer (get-buffer-create error-buffer))
          ;; Do no formatting while reading error file, for fear of looping.
          (format-insert-file error-file nil)
-         (delete-file error-file)))))
+         (delete-file error-file)))
+    exit-status))
        
 (defun shell-command-to-string (command)
   "Execute shell command COMMAND and return its output as a string."
@@ -3123,6 +3138,7 @@ for `auto-fill-function' when turning Auto Fill mode on."
 (defun turn-on-auto-fill ()
   "Unconditionally turn on Auto Fill mode."
   (auto-fill-mode 1))
+(custom-add-option 'text-mode-hook 'turn-on-auto-fill)
 
 (defun set-fill-column (arg)
   "Set `fill-column' to specified argument.