diff options
author | hrs <hrs@FreeBSD.org> | 2012-08-04 11:08:11 +0800 |
---|---|---|
committer | hrs <hrs@FreeBSD.org> | 2012-08-04 11:08:11 +0800 |
commit | fdd3d5423f7c1e00ae89d36263bac6d76c2fc551 (patch) | |
tree | d0570870f07c0685f81304f5a9585535ef54dd0b /editors/psgml | |
parent | 1f909ee4e06906ae4695e5b53fe73994a9242985 (diff) | |
download | freebsd-ports-graphics-fdd3d5423f7c1e00ae89d36263bac6d76c2fc551.tar.gz freebsd-ports-graphics-fdd3d5423f7c1e00ae89d36263bac6d76c2fc551.tar.zst freebsd-ports-graphics-fdd3d5423f7c1e00ae89d36263bac6d76c2fc551.zip |
Fix old syntaxes deprecated in emacs24.
Diffstat (limited to 'editors/psgml')
-rw-r--r-- | editors/psgml/Makefile | 7 | ||||
-rw-r--r-- | editors/psgml/files/patch-psgml-dtd.el | 61 | ||||
-rw-r--r-- | editors/psgml/files/patch-psgml-edit.el | 13 | ||||
-rw-r--r-- | editors/psgml/files/patch-psgml-parse.el | 368 | ||||
-rw-r--r-- | editors/psgml/files/post-patch-psgml.el | 76 |
5 files changed, 496 insertions, 29 deletions
diff --git a/editors/psgml/Makefile b/editors/psgml/Makefile index db27aa86c16..eb560284878 100644 --- a/editors/psgml/Makefile +++ b/editors/psgml/Makefile @@ -7,7 +7,7 @@ PORTNAME= psgml PORTVERSION= 1.3.2 -PORTREVISION= 16 +PORTREVISION= 17 CATEGORIES= editors elisp MASTER_SITES= SF/${PORTNAME}/ALPHA%20${PORTNAME}/${PORTVERSION} PKGNAMESUFFIX= -${EMACS_PORT_NAME} @@ -28,6 +28,8 @@ CONFIGURE_ARGS= --lispdir=${PSGML_LISPDIR} CONFIGURE_ENV= EMACS=${EMACS_CMD} USE_EMACS= yes +POSTPATCHES= ${FILESDIR}/post-patch-* + INFO= psgml psgml-api PSGML_STARTUPEL= psgml-startup.el @@ -43,6 +45,9 @@ PLIST_SUB+= XEMACS="@comment " \ NON_XEMACS="" .endif +post-patch: + cd ${PATCH_WRKSRC} && ${CAT} ${POSTPATCHES} | ${PATCH} + post-install: cd ${WRKSRC} && ${MAKE} install-info ${INSTALL_DATA} ${WRKDIR}/${PSGML_STARTUPEL} \ diff --git a/editors/psgml/files/patch-psgml-dtd.el b/editors/psgml/files/patch-psgml-dtd.el new file mode 100644 index 00000000000..77a5070d3e3 --- /dev/null +++ b/editors/psgml/files/patch-psgml-dtd.el @@ -0,0 +1,61 @@ +--- psgml-dtd.el.orig 2005-03-06 01:23:40.000000000 +0900 ++++ psgml-dtd.el 2012-08-04 11:56:25.000000000 +0900 +@@ -93,12 +93,12 @@ + (defmacro sgml-for-all-final-states (s dfa &rest forms) + "For all final states S in DFA do FORMS. + Syntax: var dfa-expr &body forms" +- (` (let ((L-states (sgml-some-states-of (, dfa))) +- (, s)) ++ `(let ((L-states (sgml-some-states-of ,dfa)) ++ ,s) + (while L-states +- (when (sgml-state-final-p (setq (, s) (car L-states))) +- (,@ forms)) +- (setq L-states (cdr L-states)))))) ++ (when (sgml-state-final-p (setq ,s (car L-states))) ++ ,@forms) ++ (setq L-states (cdr L-states))))) + + (put 'sgml-for-all-final-states 'lisp-indent-hook 2) + (put 'sgml-for-all-final-states 'edebug-form-hook '(symbolp &rest form)) +@@ -217,7 +217,7 @@ + (defun sgml-make-pcdata () + (sgml-make-* (sgml-make-primitive-content-token sgml-pcdata-token))) + +-(defun sgml-reduce-, (l) ++(defun sgml-reduce-\, (l) + (while (cdr l) + (setcar (cdr l) + (sgml-make-conc (car l) (cadr l))) +@@ -279,7 +279,7 @@ + (sgml-parse-delim "CRO" (digit nmstart)) + (sgml-parse-delim "CRO" (digit))) + (prog1 (if (sgml-is-delim "NULL" digit) +- (string-to-int (sgml-check-nametoken)) ++ (string-to-number (sgml-check-nametoken)) + (let ((spec (sgml-check-name))) + (or (cdr (assoc spec '(("RE" . 10) + ("RS" . 1) +@@ -336,7 +336,7 @@ + (defsubst sgml-parse-connector () + (sgml-skip-ps) + (cond ((sgml-parse-delim "SEQ") +- (function sgml-reduce-,)) ++ (function sgml-reduce-\,)) + ((sgml-parse-delim "OR") + (function sgml-reduce-|)) + ((sgml-parse-delim "AND") +@@ -884,10 +884,10 @@ + FORMS should produce the binary coding of element in VAR." + (let ((var (car loop-c)) + (seq (cadr loop-c))) +- (` (let ((seq (, seq))) ++ `(let ((seq ,seq)) + (sgml-code-number (length seq)) +- (loop for (, var) in seq +- do (,@ body)))))) ++ (loop for ,var in seq ++ do ,@body)))) + + (put 'sgml-code-sequence 'lisp-indent-hook 1) + (put 'sgml-code-sequence 'edbug-forms-hook '(sexp &rest form)) diff --git a/editors/psgml/files/patch-psgml-edit.el b/editors/psgml/files/patch-psgml-edit.el index e21da19c692..aa59881510a 100644 --- a/editors/psgml/files/patch-psgml-edit.el +++ b/editors/psgml/files/patch-psgml-edit.el @@ -1,6 +1,13 @@ ---- psgml-edit.el.orig2 Tue Feb 21 07:02:29 2006 -+++ psgml-edit.el Tue Feb 21 07:08:59 2006 -@@ -1876,18 +1876,22 @@ +--- psgml-edit.el.orig 2012-08-04 11:53:07.000000000 +0900 ++++ psgml-edit.el 2012-08-04 11:55:00.000000000 +0900 +@@ -1870,24 +1870,28 @@ + (invert + (or (looking-at "&#\\([0-9]+\\)[;\n]?") + (error "No character reference after point")) +- (let ((c (string-to-int (buffer-substring (match-beginning 1) ++ (let ((c (string-to-number (buffer-substring (match-beginning 1) + (match-end 1))))) + (delete-region (match-beginning 0) (match-end 0)) (if (fboundp 'decode-char) ; Emacs 21, Mule-UCS (setq c (decode-char 'ucs c)) diff --git a/editors/psgml/files/patch-psgml-parse.el b/editors/psgml/files/patch-psgml-parse.el index 0c67d70a8d9..fe0a32ce978 100644 --- a/editors/psgml/files/patch-psgml-parse.el +++ b/editors/psgml/files/patch-psgml-parse.el @@ -1,25 +1,343 @@ -*** psgml-parse.el.orig Sun Mar 6 01:23:40 2005 ---- psgml-parse.el Wed Jun 8 12:47:33 2005 -*************** -*** 568,574 **** - (setq s1 (car l) - allfinal (and allfinal (sgml-state-final-p s1)) - s2 (sgml-get-move s1 token) -! res (and s2 (sgml-make-and-state s2 (remq s1 dfas) next)) - l (cdr l))) - (cond (res) - (allfinal (sgml-get-move next token))))) ---- 568,580 ---- - (setq s1 (car l) - allfinal (and allfinal (sgml-state-final-p s1)) - s2 (sgml-get-move s1 token) -! res (and s2 -! (sgml-make-and-state -! s2 -! (if (memq s1 dfas) -! (delq s1 (copy-sequence dfas)) -! dfas) -! next)) - l (cdr l))) - (cond (res) - (allfinal (sgml-get-move next token))))) +--- psgml-parse.el.orig 2012-08-04 11:37:03.000000000 +0900 ++++ psgml-parse.el 2012-08-04 11:37:19.000000000 +0900 +@@ -329,28 +329,28 @@ + ;;(progn (set-syntax-table xml-parser-syntax) (describe-syntax)) + + (defmacro sgml-with-parser-syntax (&rest body) +- (` (let ((normal-syntax-table (syntax-table)) ++ `(let ((normal-syntax-table (syntax-table)) + (cb (current-buffer))) + (set-syntax-table (if sgml-xml-p xml-parser-syntax sgml-parser-syntax)) + (unwind-protect +- (progn (,@ body)) ++ (progn ,@body) + (setq sgml-last-buffer (current-buffer)) + (set-buffer cb) +- (set-syntax-table normal-syntax-table))))) ++ (set-syntax-table normal-syntax-table)))) + + (defmacro sgml-with-parser-syntax-ro (&rest body) + ;; Should only be used for parsing .... +- (` (let ((normal-syntax-table (syntax-table)) ++ `(let ((normal-syntax-table (syntax-table)) + (cb (current-buffer)) + (buffer-modified (buffer-modified-p))) + (set-syntax-table (if sgml-xml-p xml-parser-syntax sgml-parser-syntax)) + (unwind-protect +- (progn (,@ body)) ++ (progn ,@body) + (setq sgml-last-buffer (current-buffer)) + (set-buffer cb) + (set-syntax-table normal-syntax-table) + (sgml-restore-buffer-modified-p buffer-modified) +- (sgml-debug "Restoring buffer mod: %s" buffer-modified))))) ++ (sgml-debug "Restoring buffer mod: %s" buffer-modified)))) + + (defun sgml-set-buffer-multibyte (flag) + (cond ((featurep 'xemacs) +@@ -361,7 +361,7 @@ + default-enable-multibyte-characters + flag))) + ((boundp 'MULE) +- (set 'mc-flag flag)) ++ (if (boundp 'mc-flag) (set 'mc-flag flag))) + (t + flag))) + ;; Probably better. -- fx +@@ -428,21 +428,21 @@ + ;;move: (token . node) + + (defmacro sgml-make-move (token node) +- (` (cons (, token) (, node)))) ++ `(cons ,token ,node)) + + (defmacro sgml-move-token (x) +- (` (car (, x)))) ++ `(car ,x)) + + (defmacro sgml-move-dest (x) +- (` (cdr (, x)))) ++ `(cdr ,x)) + + ;; set of moves: list of moves + + (defmacro sgml-add-move-to-set (token node set) +- (`(cons (cons (, token) (, node)) (, set)))) ++ `(cons (cons ,token ,node) ,set)) + + (defmacro sgml-moves-lookup (token set) +- (` (assq (, token) (, set)))) ++ `(assq ,token ,set)) + + ;; normal-state: ('normal-state opts . reqs) + +@@ -450,16 +450,16 @@ + (cons 'normal-state (cons nil nil))) + + (defmacro sgml-normal-state-p (s) +- (` (eq (car (, s)) 'normal-state))) ++ `(eq (car ,s) 'normal-state)) + + (defmacro sgml-state-opts (s) +- (` (cadr (, s)))) ++ `(cadr ,s)) + + (defmacro sgml-state-reqs (s) +- (` (cddr (, s)))) ++ `(cddr ,s)) + + (defmacro sgml-state-final-p (s) +- (`(null (sgml-state-reqs (, s))))) ++ `(null (sgml-state-reqs ,s))) + + ;; adding moves + ;; *** Should these functions check for ambiguity? +@@ -507,10 +507,10 @@ + (cons next dfas)) + + (defmacro sgml-and-node-next (n) +- (` (car (, n)))) ++ `(car ,n)) + + (defmacro sgml-and-node-dfas (n) +- (` (cdr (, n)))) ++ `(cdr ,n)) + + + ;;; Using states +@@ -903,8 +903,8 @@ + (cons + 'progn + (loop for n in names collect +- (`(defmacro (, (intern (format "sgml-eltype-%s" n))) (et) +- (list 'get et ''(, n))))))) ++ `(defmacro ,(intern (format "sgml-eltype-%s" n)) (et) ++ (list 'get et '',n))))) + + (sgml-prop-fields + ;;flags ; optional tags and mixed +@@ -919,7 +919,7 @@ + ) + + (defmacro sgml-eltype-flags (et) +- (` (symbol-value (, et)))) ++ `(symbol-value ,et)) + + (defun sgml-eltype-model (et) + (if (fboundp et) +@@ -966,7 +966,7 @@ + "Get application data from element type ET with name PROP. + PROP should be a symbol, reserved names are: flags, model, attlist, + includes, excludes, conref-regexp, mixed, stag-optional, etag-optional." +- (` (get (, et) (, prop)))) ++ ` (get ,et ,prop)) + + (defun sgml-eltype-all-miscdata (et) + (loop for p on (symbol-plist et) by (function cddr) +@@ -1059,7 +1059,7 @@ + ;;; Wing addition + (defmacro sgml-char-int (ch) + (if (fboundp 'char-int) +- (` (char-int (, ch))) ++ `(char-int ,ch) + ch)) + + (defsubst sgml-read-octet () +@@ -1434,51 +1434,51 @@ + (setq context '(t))) + ((not (listp context)) + (setq context (list context)))) +- (`(if (and ; This and checks that characters ++ `(if (and ; This and checks that characters + ; of the delimiter +- (,@(loop for i from 0 below (length ds) collect +- (` (eq (, (aref ds i)) +- (sgml-following-char (, (+ i offset))))))) ++ ,@(loop for i from 0 below (length ds) collect ++ `(eq ,(aref ds i) ++ (sgml-following-char ,(+ i offset)))) + (or +- (,@(loop ++ ,@(loop + for c in context collect ; context check + (cond + ((eq c 'nmstart) ; name start character +- (`(sgml-startnm-char +- (or (sgml-following-char (, (length ds))) 0)))) ++ `(sgml-startnm-char ++ (or (sgml-following-char ,(length ds)) 0))) + ((eq c 'stagc) +- (`(and sgml-current-shorttag +- (sgml-is-delim "TAGC" nil nil (, (length ds)))))) ++ `(and sgml-current-shorttag ++ (sgml-is-delim "TAGC" nil nil ,(length ds)))) + ((eq c 'digit) +- (`(memq (sgml-following-char (, (length ds))) +- '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)))) ++ `(memq (sgml-following-char ,(length ds)) ++ '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))) + ((stringp c) +- (`(sgml-is-delim (, c) nil nil (, (length ds))))) ++ `(sgml-is-delim ,c nil nil ,(length ds))) + ((eq c t)) + (t (error "Context type: %s" c)))) +- ))) ++ )) + + (progn ; Do operations if delimiter found +- (,@ (if move (`((forward-char (, (length ds))))))) +- (,@ (if (not (eq move 'check)) +- '(t)))) +- (,@ (if (eq move 'check) +- (`((sgml-delimiter-parse-error (, delim)))))))))) ++ ,@(if move `((forward-char ,(length ds)))) ++ ,@(if (not (eq move 'check)) ++ '(t))) ++ ,@(if (eq move 'check) ++ `((sgml-delimiter-parse-error ,delim)))))) + + (defmacro sgml-following-char (n) + (cond ((zerop n) '(following-char)) + ((= n 1) '(char-after (1+ (point)))) +- (t (` (char-after (+ (, n) (point))))))) ++ (t `(char-after (+ ,n (point)))))) + + (defun sgml-delimiter-parse-error (delim) + (sgml-parse-error "Delimiter %s (%s) expected" + delim (sgml-get-delim-string delim))) + + (defmacro sgml-parse-delim (delim &optional context) +- (`(sgml-is-delim (, delim) (, context) move))) ++ `(sgml-is-delim ,delim ,context move)) + + (defmacro sgml-check-delim (delim &optional context) +- (`(sgml-is-delim (, delim) (, context) check))) ++ `(sgml-is-delim ,delim ,context check)) + + (defmacro sgml-skip-upto (delim) + "Skip until the delimiter or first char of one of the delimiters. +@@ -1502,8 +1502,8 @@ + (let ((ds (sgml-get-delim-string (upcase (format "%s" delim))))) + (if (= 1 (length ds)) + (list 'skip-chars-forward (concat "^" ds)) +- (`(and (search-forward (, ds) nil t) +- (backward-char (, (length ds)))))))))) ++ `(and (search-forward ,ds nil t) ++ (backward-char ,(length ds)))))))) + + + ;;(macroexpand '(sgml-is-delim mdo)) +@@ -1520,22 +1520,22 @@ + ;;; aproporiate value. + + (defmacro sgml-parse-char (char) +- (` (cond ((eq (, char) (following-char)) ++ `(cond ((eq ,char (following-char)) + (forward-char 1) +- t)))) ++ t))) + + (defmacro sgml-parse-chars (char1 char2 &optional char3) + "Parse two or three chars; return nil if can't." + (if (null char3) +- (` (cond ((and (eq (, char1) (following-char)) +- (eq (, char2) (char-after (1+ (point))))) ++ `(cond ((and (eq ,char1 (following-char)) ++ (eq ,char2 (char-after (1+ (point))))) + (forward-char 2) +- t))) +- (` (cond ((and (eq (, char1) (following-char)) +- (eq (, char2) (char-after (1+ (point)))) +- (eq (, char3) (char-after (1+ (1+ (point)))))) ++ t)) ++ `(cond ((and (eq ,char1 (following-char)) ++ (eq ,char2 (char-after (1+ (point)))) ++ (eq ,char3 (char-after (1+ (1+ (point)))))) + (forward-char 3) +- t))))) ++ t)))) + + (defun sgml-check-char (char) + (cond ((not (sgml-parse-char char)) +@@ -1546,7 +1546,7 @@ + (sgml-parse-char ?\r))) + + (defmacro sgml-startnm-char (c) +- (` (eq ?w (char-syntax (, c))))) ++ `(eq ?w (char-syntax ,c))) + + (defsubst sgml-startnm-char-next () + (and (not (eobp)) +@@ -1693,11 +1693,11 @@ + (define-compiler-macro sgml-parse-name (&whole form &optional entity-name) + (cond + ((memq entity-name '(nil t)) +- (` (if (sgml-startnm-char-next) +- ((, (if entity-name 'sgml-entity-case 'sgml-general-case)) ++ `(if (sgml-startnm-char-next) ++ (,(if entity-name 'sgml-entity-case 'sgml-general-case) + (buffer-substring-no-properties (point) + (progn (skip-syntax-forward "w_") +- (point))))))) ++ (point)))))) + (t + form))) + +@@ -1827,8 +1827,8 @@ + With optional NAME, RNI must be followed by NAME." + (cond + (name +- (` (if (sgml-parse-delim "RNI") +- (sgml-check-token (, name))))) ++ `(if (sgml-parse-delim "RNI") ++ (sgml-check-token ,name))) + (t '(sgml-parse-delim "RNI")))) + + (defun sgml-check-token (name) +@@ -2733,11 +2733,11 @@ + (let ((macs nil)) + (while fields + (push +- (` (defmacro (, (intern (format "%s-%s" dest (car fields)))) (element) +- (, (format "Return %s field of ELEMENT." (car fields))) ++ `(defmacro ,(intern (format "%s-%s" dest (car fields))) (element) ++ ,(format "Return %s field of ELEMENT." (car fields)) + (list +- '(, (intern (format "%s-%s" orig (car fields)))) +- element))) ++ ',(intern (format "%s-%s" orig (car fields))) ++ element)) + macs) + (setq fields (cdr fields))) + (cons 'progn macs))) +@@ -2775,7 +2775,7 @@ + + (defmacro sgml-element-stag-optional (element) + "True if start-tag of ELEMENT is omissible." +- (`(sgml-eltype-stag-optional (sgml-tree-eltype (, element))))) ++ `(sgml-eltype-stag-optional (sgml-tree-eltype ,element))) + + (defsubst sgml-element-etag-optional (element) + "True if end-tag of ELEMENT is omissible." +@@ -2929,8 +2929,10 @@ + + (defun sgml-set-initial-state (dtd) + "Set initial state of parsing." +- (make-local-hook 'before-change-functions) +- (make-local-hook 'after-change-functions) ++ (if (fboundp 'make-local-hook) ++ (progn ++ (make-local-hook 'before-change-functions) ++ (make-local-hook 'after-change-functions))) + (add-hook 'before-change-functions 'sgml-note-change-at nil 'local) + (add-hook 'after-change-functions 'sgml-set-face-after-change nil 'local) + (sgml-set-active-dtd-indicator (sgml-dtd-doctype dtd)) +@@ -3504,7 +3506,7 @@ + Also move point. Return nil, either if no shortref or undefined." + + (macrolet +- ((delim (x) (` (aref map (, (sgml-shortref-index x)))))) ++ ((delim (x) `(aref map ,(sgml-shortref-index x)))) + (let ((i (if nobol 1 0))) + (while (numberp i) + (setq i diff --git a/editors/psgml/files/post-patch-psgml.el b/editors/psgml/files/post-patch-psgml.el new file mode 100644 index 00000000000..a8cf9ce3166 --- /dev/null +++ b/editors/psgml/files/post-patch-psgml.el @@ -0,0 +1,76 @@ +--- psgml.el.orig 2012-08-04 11:43:47.000000000 +0900 ++++ psgml.el 2012-08-04 11:43:51.000000000 +0900 +@@ -381,7 +381,7 @@ + (put 'sgml-system-path 'sgml-type 'file-list) + + (defvar sgml-public-map (or (sgml-parse-colon-path (getenv "SGML_PATH")) +- '("%S" "@prefix@/share/sgml/%o/%c/%d" )) ++ '("%S" "/usr/local/share/sgml/%o/%c/%d" )) + "*Mapping from public identifiers to file names. + This is a list of possible file names. To find the file for a public + identifier the elements of the list are used one at the time from the +@@ -407,15 +407,15 @@ + (defvar sgml-catalog-files (or (delete nil + (sgml-parse-colon-path + (getenv "SGML_CATALOG_FILES"))) +- '("catalog" "@prefix@/share/sgml/catalog" +- "@prefix@/share/xml/catalog")) ++ '("catalog" "/usr/local/share/sgml/catalog" ++ "/usr/local/share/xml/catalog")) + "*List of catalog entry files. + The files are in the format defined in the SGML Open Draft Technical + Resolution on Entity Management.") + (put 'sgml-catalog-files 'sgml-type 'file-list) + +-(defvar sgml-ecat-files '("ECAT" "~/sgml/ECAT" "@prefix@/share/sgml/ECAT" +- "@prefix@/share/xml/ECAT") ++(defvar sgml-ecat-files '("ECAT" "~/sgml/ECAT" "/usr/local/share/sgml/ECAT" ++ "/usr/local/share/xml/ECAT") + "*List of catalog files for PSGML.") + (put 'sgml-ecat-files 'sgml-type 'file-list) + +@@ -724,9 +724,9 @@ + + (defun sgml-markup (entry text) + (cons entry +- (` (lambda () ++ `(lambda () + (interactive) +- (sgml-insert-markup (, text)))))) ++ (sgml-insert-markup ,text)))) + + (defun sgml-insert-markup (text) + (let ((end (sgml-mouse-region)) +@@ -1042,13 +1042,13 @@ + (defun sgml-compute-insert-dtd-items () + (loop for e in sgml-custom-dtd collect + (vector (first e) +- (` (sgml-doctype-insert (, (cadr e)) '(, (cddr e)))) ++ `(sgml-doctype-insert ,(cadr e) ',(cddr e)) + t))) + + (defun sgml-compute-custom-markup-items () + (loop for e in sgml-custom-markup collect + (vector (first e) +- (` (sgml-insert-markup (, (cadr e)))) ++ `(sgml-insert-markup ,(cadr e)) + t))) + + (defun sgml-build-custom-menus () +@@ -1231,12 +1231,14 @@ + (make-local-variable 'text-property-default-nonsticky) + ;; see `sgml-set-face-for': + (add-to-list 'text-property-default-nonsticky '(face . t))) +- (make-local-hook 'post-command-hook) ++ (if (fboundp 'make-local-hook) ++ (eval '(make-local-hook 'post-command-hook))) + (add-hook 'post-command-hook 'sgml-command-post 'append 'local) + (unless sgml-running-lucid + ;; XEmacs 20.4 doesn't handle local activate-menubar-hook + ;; it tries to call the function `t' when using the menubar +- (make-local-hook 'activate-menubar-hook)) ++ (if (fboundp 'make-local-hook) ++ (eval '(make-local-hook 'activate-menubar-hook)))) + (add-hook 'activate-menubar-hook 'sgml-update-all-options-menus + nil 'local) + (run-hooks 'text-mode-hook 'psgml-mode-hook) |