Mercurial > emacs
view etc/srecode/cpp.srt @ 105669:68dd71358159
* alloc.c: Do not define struct catchtag.
* eval.c: Move struct catchtag definition ...
* lisp.h: ... here.
* image.c: Move png.h #include earlier to avoid warnings.
* xterm.c:
* xsmfns.c:
* xselect.c:
* xrdb.c:
* xmenu.c:
* xftfont.c:
* xfont.c:
* xfns.c:
* xfaces.c:
* xdisp.c:
* window.c:
* widget.c:
* w32xfns.c:
* w32uniscribe.c:
* w32term.c:
* w32select.c:
* w32reg.c:
* w32proc.c:
* w32menu.c:
* w32inevt.c:
* w32heap.c:
* w32font.c:
* w32fns.c:
* w32console.c:
* w32.c:
* w16select.c:
* vm-limit.c:
* unexsol.c:
* unexec.c:
* unexcw.c:
* unexaix.c:
* undo.c:
* tparam.c:
* textprop.c:
* terminfo.c:
* terminal.c:
* termcap.c:
* term.c:
* syntax.c:
* sound.c:
* sheap.c:
* search.c:
* scroll.c:
* region-cache.c:
* regex.c:
* ralloc.c:
* process.c:
* print.c:
* msdos.c:
* minibuf.c:
* menu.c:
* marker.c:
* macros.c:
* keymap.c:
* keyboard.c:
* intervals.c:
* insdel.c:
* indent.c:
* gtkutil.c:
* ftxfont.c:
* ftfont.c:
* fringe.c:
* frame.c:
* fontset.c:
* font.c:
* fns.c:
* floatfns.c:
* filelock.c:
* fileio.c:
* emacs.c:
* editfns.c:
* dosfns.c:
* doprnt.c:
* doc.c:
* dispnew.c:
* dired.c:
* dbusbind.c:
* data.c:
* composite.c:
* coding.c:
* cmds.c:
* cm.c:
* chartab.c:
* charset.c:
* character.c:
* ccl.c:
* category.c:
* casetab.c:
* casefiddle.c:
* callproc.c:
* callint.c:
* bytecode.c:
* buffer.c:
* atimer.c: Include setjmp.h. (Bug#4643)
* xlwmenu.c:
* lwlib.c:
* lwlib-utils.c:
* lwlib-Xm.c:
* lwlib-Xlw.c:
* lwlib-Xaw.c: Include setjmp.h.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Mon, 19 Oct 2009 04:27:09 +0000 |
parents | 84fc40980c51 |
children | 1d1d5d9bd884 |
line wrap: on
line source
;;; cpp.srt --- SRecode templates for c++-mode ;; Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam <eric@siege-engine.com> ;; 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 <http://www.gnu.org/licenses/>. 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 :cpp ---- {{>:filecomment}} {{#NOTHEADER}} {{^}} {{/NOTHEADER}} {{#HEADER}} {{>:header_guard}} {{/HEADER}} ---- template header_guard :file :blank ---- #ifndef {{FILENAME_SYMBOL}} #define {{FILENAME_SYMBOL}} 1 {{^}} #endif // {{FILENAME_SYMBOL}} ---- 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 class :indent :blank "Insert a C++ class. For use by user insertion. Override this template to change contents of a class. Override `class-tag' to override the outer structure of the class." ---- {{<A:class-tag}} public: {{>CONSTRUCTOR:classdecl:constructor-tag}} {{>DESTRUCTOR:classdecl:destructor-tag}} private: {{^}} {{/A}} ---- template subclass :indent :blank "Insert a C++ subclass of some other class." sectiondictionary "PARENTS" set NAME "?PARENTNAME" ---- {{>A:class}} ---- template class-tag :indent :blank "Insert a C++ class with the expectation of it being used by a tag inserter. Override this to affect applications, or the outer class structure for the user-facing template." ---- class {{?NAME}} {{#PARENTS}}{{#FIRST}}: {{/FIRST}}public {{NAME}}{{/PARENTS}} { {{^}} }; ---- bind "c" template method :indent :blank "Method belonging to some class, declared externally." ---- {{?TYPE}} {{?PARENT}}::{{?NAME}}{{>:misc:arglist}} {{#INITIALIZERS}}{{>B:initializers}}{{/INITIALIZERS}} { {{^}} } ---- template include :blank "An include statement." ---- #include "{{?NAME}}" ---- bind "i" template label :blank :indent ---- {{?NAME}}: ---- context classdecl template constructor-tag :indent :blank ---- {{?NAME}}{{>:misc:arglist}} { {{^}} } ---- ;; This one really sucks. How can I finish it? template initializers :indent ---- {{#FIRST}}: {{/FIRST}}{{INITNAME}}(){{#NOTLAST}},{{/NOTLAST}} ---- template destructor-tag :indent :blank ---- ~{{?NAME}}{{>:misc:arglist}} { {{^}} } ---- ;;; Base Comment functions for overriding. context classdecl template comment-function-group-start :indent :blank "Used for putting comments in front of a functional group of declarations. Override this with your own preference to avoid using doxygen." ---- {{>A:classdecl:doxygen-function-group-start}} ---- template comment-function-group-end :indent :blank "Used for putting comments in front of a functional group of declarations. Override this with your own preference to avoid using doxygen." ---- {{>A:classdecl:doxygen-function-group-end}} ---- 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 classdecl prompt GROUPNAME "Name of declaration group: " template doxygen-function-group-start :indent :blank ---- /** * {{?GROUPNAME}} * @{ */ ---- template doxygen-function-group-end :indent :blank ---- /** * @} */ ---- 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