;;; c.srt --- SRecode templates for c-mode ;; Copyright (C) 2007-2010, 2012-2024 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . set mode "c-mode" set comment_start "/**" set comment_end " */" set comment_prefix " *" ;; OVERRIDE THIS in your user or project template file to whatever ;; you use for your project. set HEADEREXT ".h" context file template empty :time :user :file :c ---- {{>:filecomment}} {{#NOTHEADER}} {{^}} {{/NOTHEADER}} {{#HEADER}} {{>:header_guard}} {{/HEADER}} ---- template header_guard :file :blank :c ---- #ifndef {{FILENAME_SYMBOL:upcase}} #define {{FILENAME_SYMBOL:upcase}} 1 {{^}} #endif // {{FILENAME_SYMBOL:upcase}} ---- context misc template arglist "Insert an argument list for a function. @todo - Support smart CR in a buffer for not too long lines." ---- ({{#ARGS}}{{TYPE}} {{NAME}}{{#NOTLAST}},{{/NOTLAST}}{{/ARGS}}) ---- context declaration prompt TYPE "Return Type: " template function :indent :blank "Insert a function declaration." ---- {{?TYPE}} {{?NAME}}{{>:misc:arglist}} {{#INITIALIZERS}}{{>B:initializers}}{{/INITIALIZERS}} { {{^}} } ---- bind "f" template function-prototype :indent :blank "Insert a function declaration." ---- {{?TYPE}} {{?NAME}}{{>:misc:arglist}}; ---- prompt TYPE "Data Type: " template variable :indent :blank "Insert a variable declaration." ---- {{?TYPE}} {{?NAME}}{{#HAVEDEFAULT}} = {{DEFAULT}}{{/HAVEDEFAULT}}; ---- bind "v" template variable-prototype :indent :blank "Insert a variable declaration." ---- {{?TYPE}} {{?NAME}}; ---- bind "v" template include :blank "An include statement." ---- #include "{{?NAME}}" ---- bind "i" template system-include :blank "An include statement." ---- #include <{{?NAME}}> ---- bind "i" template label :blank :indent ---- {{?NAME}}: ---- context declaration template comment-function :indent :blank "Used to put a nice comment in front of a function. Override this with your own preference to avoid using doxygen" ---- {{>A:declaration:doxygen-function}} ---- ;;; DOXYGEN FEATURES ;; ;; context declaration template doxygen-function :indent :blank ---- /** * @name {{NAME}} - {{DOC}}{{^}}{{#ARGS}} * @param {{NAME}} - {{DOC}}{{/ARGS}} * @return {{TYPE}} */ ---- template doxygen-variable-same-line ---- /**< {{DOC}}{{^}} */ ---- template doxygen-section-comment :blank :indent "Insert a comment that separates sections of an Emacs Lisp file." ---- /** {{?TITLE}} * * {{^}} */ ---- ;; end