I have found a command M-x project-find-regexp, how can I find out from where it comes from, ELPA/Melpa package or part of GNU/Emacs?

  • 1
    describe-function gives you a link to the corresponding file.
    – bertfred
    Aug 22, 2017 at 8:54

1 Answer 1


Use describe-function to get information about a function: C-h f project-find-regexp RET (or F1 f project-find-regexp RET). The first line is something like

project-find-regexp is a compiled Lisp function in `project.el'.

Click on the file name, or move the cursor to it and press RET. If you have the source code, this opens the file containing the function definition. Now press C-h f (find-file); this comes pre-filled with the path to the directory containing the file. Press C-g to cancel. (Alternative ways to find the directory include M-x pwd RET; this makes it harder to copy-paste from.)

From the directory path, you should be able to tell whether it's part of Emacs (e.g. under /usr/share/emacs/VERSION/lisp on a typical Linux system), a third-party file installed either through an OS-level package or manually (under a directory called site-lisp), or through Emacs's ELPA package mechanism (under .emacs.d/elpa in your home directory).

If you don't have the source code of the file that defines the function, you'll only get something like

project-find-regexp is an interactive compiled Lisp function.

In this case, you can run M-: (find-function 'project-find-regexp). You'll get an error message with the location where Emacs expects to find the source file. Press ESC ESC ESC to dismiss the error message.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.