diff options
author | JSDurand <mmemmew@gmail.com> | 2021-07-19 09:08:38 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2021-07-19 09:08:38 +0800 |
commit | 7591f5447248a349e9e4048a972560d856084c97 (patch) | |
tree | 19726c0d032526307f5ade2c058177d619766a96 /c-conf.el | |
parent | 76debf422c0555a4db6d680645148d8eec9ed4be (diff) |
new: generate-pragma in c-mode
* c-conf.el (generate-pragma): This generates a pragma for header
files, and an include statement for C files.
Diffstat (limited to 'c-conf.el')
-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 |