aboutsummaryrefslogtreecommitdiff
path: root/editors/psgml
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2012-08-04 03:08:11 +0000
committerHiroki Sato <hrs@FreeBSD.org>2012-08-04 03:08:11 +0000
commit7acc8ffb5ce0625b645297b9e18688a252e2d954 (patch)
treed0570870f07c0685f81304f5a9585535ef54dd0b /editors/psgml
parent47ebbc6d924942da9e1c09bf5cc493f57fcf788c (diff)
downloadports-7acc8ffb5ce0625b645297b9e18688a252e2d954.tar.gz
ports-7acc8ffb5ce0625b645297b9e18688a252e2d954.zip
Notes
Diffstat (limited to 'editors/psgml')
-rw-r--r--editors/psgml/Makefile7
-rw-r--r--editors/psgml/files/patch-psgml-dtd.el61
-rw-r--r--editors/psgml/files/patch-psgml-edit.el13
-rw-r--r--editors/psgml/files/patch-psgml-parse.el368
-rw-r--r--editors/psgml/files/post-patch-psgml.el76
5 files changed, 496 insertions, 29 deletions
diff --git a/editors/psgml/Makefile b/editors/psgml/Makefile
index db27aa86c160..eb5602848782 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 000000000000..77a5070d3e3a
--- /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 e21da19c6922..aa59881510a6 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 0c67d70a8d9e..fe0a32ce9783 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 000000000000..a8cf9ce3166e
--- /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)