I've now designed two approaches to handle this. The user interface is the same: Move to some `change-log-list' item and type C-c C-t. The corresponding part of the source should be displayed in another window. The simple approach is based on searching and comparing the result with that of `add-log-current-defun'. It works pretty well most of the time but may exhibit the nasty behavior described in http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00443.html On my 1 GHz machine this means that I have to wait some 40 secs until I'm told that there are no matches. I can think of two ways to handle this: (1) Convince Alan that the behavior of `c-beginning-of-defun' is intolerable - AFAICT this has been tried before. (2) Fix this within `add-log-current-defun' to not use `c-beginning-of-defun' - I'm unable to do this myself because I completely fail to understand that part of the function. I've attached the simple approach as add-log-simple.patch. The more complicated approach is based on a combination of imenu, etags, and regexp searching. I've put most of this in a separate file called local-tags.el merely because it would allow me to fix `which-func-mode' and `imenu' as well (both are currently not really useful for c-mode). This approach is more reliable and works faster for c-mode files. It requires, however, to have etags installed and working in order to get reasonable behavior for c-mode change logs. The second approach is attached as add-log-tags.patch and local-tags.el. Note that add-log.el has (require 'local-tags) here, hence you have to make sure that the latter is found.