diff options
-rw-r--r-- | c-conf.el | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -29,6 +29,41 @@ ;; We can achieve the functionality of the original binding ;; comment-region by comment-dwim bound to "M-;". (define-key c-mode-map (vector 3 3) #'compile) +;; This proves to be too convenient not to bind. +(define-key c-mode-map (vector 'S-tab) #'ff-find-other-file) + +;; generate pragmas automatically. +(define-key c-mode-map (vector ?รน) #'c-generate-pragma) + +;;;###autoload +(defun c-generate-pragma () + "Generate default pragmas for a C header file. +If invoked on a C file, include the corresponding header file." + (interactive) + (cond + ((not (derived-mode-p 'c-mode 'c++-mode))) + ((string-match-p "hp*$"(buffer-name)) + (insert "#ifndef ") + (insert (replace-regexp-in-string + "\\." "_" + (upcase + (file-name-nondirectory + (buffer-file-name))))) + (newline) + (insert "#define ") + (insert (replace-regexp-in-string + "\\." "_" + (upcase + (file-name-nondirectory + (buffer-file-name))))) + (newline 2) + (insert "#endif") + (forward-line -1)) + (t + (insert (format "#include \"%s\"" + (replace-regexp-in-string + "c\\(p*\\)$" "h\\1" (buffer-name)))) + (newline)))) (provide 'c-conf) ;;; c-conf.el ends here |