Record and display absolute path of DLLs loaded (bug#10424).

* lisp/misc.el (list-dynamic-libraries--loaded): New function.
  (list-dynamic-libraries--refresh): Use it.

* src/w32.c (w32_delayed_load): Record the full path of the library
  being loaded.
This commit is contained in:
Juanma Barranquero 2012-04-10 16:16:05 +02:00
parent 8f33b5f873
commit 2a8ce227d0
4 changed files with 34 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2012-04-10 Juanma Barranquero <lekktu@gmail.com>
* misc.el: Display absolute path of loaded DLLs (bug#10424).
(list-dynamic-libraries--loaded): New function.
(list-dynamic-libraries--refresh): Use it.
2012-04-10 Nathan Weizenbaum <nweiz@google.com>
* progmodes/python.el (python-fill-paragraph): Make

View file

@ -138,6 +138,19 @@ variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'."
(defvar list-dynamic-libraries--loaded-only-p)
(make-variable-buffer-local 'list-dynamic-libraries--loaded-only-p)
(defun list-dynamic-libraries--loaded (from)
"Compute the \"Loaded from\" column.
Internal use only."
(if from
(let ((name (car from))
(path (or (cdr from) "<unknown>")))
;; This is a roundabout way to change the tooltip without
;; having to replace the default printer function
(propertize name
'display (propertize name
'help-echo (concat "Loaded from: " path))))
""))
(defun list-dynamic-libraries--refresh ()
"Recompute the list of dynamic libraries.
Internal use only."
@ -159,7 +172,7 @@ Internal use only."
(when (or from
(not list-dynamic-libraries--loaded-only-p))
(push (list id (vector (symbol-name id)
(or from "")
(list-dynamic-libraries--loaded from)
(mapconcat 'identity (cdr lib) ", ")))
tabulated-list-entries)))))

View file

@ -1,3 +1,8 @@
2012-04-10 Juanma Barranquero <lekktu@gmail.com>
* w32.c (w32_delayed_load): Record the full path of the library
being loaded (bug#10424).
2012-04-09 Glenn Morris <rgm@gnu.org>
* doc.c (Fsnarf_documentation): Check variables, functions are bound,

View file

@ -5816,7 +5816,15 @@ w32_delayed_load (Lisp_Object libraries, Lisp_Object library_id)
CHECK_STRING_CAR (dlls);
if ((library_dll = LoadLibrary (SDATA (XCAR (dlls)))))
{
found = XCAR (dlls);
char name[MAX_PATH];
DWORD len;
len = GetModuleFileNameA (library_dll, name, sizeof (name));
found = Fcons (XCAR (dlls),
(len > 0)
/* Possibly truncated */
? make_specified_string (name, -1, len, 1)
: Qnil);
break;
}
}