[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: html-mode: C-c 8 doesn't work properly
From: |
Eli Zaretskii |
Subject: |
Re: html-mode: C-c 8 doesn't work properly |
Date: |
Mon, 11 Feb 2002 21:43:29 +0200 |
> From: Felix Natter <fnatter@gmx.net>
> Newsgroups: gnu.emacs.bug
> Date: 11 Feb 2002 18:01:18 +0100
>
> Sorry, the "C-c 8" (sgml-name-8bit-mode) feature which worked fine
> with Emacs 20 does not work with Emacs 21 at all.
> If sgml-name-8bit-mode is on, then you should be able to type i.e. '"o' and
> it will insert "ö".
Does it help to say "C-x RET k latin-1 RET"?
Also, you may wish to try the following changes, which will be in the
next version:
2001-09-15 Eli Zaretskii <eliz@is.elta.co.il>
* textmodes/sgml-mode.el (sgml-mode-map): Bind 8-bit codes above
127 to sgml-maybe-name-self.
(sgml-name-8bit-mode): Doc fix.
(sgml-char-names-table): New variable.
(sgml-name-char): Support non-ASCII and mule-unicode-*
characters. Doc fix.
(sgml-maybe-name-self): Convert unibyte characters to multibyte.
*** lisp/textmodes/sgml-mode.e~0 Fri Jul 20 12:11:26 2001
--- lisp/textmodes/sgml-mode.el Sat Sep 15 17:58:14 2001
***************
*** 107,112 ****
--- 107,116 ----
(define-key map "'" 'sgml-name-self))))
(define-key map (vector (make-char 'latin-iso8859-1))
'sgml-maybe-name-self)
+ (let ((c 127)
+ (map (nth 1 map)))
+ (while (< (setq c (1+ c)) 256)
+ (aset map c 'sgml-maybe-name-self)))
(define-key map [menu-bar sgml] (cons "SGML" menu-map))
(define-key menu-map [sgml-validate] '("Validate" . sgml-validate))
(define-key menu-map [sgml-name-8bit-mode]
***************
*** 143,149 ****
(defcustom sgml-name-8bit-mode nil
! "*When non-nil, insert 8 bit characters with their names."
:type 'boolean
:group 'sgml)
--- 147,153 ----
(defcustom sgml-name-8bit-mode nil
! "*When non-nil, insert non-ASCII characters as named entities."
:type 'boolean
:group 'sgml)
***************
*** 182,187 ****
--- 186,205 ----
"oslash" "ugrave" "uacute" "ucirc" "uuml" "yacute" "thorn" "yuml"]
"Vector of symbolic character names without `&' and `;'.")
+ (put 'sgml-table 'char-table-extra-slots 0)
+
+ (defvar sgml-char-names-table
+ (let ((table (make-char-table 'sgml-table))
+ (i 32)
+ elt)
+ (while (< i 256)
+ (setq elt (aref sgml-char-names i))
+ (if elt (aset table (make-char 'latin-iso8859-1 i) elt))
+ (setq i (1+ i)))
+ table)
+ "A table for mapping non-ASCII characters into SGML entity names.
+ Currently, only Latin-1 characters are supported.")
+
;; nsgmls is a free SGML parser in the SP suite available from
;; ftp.jclark.com and otherwise packaged for GNU systems.
***************
*** 449,456 ****
(defun sgml-name-char (&optional char)
"Insert a symbolic character name according to `sgml-char-names'.
! 8 bit chars may be inserted with the meta key as in M-SPC for no break space,
! or M-- for a soft hyphen."
(interactive "*")
(insert ?&)
(or char
--- 467,475 ----
(defun sgml-name-char (&optional char)
"Insert a symbolic character name according to `sgml-char-names'.
! Non-ASCII chars may be inserted either with the meta key, as in M-SPC for
! no-break space or M-- for a soft hyphen; or via an input method or
! encoded keyboard operation."
(interactive "*")
(insert ?&)
(or char
***************
*** 459,492 ****
(insert char)
(undo-boundary)
(delete-backward-char 1)
! (insert ?&
! (or (aref sgml-char-names char)
! (format "#%d" char))
! ?\;))
!
(defun sgml-name-self ()
"Insert a symbolic character name according to `sgml-char-names'."
(interactive "*")
(sgml-name-char last-command-char))
-
(defun sgml-maybe-name-self ()
"Insert a symbolic character name according to `sgml-char-names'."
(interactive "*")
(if sgml-name-8bit-mode
! (sgml-name-char
! (if (eq (char-charset last-command-char) 'latin-iso8859-1)
! (+ 128 (- last-command-char (make-char 'latin-iso8859-1)))
! last-command-char))
(self-insert-command 1)))
-
(defun sgml-name-8bit-mode ()
! "Toggle insertion of 8 bit characters."
(interactive)
(setq sgml-name-8bit-mode (not sgml-name-8bit-mode))
! (message "sgml name 8 bit mode is now %s"
(if sgml-name-8bit-mode "ON" "OFF")))
--- 478,519 ----
(insert char)
(undo-boundary)
(delete-backward-char 1)
! (cond
! ((< char 256)
! (insert ?&
! (or (aref sgml-char-names char)
! (format "#%d" char))
! ?\;))
! ((aref sgml-char-names-table char)
! (insert ?& (aref sgml-char-names-table char) ?\;))
! ((memq (char-charset char) '(mule-unicode-0100-24ff
! mule-unicode-2500-33ff
! mule-unicode-e000-ffff))
! (insert (format "&#%d;" (encode-char char 'ucs))))
! (t
! (insert char))))
(defun sgml-name-self ()
"Insert a symbolic character name according to `sgml-char-names'."
(interactive "*")
(sgml-name-char last-command-char))
(defun sgml-maybe-name-self ()
"Insert a symbolic character name according to `sgml-char-names'."
(interactive "*")
(if sgml-name-8bit-mode
! (let ((mc last-command-char))
! (if (< mc 256)
! (setq mc (unibyte-char-to-multibyte mc)))
! (or mc (setq mc last-command-char))
! (sgml-name-char mc))
(self-insert-command 1)))
(defun sgml-name-8bit-mode ()
! "Toggle whether to insert named entities instead of non-ASCII characters."
(interactive)
(setq sgml-name-8bit-mode (not sgml-name-8bit-mode))
! (message "sgml name entity mode is now %s"
(if sgml-name-8bit-mode "ON" "OFF")))