aboutsummaryrefslogtreecommitdiff
path: root/editors/emacs-devel
diff options
context:
space:
mode:
authorAshish SHUKLA <ashish@FreeBSD.org>2015-03-23 14:12:30 +0000
committerAshish SHUKLA <ashish@FreeBSD.org>2015-03-23 14:12:30 +0000
commit74652ab9176c9da39b6f96418b19a12c742167cd (patch)
treec93cc5a88bd474790c0ae2d3bbe2e481564888fb /editors/emacs-devel
parent70c25f91e539b7cebccb6fef5f10207d284144fb (diff)
downloadports-74652ab9176c9da39b6f96418b19a12c742167cd.tar.gz
ports-74652ab9176c9da39b6f96418b19a12c742167cd.zip
Notes
Diffstat (limited to 'editors/emacs-devel')
-rw-r--r--editors/emacs-devel/Makefile11
-rw-r--r--editors/emacs-devel/distinfo4
-rw-r--r--editors/emacs-devel/files/extrapatch-lldb-gud.el294
-rw-r--r--editors/emacs-devel/pkg-plist8
4 files changed, 310 insertions, 7 deletions
diff --git a/editors/emacs-devel/Makefile b/editors/emacs-devel/Makefile
index eb4f18872ef9..d3b0ff2c9d79 100644
--- a/editors/emacs-devel/Makefile
+++ b/editors/emacs-devel/Makefile
@@ -22,14 +22,16 @@ CONFLICTS= emacs-19.* emacs21-[0-9]* emacs22-[0-9]* emacs23-[0-9]* \
emacs-nox11-[0-9]*
EMACS_VER= 25.0.50
-EMACS_REV= 20150206.5c9ad35f
+EMACS_REV= 20150321.4a50af93
GNU_CONFIGURE= yes
-USES= gmake makeinfo ncurses pkgconfig shebangfix tar:xz
+USES= cpe gmake makeinfo ncurses pkgconfig shebangfix tar:xz
CPPFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
INFO_PATH= ${DATADIR_REL}/info
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
USE_AUTOTOOLS= autoconf:env aclocal:env automake:env autoheader:env
+CPE_VENDOR= gnu
+CPE_VERSION= ${EMACS_VER}
SUB_FILES= pkg-install
SUB_LIST+= ARCHLIBDIR=${PREFIX}/libexec/emacs/${EMACS_VER}/${CONFIGURE_TARGET}
@@ -53,7 +55,7 @@ INFO= ada-mode auth autotype bovine calc ccmode cl dbus dired-x \
srecode todo-mode tramp url vhdl-mode vip viper widget wisent woman
OPTIONS_DEFINE= X11 ACL DBUS GCONF GIF JPEG M17N OTF PNG SOUND SOURCES SVG TIFF SCROLLBARS \
- XFT XIM XML XPM MAGICK GNUTLS GSETTINGS LTO FILENOTIFY
+ XFT XIM XML XPM MAGICK GNUTLS GSETTINGS LTO FILENOTIFY LLDB
OPTIONS_SINGLE= X11 SOUND
@@ -69,6 +71,7 @@ M17N_DESC= M17N support for text-shaping
OTF_DESC= Opentype fonts suport
FILENOTIFY_DESC= File notification support
LTO_DESC= Enable link-time optimization (requires GCC 4.6+)
+LLDB_DESC= Enable lldb support for GUD (from llvm.org)
OPTIONS_SINGLE_X11= GTK2 GTK3 XAW XAW3D MOTIF
OPTIONS_SINGLE_SOUND= ALSA OSS
@@ -78,6 +81,8 @@ OPTIONS_DEFAULT=ACL DBUS GCONF GIF GTK2 JPEG M17N OTF PNG SOUND SOURCES SVG TIFF
OPTIONS_SUB= SOURCES
+LLDB_EXTRA_PATCHES= ${PATCHDIR}/extrapatch-lldb-gud.el
+
SOUND_CONFIGURE_OFF= --with-sound=no
ALSA_CONFIGURE_ON= --with-sound=alsa
ALSA_LIB_DEPENDS= libasound.so:${PORTSDIR}/audio/alsa-lib
diff --git a/editors/emacs-devel/distinfo b/editors/emacs-devel/distinfo
index 5d8e760a1afe..f2ed97df2b00 100644
--- a/editors/emacs-devel/distinfo
+++ b/editors/emacs-devel/distinfo
@@ -1,2 +1,2 @@
-SHA256 (emacs-25.0.50.20150206.5c9ad35f.tar.xz) = 7e44251913596e2181e1697dca000afcc49f2566c196ff2a28df1e16995ce65b
-SIZE (emacs-25.0.50.20150206.5c9ad35f.tar.xz) = 24728492
+SHA256 (emacs-25.0.50.20150321.4a50af93.tar.xz) = a0aadbf08666febec682901c3e925393e2bdb8c83ae71437b4bd7920e60c136f
+SIZE (emacs-25.0.50.20150321.4a50af93.tar.xz) = 24789768
diff --git a/editors/emacs-devel/files/extrapatch-lldb-gud.el b/editors/emacs-devel/files/extrapatch-lldb-gud.el
new file mode 100644
index 000000000000..9e2799e82963
--- /dev/null
+++ b/editors/emacs-devel/files/extrapatch-lldb-gud.el
@@ -0,0 +1,294 @@
+
+$FreeBSD$
+
+This diff is retrieved from http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00274.html
+
+And traces its origin back to https://gitorious.org/lldb/lldb/commit/40e4dbf
+
+It's also present on Apple's OS site:
+
+http://www.opensource.apple.com/source/lldb/lldb-76/utils/emacs/
+
+diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
+index 42c5b20..7f2e9c0 100644
+--- lisp/progmodes/gud.el
++++ lisp/progmodes/gud.el
+@@ -35,7 +35,7 @@
+ ;; kluge with the gud-xdb-directories hack producing gud-dbx-directories.
+ ;; Derek L. Davies <ddavies@world.std.com> added support for jdb (Java
+ ;; debugger.) Jan Nieuwenhuizen added support for the Guile REPL (Guile
+-;; debugger).
++;; debugger). llvm.org added support for lldb.
+
+ ;;; Code:
+
+@@ -56,7 +56,7 @@
+
+ (defgroup gud nil
+ "The \"Grand Unified Debugger\" interface.
+-Supported debuggers include gdb, sdb, dbx, xdb, perldb,
++Supported debuggers include lldb, gdb, sdb, dbx, xdb, perldb,
+ pdb (Python), and jdb."
+ :group 'processes
+ :group 'tools)
+@@ -141,12 +141,12 @@ Used to gray out relevant toolbar icons.")
+ (display-graphic-p)
+ (fboundp 'x-show-tip))
+ :visible (memq gud-minor-mode
+- '(gdbmi guiler dbx sdb xdb pdb))
++ '(lldb gdbmi guiler dbx sdb xdb pdb))
+ :button (:toggle . gud-tooltip-mode))
+ ([refresh] "Refresh" . gud-refresh)
+ ([run] menu-item "Run" gud-run
+ :enable (not gud-running)
+- :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx jdb)))
+ ([go] menu-item (if (bound-and-true-p gdb-active-process)
+ "Continue" "Run") gud-go
+ :visible (and (eq gud-minor-mode 'gdbmi)
+@@ -164,18 +164,18 @@ Used to gray out relevant toolbar icons.")
+ ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode
+- '(gdbmi gdb sdb xdb)))
++ '(lldb gdbmi gdb sdb xdb)))
+ ([break] menu-item "Set Breakpoint" gud-break
+ :enable (not gud-running)
+ :visible (gud-tool-bar-item-visible-no-fringe))
+ ([up] menu-item "Up Stack" gud-up
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode
+- '(gdbmi gdb guiler dbx xdb jdb pdb)))
++ '(lldb gdbmi gdb guiler dbx xdb jdb pdb)))
+ ([down] menu-item "Down Stack" gud-down
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode
+- '(gdbmi gdb guiler dbx xdb jdb pdb)))
++ '(lldb gdbmi gdb guiler dbx xdb jdb pdb)))
+ ([pp] menu-item "Print S-expression" gud-pp
+ :enable (and (not gud-running)
+ (bound-and-true-p gdb-active-process))
+@@ -187,7 +187,7 @@ Used to gray out relevant toolbar icons.")
+ "Dump object"
+ "Print Dereference") gud-pstar
+ :enable (not gud-running)
+- :visible (memq gud-minor-mode '(gdbmi gdb jdb)))
++ :visible (memq gud-minor-mode '(lldb gdbmi gdb jdb)))
+ ([print] menu-item "Print Expression" gud-print
+ :enable (not gud-running))
+ ([watch] menu-item "Watch Expression" gud-watch
+@@ -196,13 +196,13 @@ Used to gray out relevant toolbar icons.")
+ ([finish] menu-item "Finish Function" gud-finish
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode
+- '(gdbmi gdb guiler xdb jdb pdb)))
++ '(lldb gdbmi gdb guiler xdb jdb pdb)))
+ ([stepi] menu-item "Step Instruction" gud-stepi
+ :enable (not gud-running)
+- :visible (memq gud-minor-mode '(gdbmi gdb dbx)))
++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx)))
+ ([nexti] menu-item "Next Instruction" gud-nexti
+ :enable (not gud-running)
+- :visible (memq gud-minor-mode '(gdbmi gdb dbx)))
++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx)))
+ ([step] menu-item "Step Line" gud-step
+ :enable (not gud-running))
+ ([next] menu-item "Next Line" gud-next
+@@ -237,7 +237,7 @@ Used to gray out relevant toolbar icons.")
+ :visible (not (eq gud-minor-mode 'gdbmi)))
+ ([menu-bar run] menu-item
+ ,(propertize "run" 'face 'font-lock-doc-face) gud-run
+- :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx jdb)))
+ ([menu-bar go] menu-item
+ ,(propertize " go " 'face 'font-lock-doc-face) gud-go
+ :visible (and (eq gud-minor-mode 'gdbmi)
+@@ -356,6 +356,7 @@ are interpreted specially if present. These are:
+ %l -- Number of current source line.
+ %e -- Text of the C lvalue or function-call expression surrounding point.
+ %a -- Text of the hexadecimal address surrounding point.
++ %b -- Text of the most recently created breakpoint id.
+ %p -- Prefix argument to the command (if any) as a number.
+ %c -- Fully qualified class name derived from the expression
+ surrounding point (jdb only).
+@@ -964,6 +965,131 @@ SKIP is the number of chars to skip on each line, it defaults to 0."
+
+
+ ;; ======================================================================
++;; lldb functions
++
++;; History of argument lists passed to lldb.
++(defvar gud-lldb-history nil)
++
++;; Keeps track of breakpoint created. In the following case, the id is "1".
++;; It is used to implement temporary breakpoint.
++;; (lldb) b main.c:39
++;; breakpoint set --file 'main.c' --line 39
++;; Breakpoint created: 1: file ='main.c', line = 39, locations = 1
++(defvar gud-breakpoint-id nil)
++
++(defun lldb-extract-breakpoint-id (string)
++ ;; Search for "Breakpoint created: \\([^:\n]*\\):" pattern.
++ (if (string-match "Breakpoint created: \\([^:\n]*\\):" string)
++ (progn
++ (setq gud-breakpoint-id (match-string 1 string))
++ (message "breakpoint id: %s" gud-breakpoint-id)))
++)
++
++(defun gud-lldb-marker-filter (string)
++ (setq gud-marker-acc
++ (if gud-marker-acc (concat gud-marker-acc string) string))
++ (lldb-extract-breakpoint-id gud-marker-acc)
++ (let (start)
++ ;; Process all complete markers in this chunk
++ (while (or
++ ;; (lldb) r
++ ;; Process 15408 launched: '/Volumes/data/lldb/svn/trunk/test/conditional_break/a.out' (x86_64)
++ ;; (lldb) Process 15408 stopped
++ ;; * thread #1: tid = 0x2e03, 0x0000000100000de8 a.out`c + 7 at main.c:39, stop reason = breakpoint 1.1, queue = com.apple.main-thread
++ (string-match " at \\([^:\n]*\\):\\([0-9]*\\), stop reason = .*\n"
++ gud-marker-acc start)
++ ;; (lldb) frame select -r 1
++ ;; frame #1: 0x0000000100000e09 a.out`main + 25 at main.c:44
++ (string-match "\nframe.* at \\([^:\n]*\\):\\([0-9]*\\)\n"
++ gud-marker-acc start))
++ (setq gud-last-frame
++ (cons (match-string 1 gud-marker-acc)
++ (string-to-number (match-string 2 gud-marker-acc)))
++ start (match-end 0)))
++
++ ;; Search for the last incomplete line in this chunk
++ (while (string-match "\n" gud-marker-acc start)
++ (setq start (match-end 0)))
++
++ ;; If we have an incomplete line, store it in gud-marker-acc.
++ (setq gud-marker-acc (substring gud-marker-acc (or start 0))))
++ string)
++
++;; Keeps track of whether the Python lldb_oneshot_break function definition has
++;; been exec'ed.
++(defvar lldb-oneshot-break-defined nil)
++
++;;;###autoload
++(defun lldb (command-line)
++ "Run lldb on program FILE in buffer *gud-FILE*.
++The directory containing FILE becomes the initial working directory
++and source-file directory for your debugger."
++ (interactive (list (gud-query-cmdline 'lldb)))
++
++ (gud-common-init command-line nil 'gud-lldb-marker-filter)
++ (set (make-local-variable 'gud-minor-mode) 'lldb)
++ (setq lldb-oneshot-break-defined nil)
++
++ (gud-def gud-listb "breakpoint list"
++ "l" "List all breakpoints.")
++ (gud-def gud-bt "thread backtrace"
++ "b" "Show stack for the current thread.")
++ (gud-def gud-bt-all "thread backtrace all"
++ "B" "Show stacks for all the threads.")
++
++ (gud-def gud-break "breakpoint set -f %f -l %l"
++ "\C-b" "Set breakpoint at current line.")
++ (gud-def gud-tbreak
++ (progn (gud-call "breakpoint set -f %f -l %l")
++ (sit-for 1)
++ (if (not lldb-oneshot-break-defined)
++ (progn
++ ;; The "\\n"'s are required to escape the newline chars
++ ;; passed to the lldb process.
++ (gud-call (concat "script exec \"def lldb_oneshot_break(frame, bp_loc):\\n"
++ " target=frame.GetThread().GetProcess().GetTarget()\\n"
++ " bp=bp_loc.GetBreakpoint()\\n"
++ " print 'Deleting oneshot breakpoint:', bp\\n"
++ " target.BreakpointDelete(bp.GetID())\""))
++ (sit-for 1)
++ ;; Set the flag since Python knows about the function def now.
++ (setq lldb-oneshot-break-defined t)))
++ (gud-call "breakpoint command add -p %b -o 'lldb_oneshot_break(frame, bp_loc)'"))
++ "\C-t" "Set temporary breakpoint at current line.")
++ (gud-def gud-remove "breakpoint clear -f %f -l %l"
++ "\C-d" "Remove breakpoint at current line")
++ (gud-def gud-step "thread step-in"
++ "\C-s" "Step one source line with display.")
++ (gud-def gud-stepi "thread step-inst"
++ "\C-i" "Step one instruction with display.")
++ (gud-def gud-next "thread step-over"
++ "\C-n" "Step one line (skip functions).")
++ (gud-def gud-nexti "thread step-inst-over"
++ nil "Step one instruction (skip functions).")
++ (gud-def gud-cont "process continue"
++ "\C-r" "Continue with display.")
++ (gud-def gud-finish "thread step-out"
++ "\C-f" "Finish executing current function.")
++ (gud-def gud-up "frame select -r %p"
++ "<" "Up 1 stack frame.")
++ (gud-def gud-down "frame select -r -%p"
++ ">" "Down 1 stack frame.")
++ (gud-def gud-print "expression -- %e"
++ "\C-p" "Evaluate C expression at point.")
++ (gud-def gud-pstar "expression -- *%e"
++ nil "Evaluate C dereferenced pointer expression at point.")
++ (gud-def gud-run "run"
++ nil "Run the program.")
++ (gud-def gud-stop-subjob "process kill"
++ nil "Stop the program.")
++
++ (setq comint-prompt-regexp "\\(^\\|\n\\)\\*")
++ (setq paragraph-start comint-prompt-regexp)
++ (run-hooks 'lldb-mode-hook)
++ )
++
++
++;; ======================================================================
+ ;; sdb functions
+
+ ;; History of argument lists passed to sdb.
+@@ -2499,9 +2625,10 @@ gud, see `gud-mode'."
+ "Major mode for interacting with an inferior debugger process.
+
+ You start it up with one of the commands M-x gdb, M-x sdb, M-x dbx,
+-M-x perldb, M-x xdb, or M-x jdb. Each entry point finishes by executing a
+-hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook',
+-`perldb-mode-hook', `xdb-mode-hook', or `jdb-mode-hook' respectively.
++M-x perldb, M-x xdb, M-x jdb, or M-x lldb. Each entry point finishes by
++executing a hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook',
++`perldb-mode-hook', `xdb-mode-hook', `jdb-mode-hook', or `lldb-mode-hook'
++respectively.
+
+ After startup, the following commands are available in both the GUD
+ interaction buffer and any source buffer GUD visits due to a breakpoint stop
+@@ -2531,7 +2658,7 @@ Under gdb, sdb and xdb, \\[gud-tbreak] behaves exactly like \\[gud-break],
+ except that the breakpoint is temporary; that is, it is removed when
+ execution stops on it.
+
+-Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack
++Under gdb, dbx, xdb, and lldb, \\[gud-up] pops up through an enclosing stack
+ frame. \\[gud-down] drops back down through one.
+
+ If you are using gdb or xdb, \\[gud-finish] runs execution to the return from
+@@ -2858,7 +2985,7 @@ Obeying it means displaying in another window the specified file and line."
+ result)
+ (while (and str
+ (let ((case-fold-search nil))
+- (string-match "\\([^%]*\\)%\\([adefFlpc]\\)" str)))
++ (string-match "\\([^%]*\\)%\\([abdefFlpc]\\)" str)))
+ (let ((key (string-to-char (match-string 2 str)))
+ subst)
+ (cond
+@@ -2886,6 +3013,8 @@ Obeying it means displaying in another window the specified file and line."
+ (setq subst (gud-find-expr)))
+ ((eq key ?a)
+ (setq subst (gud-read-address)))
++ ((eq key ?b)
++ (setq subst gud-breakpoint-id))
+ ((eq key ?c)
+ (setq subst
+ (gud-find-class
+@@ -3520,6 +3649,7 @@ With arg, dereference expr if ARG is positive, otherwise do not dereference."
+ (defun gud-tooltip-print-command (expr)
+ "Return a suitable command to print the expression EXPR."
+ (pcase gud-minor-mode
++ (`lldb (concat "expression -o -- \"" expr "\""))
+ (`gdbmi (concat "-data-evaluate-expression \"" expr "\""))
+ (`guiler expr)
+ (`dbx (concat "print " expr))
diff --git a/editors/emacs-devel/pkg-plist b/editors/emacs-devel/pkg-plist
index f43327ea454f..99552eb75480 100644
--- a/editors/emacs-devel/pkg-plist
+++ b/editors/emacs-devel/pkg-plist
@@ -1208,7 +1208,6 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-cache.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/nntp.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/nnagent.elc
-%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2104.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-demon.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-agent.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/mml-smime.elc
@@ -1353,7 +1352,6 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/score-mode.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/smiley.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-msg.elc
-%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2104.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-icalendar.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2045.el
%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-salt.elc
@@ -2752,6 +2750,8 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/net/socks.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/ldap.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/shr.el
+%%DATADIR%%/%%EMACS_VER%%/lisp/net/rfc2104.el
+%%DATADIR%%/%%EMACS_VER%%/lisp/net/rfc2104.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/rcirc.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/newsticker.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/net-utils.el
@@ -2770,6 +2770,7 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/net/network-stream.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/mairix.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-cram.elc
+%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-scram-rfc.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/rlogin.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/tramp-ftp.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/tramp-loaddefs.el
@@ -2831,6 +2832,7 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/net/goto-addr.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/telnet.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-cram.el
+%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-scram-rfc.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/netrc.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/net/secrets.el
%%DATADIR%%/%%EMACS_VER%%/lisp/net/newst-treeview.el
@@ -3787,6 +3789,8 @@ share/appdata/emacs.appdata.xml
%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/advice.el
%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/seq.el
%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/seq.elc
+%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/generator.el
+%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/generator.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/informat.el
%%DATADIR%%/%%EMACS_VER%%/lisp/wdired.elc
%%DATADIR%%/%%EMACS_VER%%/lisp/imenu.el