All pastes #419997 Raw Edit

eisen

public text v1 · immutable
·published 2007-04-01 19:55 UTC
rendered paste body
;; Switch from header to implementation and vice versa
(defun switch-cc-to-h ()
  (interactive)
  (when (string-match "^\\(.*\\)\\.\\([^.]*\\)$" buffer-file-name)
    (let ((name (match-string 1 buffer-file-name))
	  (suffix (match-string 2 buffer-file-name)))
      (cond ((string-match suffix "c\\|cc\\|C\\|cpp")
	     (cond ((file-exists-p (concat name ".h"))
                    (find-file (concat name ".h"))
		    )
                   ((file-exists-p (concat name ".hh"))
                    (find-file (concat name ".hh"))
		    )
		   ((file-exists-p (concat name ".hpp"))
		    (find-file (concat name ".hpp"))
		    )
		   ))
            ((string-match suffix "h\\|hh\\|hpp")
             (cond ((file-exists-p (concat name ".cc"))
                    (find-file (concat name ".cc"))
		    )
                   ((file-exists-p (concat name ".C"))
                    (find-file (concat name ".C"))
		    )
                   ((file-exists-p (concat name ".cpp"))
                    (find-file (concat name ".cpp"))
		    )
                   ((file-exists-p (concat name ".c"))
                    (find-file (concat name ".c"))
		    )))))))

(add-hook 'c++-mode-hook
  (lambda ()
    (define-key c++-mode-map [(control f12)] 'switch-cc-to-h)
))