]> git.eshelyaron.com Git - emacs.git/commitdiff
(sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
authorDaniel Pfeiffer <occitan@esperanto.org>
Tue, 26 Oct 2004 21:38:57 +0000 (21:38 +0000)
committerDaniel Pfeiffer <occitan@esperanto.org>
Tue, 26 Oct 2004 21:38:57 +0000 (21:38 +0000)
lisp/textmodes/sgml-mode.el

index 6e7b2a9a51c6520778351f2858d2d56c2b623a58..4ac96b2e4b0d507b800d451553b178a61d0bbf67 100644 (file)
@@ -453,10 +453,22 @@ Do \\[describe-key] on the following bindings to discover what they do.
   ;; recognized.
   (set (make-local-variable 'comment-start-skip) "\\(?:<!\\)?--[ \t]*")
   (set (make-local-variable 'comment-end-skip) "[ \t]*--\\([ \t\n]*>\\)?")
-  ;; This definition probably is not useful in derived modes.
-  (set (make-local-variable 'imenu-generic-expression)
-       (concat "<!\\(element\\|entity\\)[ \t\n]+%?[ \t\n]*\\("
-              sgml-name-re "\\)")))
+  ;; This definition has an HTML leaning but probably fits well for other modes.
+  (setq imenu-generic-expression
+       `((nil
+          ,(concat "<!\\(element\\|entity\\)[ \t\n]+%?[ \t\n]*\\("
+                   sgml-name-re "\\)")
+          2)
+         ("Id"
+          ,(concat "<[^>]+[ \t\n]+[Ii][Dd]=\\(['\"]"
+                   (if sgml-xml-mode "" "?")
+                   "\\)\\(" sgml-name-re "\\)\\1")
+          2)
+         ("Name"
+          ,(concat "<[^>]+[ \t\n]+[Nn][Aa][Mm][Ee]=\\(['\"]"
+                   (if sgml-xml-mode "" "?")
+                   "\\)\\(" sgml-name-re "\\)\\1")
+          2))))
 
 ;; Some programs (such as Glade 2) generate XML which has
 ;; -*- mode: xml -*-.