summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorFeng Li <fengli@gmail.com>2013-01-10 10:36:01 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2013-01-10 10:36:01 -0500
commite6ed8f08460d9bc9af7109c5a8619b3d1d407bdf (patch)
treeb8e62bdf81bae00b909761fd5fa778951ef5710b /lisp
parent327a6ccaa01cdcd220e74df4f71acf0ad7e92f5f (diff)
downloademacs-e6ed8f08460d9bc9af7109c5a8619b3d1d407bdf.tar.gz
emacs-e6ed8f08460d9bc9af7109c5a8619b3d1d407bdf.tar.bz2
emacs-e6ed8f08460d9bc9af7109c5a8619b3d1d407bdf.zip
* lisp/progmodes/which-func.el (which-function): Understand Semantic's use
of overlays in imenu--index-alist.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/imenu.el2
-rw-r--r--lisp/progmodes/which-func.el4
3 files changed, 10 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f26c009bf2b..f74abc427af 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2013-01-10 Feng Li <fengli@gmail.com> (tiny change)
+
+ * progmodes/which-func.el (which-function): Understand Semantic's use
+ of overlays in imenu--index-alist.
+
2013-01-10 Wolfgang Jenkner <wjenkner@inode.at>
* man.el: Handle different "man -k" behaviors (bug#13160). Use utf-8.
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 0bfee770094..f64d1afe951 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -447,6 +447,8 @@ Don't move point."
Simple elements in the alist look like (INDEX-NAME . POSITION).
POSITION is the buffer position of the item; to go to the item
is simply to move point to that position.
+POSITION is passed to `imenu-default-goto-function', so it can be a non-number
+if that variable has been changed (e.g. Semantic uses overlays for POSITIONs).
Special elements look like (INDEX-NAME POSITION FUNCTION ARGUMENTS...).
To \"go to\" a special element means applying FUNCTION
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 0279319cc89..adf378f6bc7 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -319,7 +319,9 @@ If no function name is found, return nil."
namestack (cons (car pair) namestack)
alist (cdr pair)))
- ((number-or-marker-p (setq mark (cdr pair)))
+ ((or (number-or-marker-p (setq mark (cdr pair)))
+ (and (overlayp mark)
+ (setq mark (overlay-start mark))))
(when (and (>= (setq offset (- (point) mark)) 0)
(< offset minoffset)) ; Find the closest item.
(setq minoffset offset