|
|
agulbra-switch-cpp-h
I was thinking the other day that my life would be so much better if I could be editing a C++ file in Emacs and by simply hitting a key, the header for that file would be loaded. Hitting the key again would swap back from the header to the implementation. Before breaking out the Emacs Lisp manual I did a quick search and it turns out that those crazy kids at KDE have such a function in their kde-devel-emacs.el file.
Copy this bit of elisp somewhere and bind it to a key:
; From kde-devel-emacs.el, by by David Faure <faure@kde.org>
(defun agulbra-switch-cpp-h ()
"Switch to the corresponding .cpp, .C, .cc or .h file."
(interactive)
(let ((n (buffer-file-name))
(c nil))
(cond ((and (string-match "\\.h$" n)
(progn
(setq c (replace-match ".cpp" t t n))
(file-readable-p c)))
(find-file c))
((and (string-match "\\.h$" n)
(progn
(setq c (replace-match ".cc" t t n))
(file-readable-p c)))
(find-file c))
((and (string-match "\\.h$" n)
(progn
(setq c (replace-match ".C" t t n))
(file-readable-p c)))
(find-file c))
((string-match "\\.h$" n)
(find-file (replace-match ".cpp" t t n)))
((string-match "\\.h$" n)
(find-file (replace-match ".cpp" t t n)))
;((string-match "_[a-z]+[0-9]*.cpp$" n)
; (find-file (replace-match ".h" t t n)))
((string-match "\\.cpp$" n)
(find-file (replace-match ".h" t t n)))
((string-match "\\.cc$" n)
(find-file (replace-match ".h" t t n)))
((string-match "\\.c$" n)
(find-file (replace-match ".h" t t n)))
(t
(error "%s is neither .h, .cc, .C or .cpp" n)))))
posted at: 17:35 | path: /software/emacs | permanent link to this entry | |