Add arch taglines
[bpt/emacs.git] / lisp / international / iso-ascii.el
index 8a8f196..3bffb17 100644 (file)
@@ -1,4 +1,4 @@
-;;; iso-ascii.el --- set up char tables for ISO 8859/1 on ASCII terminals.
+;;; iso-ascii.el --- set up char tables for ISO 8859/1 on ASCII terminals
 
 ;; Copyright (C) 1987, 1995 Free Software Foundation, Inc.
 
@@ -19,8 +19,9 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
 
 ;;; Commentary:
 
 
 (require 'disp-table)
 
-(defvar iso-ascii-convenient nil
-  "*Non-nil means `iso-ascii' should aim for convenience, not precision.")
+(defgroup iso-ascii nil
+  "Set up char tables for ISO 8859/1 on ASCII terminals."
+  :prefix "iso-ascii-"
+  :group 'i18n)
+
+(defcustom iso-ascii-convenient nil
+  "*Non-nil means `iso-ascii' should aim for convenience, not precision."
+  :type 'boolean
+  :group 'iso-ascii)
+
+(defvar iso-ascii-display-table (make-display-table)
+  "Display table used for ISO-ASCII mode.")
+
+(defvar iso-ascii-standard-display-table nil
+  "Display table used when not in ISO-ASCII mode.")
+;; Don't alter iso-ascii-standard-display-table if this file is loaded again,
+;; or even by using C-M-x on any of the expressions.
+(unless iso-ascii-standard-display-table
+  (setq iso-ascii-standard-display-table
+       standard-display-table))
 
 (defun iso-ascii-display (code string &optional convenient-string)
   (if iso-ascii-convenient
       (setq string (or convenient-string string))
     (setq string (concat "{" string "}")))
-  (standard-display-ascii code string))
+  ;; unibyte
+  (aset iso-ascii-display-table code string)
+  ;; multibyte
+  (aset iso-ascii-display-table (make-char 'latin-iso8859-1 (- code 128))
+       string))
 
 (iso-ascii-display 160 "_" " ")   ; NBSP (no-break space)
 (iso-ascii-display 161 "!")   ; inverted exclamation mark
@@ -65,7 +88,7 @@
 (iso-ascii-display 179 "3")   ; superscript three
 (iso-ascii-display 180 "'")   ; acute accent
 (iso-ascii-display 181 "u")   ; micro sign
-(iso-ascii-display 182 "P" "{P}")   ; pilcrow
+(iso-ascii-display 182 "P" "(P)")   ; pilcrow
 (iso-ascii-display 183 ".")   ; middle dot
 (iso-ascii-display 184 ",")   ; cedilla
 (iso-ascii-display 185 "1")   ; superscript one
 (iso-ascii-display 254 "th")  ; small thorn, Icelandic
 (iso-ascii-display 255 "\"y") ; small y with diaeresis or umlaut mark
 
+(defun iso-ascii-mode (arg)
+  "Toggle ISO-ASCII mode."
+  (interactive "P")
+  (unless arg
+    (setq arg (eq standard-display-table iso-ascii-standard-display-table)))
+  (setq standard-display-table
+       (if arg
+           iso-ascii-display-table
+         iso-ascii-standard-display-table)))
+
 (provide 'iso-ascii)
 
+;;; arch-tag: 687edf0d-f792-471e-b50e-be805938359a
 ;;; iso-ascii.el ends here