├── jsdocs-auto-complete.sublime-macro ├── Add DocBlockr Line.sublime-macro ├── Default.sublime-commands ├── Default (Windows).sublime-keymap ├── Add DocBlockr Line Before.sublime-macro ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── actionscript.sublime-completions ├── LICENSE ├── Main.sublime-menu ├── java.sublime-completions ├── Default (OSX).sublime-keymap ├── php.sublime-completions ├── Base File.sublime-settings ├── coffee.sublime-completions ├── js.sublime-completions ├── HISTORY.md ├── README.md ├── Default.sublime-keymap └── jsdocs.py /jsdocs-auto-complete.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "insert_snippet", "args": {"contents": "@"}}, 3 | {"command": "auto_complete"} 4 | ] 5 | -------------------------------------------------------------------------------- /Add DocBlockr Line.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert_snippet", "args": { 4 | "contents": "\n${TM_CURRENT_LINE/^\\s*(\\*\\s*).*$/$1/}" 5 | }} 6 | ] 7 | -------------------------------------------------------------------------------- /Default.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "DocBlockr: Decorate line comment", 4 | "command": "jsdocs_decorate" 5 | }, 6 | { 7 | "caption": "DocBlockr: Reparse comment block", 8 | "command": "jsdocs_reparse" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /Default (Windows).sublime-keymap: -------------------------------------------------------------------------------- 1 | [ 2 | // reparse a comment block's placeholders 3 | { "keys": ["alt+w"], "command": "jsdocs_reparse", 4 | "context": [ 5 | { "key": "selector", "operator": "equal", "operand": "comment.block" } 6 | ] 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /Add DocBlockr Line Before.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "bol"}}, 3 | {"command": "insert_snippet", "args": { 4 | "contents": "${TM_CURRENT_LINE/^\\s*(\\*\\s*).*$/$1/}\n" 5 | }}, 6 | {"command": "move", "args": {"by": "lines", "forward": false}} 7 | ] 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | You want to contribute to DocBlockr? 2 | 3 | **THEN YOU, SIR OR MADAM, ARE MY FRIEND.** 4 | 5 | There's only a couple of things you should know first. 6 | 7 | - **The most important thing** is to know there are two main branches. `master` is the "live" stable branch which pushes code into thousands of people's editors. `develop` is the place where development happens. 8 | - When beginning work on a patch, please start your branches from the latest commit on the `develop` branch. If you've already made some commits, please `git rebase develop` and then continue. 9 | - When making a pull request, please target it back to the `develop` branch. Pull requests targetting `master` will be rejected. 10 | - Everything else is pretty standard: 11 | - Trim trailing spaces. 12 | - Unix line endings. 13 | - Spaces, not tabs. 14 | - Run your code through PEP8, or some linting program. 15 | 16 | Thank you! 17 | -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | Many thanks to all those who have sent bug reports and especially to those who sent pull requests. Here are the names of those who have contributed code: 2 | 3 | - Aleksey Smolenchuk (@lxe) 4 | - Alex Whitman (@alexwhitman) 5 | - Amir Abu Shareb (@yields) 6 | - Andreas (@ryrun) 7 | - Andrew Hanna (@percyhanna) 8 | - Ben Linskey (@blinskey) 9 | - Craig Patik (@cpatik) 10 | - Daniel Julius Lasiman (@danieljl) 11 | - Dany Ouellette (@DanyO) 12 | - Geoffrey Huntley (@ghuntley) 13 | - Jordi Baggiano (@seldaek) 14 | - Josh Freeman (@freejosh) 15 | - Korvin Szanto (@KorvinSzanto) 16 | - Marc Neuhaus (@mneuhaus) 17 | - Mat Gadd (@Drarok) 18 | - Michael Barany (@mbarany) 19 | - Nick Dowdell (@mikulad13) 20 | - Nick Fisher (@spadgos) 21 | - Pavel Voronin (@pavel-voronin) 22 | - Rafal Chlodnicki (@rchl) 23 | - Roberto Segura (@phproberto) 24 | - Scott Kuroda (@skuroda) 25 | - Simon Aittamaa (@simait) 26 | - Sven Axelsson (@svenax) 27 | - Thanasis Polychronakis (@thanpolas) 28 | - Tiago Santos (@tmcsantos) 29 | - Timo Tijhof (@Krinkle) 30 | - wronex (@wronex) 31 | -------------------------------------------------------------------------------- /actionscript.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.actionscript comment.block", 3 | "completions": [ 4 | { "trigger": "@copy", "contents": "@copy ${1:[reference]}" }, 5 | { "trigger": "@default", "contents": "@default ${1:[value]}" }, 6 | { "trigger": "@eventType", "contents": "@eventType ${1:[package.class.CONSTANT]}" }, 7 | { "trigger": "@example", "contents": "@example ${1:[exampleText]}" }, 8 | { "trigger": "@exampleText", "contents": "@exampleText ${1:[string]}" }, 9 | { "trigger": "@inheritDoc", "contents": "@inheritDoc" }, 10 | { "trigger": "@internal", "contents": "@internal ${1:[text]}" }, 11 | { "trigger": "@param", "contents": "@param ${1:[paramName]} ${2:[description]}" }, 12 | { "trigger": "@private", "contents": "@private" }, 13 | { "trigger": "@return", "contents": "@return ${1:[description]}" }, 14 | { "trigger": "@see", "contents": "@see ${1:[reference]} ${2:[displayText]}" }, 15 | { "trigger": "@throws", "contents": "@throws ${1:[package.class.className]} ${2:[description]}" } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2013 Nick Fisher 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Main.sublime-menu: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "Preferences", 4 | "mnemonic": "n", 5 | "id": "preferences", 6 | "children": 7 | [ 8 | { 9 | "caption": "Package Settings", 10 | "mnemonic": "P", 11 | "id": "package-settings", 12 | "children": 13 | [ 14 | { 15 | "caption": "DocBlockr", 16 | "children": 17 | [ 18 | { 19 | "command": "open_file", "args": 20 | { 21 | "file": "${packages}/DocBlockr/Base File.sublime-settings" 22 | }, 23 | "caption": "Settings – Default" 24 | }, 25 | { 26 | "command": "open_file", "args": 27 | { 28 | "file": "${packages}/User/Base File.sublime-settings" 29 | }, 30 | "caption": "Settings – User" 31 | }, 32 | { "caption": "-" } 33 | ] 34 | } 35 | ] 36 | } 37 | ] 38 | } 39 | ] 40 | -------------------------------------------------------------------------------- /java.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.java,source.groovy comment.block.documentation", 3 | "completions": 4 | [ 5 | { "trigger" : "@author", "contents": "@author ${1:[author]}"}, 6 | { "trigger" : "@deprecated", "contents": "@deprecated ${1:[deprecated-text]}"}, 7 | { "trigger" : "@exception", "contents": "@exception ${1:[class-name]} ${2:[description]}"}, 8 | { "trigger" : "@param", "contents": "@param ${1:[parameter-name]} ${2:[description]}"}, 9 | { "trigger" : "@return", "contents": "@return ${1:[description]}"}, 10 | { "trigger" : "@see", "contents": "@see ${1:[reference]}"}, 11 | { "trigger" : "@serial", "contents": "@serial ${1:[description | include | exclude]}"}, 12 | { "trigger" : "@serialField", "contents": "@serialField ${1:[field-name]} ${2:[field-type]} ${3:[field-description]}"}, 13 | { "trigger" : "@serialDate", "contents": "@serialDate ${1:[data-description]}"}, 14 | { "trigger" : "@since", "contents": "@since ${1:[since-text]}"}, 15 | { "trigger" : "@throws", "contents": "@throws ${1:[class-name]} ${2:[description]}"}, 16 | { "trigger" : "@version", "contents": "@version ${1:[version-text]}"}, 17 | { "trigger" : "{@code}", "contents": "{@code ${1:[text]}}"}, 18 | { "trigger" : "{@docRoot}", "contents": "{@docRoot}"}, 19 | { "trigger" : "{@inheritDoc}", "contents": "{@inheritDoc}"}, 20 | { "trigger" : "{@link}", "contents": "{@link ${1:[package.class#member]} ${2:[label]}}"}, 21 | { "trigger" : "{@linkplain}", "contents": "{@linkplain ${1:[package.class#member]} ${2:[label]}}"}, 22 | { "trigger" : "{@literal}", "contents": "{@literal ${1:[text]}}"}, 23 | { "trigger" : "{@value}", "contents": "{@value ${1:[package.class#field]}}"} 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /Default (OSX).sublime-keymap: -------------------------------------------------------------------------------- 1 | [ 2 | { "keys": ["super+j"], "command": "jsdocs_join", "context": 3 | [ 4 | { "key": "selector", "operator": "equal", "operand": "comment.block" } 5 | ] 6 | }, 7 | { "keys": ["super+j"], "command": "jsdocs_join", "context": 8 | [ 9 | { "key": "selector", "operator": "equal", "operand": "comment.line" } 10 | ] 11 | }, 12 | { "keys": ["super+alt+q"], "command": "jsdocs_wrap_lines", 13 | "context": [ 14 | { "key": "selector", "operator": "equal", "operand": "comment.block", "match_all": true } 15 | ] 16 | }, 17 | // add line after, in a DocBlock 18 | { "keys": ["super+enter"], "command": "run_macro_file", "args": {"file": "Packages/DocBlockr/Add DocBlockr Line.sublime-macro"}, 19 | "context": [ 20 | { "key": "setting.auto_indent", "operator": "equal", "operand": true, "match_all": true }, 21 | { "key": "selector", "operator": "equal", "operand": "comment.block", "match_all": true }, 22 | { "key": "auto_complete_visible", "operator": "equal", "operand": false, "match_all": true }, 23 | { "key": "preceding_text", "operator": "regex_contains", "operand": "^\\s*\\*", "match_all": true } 24 | ] 25 | }, 26 | 27 | // add line before, in a DocBlock 28 | { "keys": ["super+shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/DocBlockr/Add DocBlockr Line Before.sublime-macro"}, 29 | "context": [ 30 | { "key": "setting.auto_indent", "operator": "equal", "operand": true, "match_all": true }, 31 | { "key": "selector", "operator": "equal", "operand": "comment.block", "match_all": true }, 32 | { "key": "auto_complete_visible", "operator": "equal", "operand": false, "match_all": true }, 33 | { "key": "preceding_text", "operator": "regex_contains", "operand": "^\\s*\\*", "match_all": true } 34 | ] 35 | } 36 | ] 37 | -------------------------------------------------------------------------------- /php.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.php comment.block.documentation", 3 | "completions": 4 | [ 5 | { "trigger" : "@abstract", "contents": ""}, 6 | { "trigger" : "@access", "contents": "@access ${1:[public]}"}, 7 | { "trigger" : "@author", "contents": "@author ${1:[author]} ${3:<${2:[email]}>}" }, 8 | { "trigger" : "@category", "contents": "@category ${1:[category]}"}, 9 | { "trigger" : "@copyright", "contents": "@copyright ${1:[description]}"}, 10 | { "trigger" : "@deprecated", "contents": "@deprecated ${1:[description]}"}, 11 | { "trigger" : "@example", "contents": "@example\n* "}, 12 | { "trigger" : "@extends", "contents": "@extends ${1:[type]}"}, 13 | { "trigger" : "@filesource", "contents": ""}, 14 | { "trigger" : "@final", "contents": ""}, 15 | { "trigger" : "@global", "contents": "@global ${1:[type]} ${2:name}"}, 16 | { "trigger" : "@ignore", "contents": ""}, 17 | { "trigger" : "@implements", "contents": "@implements ${1:[type]}"}, 18 | { "trigger" : "@internal", "contents": "@internal ${1:[private description]}"}, 19 | { "trigger" : "@license", "contents": "@license ${1:[url]} ${2:[description]}"}, 20 | { "trigger" : "@link", "contents": "@link ${1:[url]} ${2:[description]}"}, 21 | { "trigger" : "@method", "contents": "@method {${1:[return type]}} ${2:[name]}() ${2:[name]}(${3:[args]}) ${4:[description]}"}, 22 | { "trigger" : "@name", "contents": "@name {$1:[name]}"}, 23 | { "trigger" : "@namespace", "contents": "@namespace ${1:[description]}"}, 24 | { "trigger" : "@package", "contents": "@package ${1:[name]}"}, 25 | { "trigger" : "@param", "contents": "@param ${1:[type]} ${2:[varname]} ${3:[description]}" }, 26 | { "trigger" : "@property", "contents": "@property ${1:[type]} ${2:[varname]} ${3:[description]}"}, 27 | { "trigger" : "@return", "contents": "@return ${1:[type]} ${2:[description]}" }, 28 | { "trigger" : "@see", "contents": "@see ${1:[description]}"}, 29 | { "trigger" : "@since", "contents": "@since ${1:[version]}"}, 30 | { "trigger" : "@static", "contents": ""}, 31 | { "trigger" : "@staticvar", "contents": "@staticvar ${1:[type]} ${2:[description]}"}, 32 | { "trigger" : "@subpackage", "contents": "@subpackage ${1:[name]}"}, 33 | { "trigger" : "@throws", "contents": "@throws ${1:[exceptionType]} If ${2:[this condition is met]}"}, 34 | { "trigger" : "@todo", "contents": "@todo ${1:[description]}"}, 35 | { "trigger" : "@tutorial", "contents": "@tutorial ${1:[path]}"}, 36 | { "trigger" : "@uses", "contents": "@uses ${1:[object]} ${2:[description]}"}, 37 | { "trigger" : "@var", "contents": "@var ${1:[type]} ${2:[description]}"}, 38 | { "trigger" : "@version", "contents": "@version ${1:[version]}"}, 39 | { "trigger" : "{@example}", "contents": "{@example ${1:[path]}}"}, 40 | { "trigger" : "{@inheritdoc}", "contents": ""}, 41 | { "trigger" : "{@link}", "contents": "{@link ${1:[url]}}"}, 42 | { "trigger" : "{@source}", "contents": ""}, 43 | { "trigger" : "{@tutorial}", "contents": "{@tutorial ${1:[path]}}"} 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /Base File.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // If true, when in a docblock, pressing tab after a @tag line (like @param, @return) 3 | // will indent to the description. This is useful if you are writing a long description 4 | // and want that block of text to stay aligned. 5 | "jsdocs_deep_indent": true, 6 | 7 | // If true, then pressing enter while in a double-slash comment (like this one) 8 | // will automatically add two slashes to the next line as well 9 | "jsdocs_extend_double_slash": true, 10 | 11 | // the number of spaces to add after the leading * 12 | "jsdocs_indentation_spaces": 1, 13 | 14 | // The number of spaces to add after the leading * in lines under the first line of each 15 | // paragraph. This is only used together with automatic line wrapping. For example, a value 16 | // of 3 might look like this: 17 | // 18 | // /** 19 | // * Duis sed arcu non tellus eleifend ullamcorper quis non erat. Curabitur 20 | // * metus elit, ultrices et tristique a, blandit at justo. 21 | // * @param {String} foo Lorem ipsum dolor sit amet. 22 | // * @param {Number} bar Nullam fringilla feugiat pretium. Quisque 23 | // * consectetur, risus eu pellentesque tincidunt, nulla ipsum imperdiet 24 | // * massa, sit amet adipiscing dolor. 25 | // * @return {[Type]} 26 | // */ 27 | "jsdocs_indentation_spaces_same_para": 1, 28 | 29 | // whether the words following the @tags should align. 30 | // Possible values are 'no', 'shallow', 'deep' 31 | // For backwards compatibility, false is equivalent to 'no', true is equivalent to 'shallow' 32 | // 33 | // 'shallow' will just align the first words after the tag. eg: 34 | // @param {MyCustomClass} myVariable desc1 35 | // @return {String} foo desc2 36 | // @property {Number} blahblah desc3 37 | // 38 | // 'deep' will align each component of the tags, eg: 39 | // @param {MyCustomClass} myVariable desc1 40 | // @return {String} foo desc2 41 | // @property {Number} blahblah desc3 42 | "jsdocs_align_tags": "deep", 43 | 44 | // Any additional boilerplate tags which should be added to each block. Should be an array of strings. 45 | // Note that this only applies when a docblock is opened directly preceding a function. 46 | // Tab points can be added by using snippet syntax, eg: ${1:default text} 47 | "jsdocs_extra_tags": [], 48 | 49 | // If extra tags are defined, by default they go between the description and the param/return tags. If this is set to 50 | // true, the extra tags are placed at the very end. 51 | "jsdocs_extra_tags_go_after": false, 52 | 53 | // A map to determine the value of variables, should hungarian notation (or similar) be in use 54 | "jsdocs_notation_map": [], 55 | 56 | // Since there seems to be no agreed standard for "@return" or "@returns", use this setting to rename it as you wish. 57 | "jsdocs_return_tag": "@return", 58 | 59 | // Add a '[description]' placeholder for the return tag? 60 | "jsdocs_return_description": true, 61 | 62 | // Add a '[description]' placeholder for the param tag? 63 | "jsdocs_param_description": true, 64 | 65 | // Whether there should be blank lines added between the description line, and between tags of different types. 66 | // If true, the output might look like this: 67 | // 68 | // /** 69 | // * [description] 70 | // * 71 | // * @param {String} foo 72 | // * @param {Number} bar 73 | // * 74 | // * @return {[Type]} 75 | // */ 76 | "jsdocs_spacer_between_sections": false, 77 | 78 | // Whether each section should be indented to the same level, or indent each one individually. 79 | // (When true, the @param section will lose the extra space immediately after each '@param'). 80 | "jsdocs_per_section_indent": false, 81 | 82 | // Minimum spaces between cols (default is 1). For example, a value 83 | // of 2 might look like this: 84 | // 85 | // /** 86 | // * Duis sed arcu non tellus eleifend ullamcorper quis non erat. Curabitur 87 | // * 88 | // * @param {String} foo Lorem ipsum dolor sit amet. 89 | // * @param {Number} bar Nullam fringilla feugiat pretium. Quisque 90 | // * 91 | // * @return {[Type]} description 92 | // */ 93 | "jsdocs_min_spaces_between_columns": 1, 94 | 95 | // indicates whether the @method tag should be added automatically 96 | "jsdocs_autoadd_method_tag": false, 97 | 98 | // If set to true, DocBlockr won't parse any code, providing no default templates. All other functions work as normal. 99 | "jsdocs_simple_mode": false, 100 | 101 | // If set to true, primitives such as "Number" and "String" will be documented as "number" and "string". 102 | "jsdocs_lower_case_primitives": false, 103 | 104 | // If set to true, primitives such as "boolean" and "integer" will be shortened to "bool" and "int". 105 | "jsdocs_short_primitives": false, 106 | 107 | // This property affects the default tag added to `var` declarations in Javascript/Coffeescript. If `false`, the 108 | // default is used ("var"), otherwise it can be set to any String, eg: "property" 109 | "jsdocs_override_js_var": false, 110 | 111 | // If set to true, an extra line break is added after the end of a docblock to separate it from the code. 112 | "jsdocs_newline_after_block": false 113 | } 114 | -------------------------------------------------------------------------------- /coffee.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.coffee comment.block", 3 | "completions": 4 | [ 5 | { "trigger" : "@async", "contents": ""}, 6 | { "trigger" : "@augments", "contents": "@augments {${1:[type]}}"}, 7 | { "trigger" : "@attribute", "contents": "@attribute ${1:[name]}"}, 8 | { "trigger" : "@author", "contents": "@author ${1:[author]}"}, 9 | { "trigger" : "@beta", "contents": ""}, 10 | { "trigger" : "@borrows", "contents": "@borrows ${1:[otherMemberName]} as ${2:[thisMemberName]}"}, 11 | { "trigger" : "@bubbles", "contents": "@bubbles ${1:[name]}"}, 12 | { "trigger" : "@chainable", "contents": ""}, 13 | { "trigger" : "@class", "contents": "@class ${1:[description]}"}, 14 | { "trigger" : "@const", "contents": ""}, 15 | { "trigger" : "@constant", "contents": ""}, 16 | { "trigger" : "@constructor", "contents": ""}, 17 | { "trigger" : "@constructs", "contents": ""}, 18 | { "trigger" : "@copyright", "contents": "@copyright ${1:[description]}"}, 19 | { "trigger" : "@default", "contents": "@default ${1:[value]}"}, 20 | { "trigger" : "@define", "contents": "@define {${1:[type]}} ${2:[description]}"}, 21 | { "trigger" : "@deprecated", "contents": "@deprecated ${1:[description]}"}, 22 | { "trigger" : "@description", "contents": "@description ${1:[description]}"}, 23 | { "trigger" : "@enum", "contents": "@enum {${1:[type]}}"}, 24 | { "trigger" : "@event", "contents": ""}, 25 | { "trigger" : "@example", "contents": "@example\n* "}, 26 | { "trigger" : "@extends", "contents": "@extends {${1:[type]}}"}, 27 | { "trigger" : "@extension", "contents": "@extension ${1:[class]}"}, 28 | { "trigger" : "@extensionfor", "contents": "@extensionfor ${1:[class]}"}, 29 | { "trigger" : "@extension_for", "contents": "@extension_for ${1:[class]}"}, 30 | { "trigger" : "@field", "contents": ""}, 31 | { "trigger" : "@fileOverview", "contents": "@fileOverview ${1:[description]}"}, 32 | { "trigger" : "@final", "contents": ""}, 33 | { "trigger" : "@for", "contents": "@for ${1:[class]}"}, 34 | { "trigger" : "@function", "contents": ""}, 35 | { "trigger" : "@ignore", "contents": ""}, 36 | { "trigger" : "@implements", "contents": "@implements {${1:[type]}}"}, 37 | { "trigger" : "@inheritDoc", "contents": ""}, 38 | { "trigger" : "@inner", "contents": ""}, 39 | { "trigger" : "@interface", "contents": ""}, 40 | { "trigger" : "@internal", "contents": "@internal ${1:[private description]}"}, 41 | { "trigger" : "@lends", "contents": "@lends ${1:[symbolAlias]}"}, 42 | { "trigger" : "@license", "contents": "@license ${1:[url]} ${2:[description]}"}, 43 | { "trigger" : "@main", "contents": "@main ${1:[module name]}"}, 44 | { "trigger" : "@memberOf", "contents": "@memberOf ${1:[parentNamePath]}"}, 45 | { "trigger" : "@method", "contents": "@method ${1:[name]}"}, 46 | { "trigger" : "@module", "contents": "@module ${1:[module name]}"}, 47 | { "trigger" : "@name", "contents": "@name {$1:[name]}"}, 48 | { "trigger" : "@namespace", "contents": "@namespace ${1:[description]}"}, 49 | { "trigger" : "@nosideeffects", "contents": ""}, 50 | { "trigger" : "@optional", "contents": ""}, 51 | { "trigger" : "@override", "contents": "@override"}, 52 | { "trigger" : "@package", "contents": "@package ${1:[name]}"}, 53 | { "trigger" : "@param", "contents": "@param {${1:[type]}} ${2:[varname]} ${3:[description]}" }, 54 | { "trigger" : "@preserve", "contents": ""}, 55 | { "trigger" : "@private", "contents": ""}, 56 | { "trigger" : "@property", "contents": "@property {${1:[type]}} ${2:[propName]} ${3:[description]}"}, 57 | { "trigger" : "@protected", "contents": ""}, 58 | { "trigger" : "@public", "contents": ""}, 59 | { "trigger" : "@readOnly", "contents": ""}, 60 | { "trigger" : "@required", "contents": ""}, 61 | { "trigger" : "@requires", "contents": "@requires ${1:[description]}"}, 62 | { "trigger" : "@return", "contents": "@return {${1:[type]}} ${2:[description]}" }, 63 | { "trigger" : "@returns", "contents": "@returns {${1:[type]}} ${2:[description]}" }, 64 | { "trigger" : "@see", "contents": "@see ${1:[description]}"}, 65 | { "trigger" : "@since", "contents": "@since ${1:[version]}"}, 66 | { "trigger" : "@static", "contents": ""}, 67 | { "trigger" : "@sumodule", "contents": "@submodule ${1:[submodule]}"}, 68 | { "trigger" : "@subpackage", "contents": "@subpackage ${1:[name]}"}, 69 | { "trigger" : "@this", "contents": "@this {${1:[type]}}"}, 70 | { "trigger" : "@throws", "contents": "@throws {${1:[exceptionType]}} If ${2:[this condition is met]}"}, 71 | { "trigger" : "@todo", "contents": "@todo ${1:[description]}"}, 72 | { "trigger" : "@tutorial", "contents": "@tutorial ${1:[link]}"}, 73 | { "trigger" : "@type", "contents": "@type {${1:[type]}}"}, 74 | { "trigger" : "@typedef", "contents": "@typedef {${1:[type]}}"}, 75 | { "trigger" : "@uses", "contents": "@uses ${1:[object]} ${2:[description]}"}, 76 | { "trigger" : "@var", "contents": "@var {${1:[type]}} ${2:[description]}"}, 77 | { "trigger" : "@version", "contents": "@version ${1:[version]}"}, 78 | { "trigger" : "@writeOnce", "contents": ""}, 79 | { "trigger" : "{@link}", "contents": "{@link ${1:[symbol]}}"} 80 | ] 81 | } 82 | -------------------------------------------------------------------------------- /js.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.js comment.block.documentation", 3 | "completions": 4 | [ 5 | { "trigger" : "@async", "contents": ""}, 6 | { "trigger" : "@augments", "contents": "@augments {${1:[type]}}"}, 7 | { "trigger" : "@attribute", "contents": "@attribute ${1:[name]}"}, 8 | { "trigger" : "@author", "contents": "@author ${1:[author]}"}, 9 | { "trigger" : "@beta", "contents": ""}, 10 | { "trigger" : "@borrows", "contents": "@borrows ${1:[otherMemberName]} as ${2:[thisMemberName]}"}, 11 | { "trigger" : "@bubbles", "contents": "@bubbles ${1:[name]}"}, 12 | { "trigger" : "@chainable", "contents": ""}, 13 | { "trigger" : "@class", "contents": "@class ${1:[description]}"}, 14 | { "trigger" : "@const", "contents": ""}, 15 | { "trigger" : "@constant", "contents": ""}, 16 | { "trigger" : "@constructor", "contents": ""}, 17 | { "trigger" : "@constructs", "contents": ""}, 18 | { "trigger" : "@copyright", "contents": "@copyright ${1:[description]}"}, 19 | { "trigger" : "@default", "contents": "@default ${1:[value]}"}, 20 | { "trigger" : "@define", "contents": "@define {${1:[type]}} ${2:[description]}"}, 21 | { "trigger" : "@deprecated", "contents": "@deprecated ${1:[description]}"}, 22 | { "trigger" : "@description", "contents": "@description ${1:[description]}"}, 23 | { "trigger" : "@enum", "contents": "@enum {${1:[type]}}"}, 24 | { "trigger" : "@event", "contents": ""}, 25 | { "trigger" : "@example", "contents": "@example\n* "}, 26 | { "trigger" : "@extends", "contents": "@extends {${1:[type]}}"}, 27 | { "trigger" : "@extension", "contents": "@extension ${1:[class]}"}, 28 | { "trigger" : "@extensionfor", "contents": "@extensionfor ${1:[class]}"}, 29 | { "trigger" : "@extension_for", "contents": "@extension_for ${1:[class]}"}, 30 | { "trigger" : "@field", "contents": ""}, 31 | { "trigger" : "@fileOverview", "contents": "@fileOverview ${1:[description]}"}, 32 | { "trigger" : "@final", "contents": ""}, 33 | { "trigger" : "@for", "contents": "@for ${1:[class]}"}, 34 | { "trigger" : "@function", "contents": ""}, 35 | { "trigger" : "@ignore", "contents": ""}, 36 | { "trigger" : "@implements", "contents": "@implements {${1:[type]}}"}, 37 | { "trigger" : "@inheritDoc", "contents": ""}, 38 | { "trigger" : "@inner", "contents": ""}, 39 | { "trigger" : "@interface", "contents": ""}, 40 | { "trigger" : "@internal", "contents": "@internal ${1:[private description]}"}, 41 | { "trigger" : "@lends", "contents": "@lends ${1:[symbolAlias]}"}, 42 | { "trigger" : "@license", "contents": "@license ${1:[url]} ${2:[description]}"}, 43 | { "trigger" : "@main", "contents": "@main ${1:[module name]}"}, 44 | { "trigger" : "@memberOf", "contents": "@memberOf ${1:[parentNamePath]}"}, 45 | { "trigger" : "@method", "contents": "@method ${1:[name]}"}, 46 | { "trigger" : "@module", "contents": "@module ${1:[module name]}"}, 47 | { "trigger" : "@name", "contents": "@name {$1:[name]}"}, 48 | { "trigger" : "@namespace", "contents": "@namespace ${1:[description]}"}, 49 | { "trigger" : "@nosideeffects", "contents": ""}, 50 | { "trigger" : "@optional", "contents": ""}, 51 | { "trigger" : "@override", "contents": "@override"}, 52 | { "trigger" : "@package", "contents": "@package ${1:[name]}"}, 53 | { "trigger" : "@param", "contents": "@param {${1:[type]}} ${2:[varname]} ${3:[description]}" }, 54 | { "trigger" : "@preserve", "contents": ""}, 55 | { "trigger" : "@private", "contents": ""}, 56 | { "trigger" : "@property", "contents": "@property {${1:[type]}} ${2:[propName]} ${3:[description]}"}, 57 | { "trigger" : "@protected", "contents": ""}, 58 | { "trigger" : "@public", "contents": ""}, 59 | { "trigger" : "@readOnly", "contents": ""}, 60 | { "trigger" : "@required", "contents": ""}, 61 | { "trigger" : "@requires", "contents": "@requires ${1:[description]}"}, 62 | { "trigger" : "@return", "contents": "@return {${1:[type]}} ${2:[description]}" }, 63 | { "trigger" : "@returns", "contents": "@returns {${1:[type]}} ${2:[description]}" }, 64 | { "trigger" : "@see", "contents": "@see ${1:[description]}"}, 65 | { "trigger" : "@since", "contents": "@since ${1:[version]}"}, 66 | { "trigger" : "@static", "contents": ""}, 67 | { "trigger" : "@sumodule", "contents": "@submodule ${1:[submodule]}"}, 68 | { "trigger" : "@subpackage", "contents": "@subpackage ${1:[name]}"}, 69 | { "trigger" : "@this", "contents": "@this {${1:[type]}}"}, 70 | { "trigger" : "@throws", "contents": "@throws {${1:[exceptionType]}} If ${2:[this condition is met]}"}, 71 | { "trigger" : "@todo", "contents": "@todo ${1:[description]}"}, 72 | { "trigger" : "@tutorial", "contents": "@tutorial ${1:[link]}"}, 73 | { "trigger" : "@type", "contents": "@type {${1:[type]}}"}, 74 | { "trigger" : "@typedef", "contents": "@typedef {${1:[type]}}"}, 75 | { "trigger" : "@uses", "contents": "@uses ${1:[object]} ${2:[description]}"}, 76 | { "trigger" : "@var", "contents": "@var {${1:[type]}} ${2:[description]}"}, 77 | { "trigger" : "@version", "contents": "@version ${1:[version]}"}, 78 | { "trigger" : "@writeOnce", "contents": ""}, 79 | { "trigger" : "{@link}", "contents": "{@link ${1:[symbol]}}"} 80 | ] 81 | } 82 | -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | # DocBlockr Extended Changelog 2 | 3 | - **v2.11.7**, *3 Nov 2013* 4 | - Added support for triple `///`, `//!` and `/*!` style comments, thanks to [Jordi Boggiano](https://github.com/seldaek). 5 | - Added basic **Rust** support, again thanks to Jordi Boggiano. 6 | - Added an option to use short names for bools and ints (`jsdocs_short_primitives`), thanks to [Mat Gadd](https://github.com/drarok). 7 | - Fixed a bug with per-section indenting, again thanks to Mat Gadd. 8 | - Improved handling of Java return type detection, thanks to [Ben Linskey](https://github.com/blinskey) 9 | - **v2.11.6**, *14 Aug 2013* 10 | - Predefined `@author` tags do not get parsed for column spacing 11 | - Handles the case when an arguments list contains a comma, for example, within a default value 12 | - A new keybinding for Windows to re-parse a doc block (Alt+W) 13 | - Fixes a regression that some function names were not being parsed correctly 14 | - **v2.11.5**, *11 Aug 2013* 15 | - Fix for last deploy which accidentally changed the default `var` tag to "property". Default is "type" once again. 16 | - **v2.11.4**, *10 Aug 2013* 17 | - The tag used on `var` declarations can be customised (eg: to "property" for YUIDoc) 18 | - Small fix for function declarations in C/C++ (thanks to [Simon Aittamaa](https://github.com/simait)) 19 | - **v2.11.3**, *18 June 2013* 20 | - Adds support for Groovy (thanks to [Tiago Santos](https://github.com/tmcsantos)) 21 | - README has gifs. So many gifs. 22 | - **v2.11.2**, *12 June 2013* 23 | - Compatibility fixes for ST3, thanks to Marc Neuhaus (@mneuhaus) and Daniel Julius Lasiman (@danieljl). 24 | - **v2.11.1**, *11 May 2013* 25 | - No changes, just removes some debugging code that wasn't cleaned up in the last release (oops). 26 | - **v2.11.0**, *11 May 2013* 27 | - It isn't broken in ST3 any more. (yay) 28 | - New options: 29 | - `jsdocs_simple_mode` for when you don't want dynamic templates 30 | - `jsdocs_lower_case_primitives` for YUIDoc which requires lower case for primitive data types 31 | - `jsdocs_extra_tags_go_after` to put custom text at the end of the docblock 32 | - Better handling of IIFEs 33 | - Hotkey for reparsing a block changed to alt+shift+tab to avoid OS-level conflicts 34 | - Adding a new line at the start of the docblock is handled properly 35 | - C/C++: arguments containing square brackets are handled properly 36 | - **v2.10.1**, *19 April 2013* 37 | - Adds variable substitution in `jsdocs_extra_tags` 38 | - Fixes indentation bug in `jsdocs_extra_tags` 39 | - Fixes bug when adding a new line after a docblock which contains text afterwards 40 | - Fixes link to Pledgie (thanks @Krinkle) 41 | - **v2.10.0**, *21 February 2013* 42 | - Adds Sublime Text 3 support (thanks to @lxe and @rmarscher) 43 | - YUI-style `@method` tags can be automatically added with the `jsdocs_autoadd_method_tag` setting (thanks to @maheshjag) 44 | - Variables starting with `$` are not wiped out when reparsing a doc block (thanks @ryrun) 45 | - **v2.9.3**, *12 December 2012* 46 | - Fixed bug which stopped regular comments from closing automatically 47 | - **v2.9.2**, *11 December 2012* 48 | - This one goes out to [Thanasis Polychronakis](https://github.com/thanpolas). 49 | - Structure of the modules greatly improved 50 | - Fixes bug with matching languages with hyphens in the name 51 | - Adds support for CUDA-C++ 52 | - **v2.9.1**, *31 October 2012* 53 | - Thanks to [wronex](https://github.com/wronex), Alt+Q will reformat the entire DocBlock, with customisable indentation. 54 | - Thanks to [Pavel Voronin](https://github.com/pavel-voronin), spaces around arguments are handled properly. 55 | - **C/C++**: Array arguments are accepted 56 | - **C/C++**: An argument list containing only `void` doesn't output any `@param` tags 57 | - **PHP**: Arguments with an array as a default value inside multi-line arguments are handled properly 58 | - Ctrl/Cmd + Enter and Ctrl/Cmd + Shift + Enter work inside DocBlocks. 59 | - **v2.9.0**, *1 October 2012* 60 | - Adds ObjectiveC and ObjectiveC++ support, thanks to some help from [Robb Böhnke](https://github.com/robb) 61 | - Very buggy code, support isn't great but it's better than nothing (hopefully). 62 | - Single-line comments inside function definitions are handled 63 | - Notation rules are applied to functions, which means they can define a return type by their name, eg: `strFoo` 64 | - Notation rules can define arbitrary tags, for example: functions with a prefix of "_" should get the `@private` tag. 65 | - Given the above addition, JS functions starting with an underscore are no longer marked as `@private` by default. 66 | - **v2.8.2**, *28 September 2012* 67 | - When a function is defined across many lines, the parser will find the arguments on extra lines. 68 | - **v2.8.1**, *13 September 2012* 69 | - Pressing tab on an empty line will perform a deep indentation instead of moving to the next field 70 | - Functions starting with `_` will get a `@private` tag in Javascript (thanks to [Andrew Hanna](https://github.com/percyhanna)) 71 | - **v2.8.0**, *26 August 2012* 72 | - New feature: Alt+Q to reformat the description field of a docblock to make it fit nicely within your ruler. 73 | - Adds support for C++ (thanks to [Rafał Chłodnicki](https://github.com/rchl)) 74 | - Indenting to the description field works in languages which don't require type information in the docblock. 75 | - **v2.7.4**, *8 August 2012* 76 | - Fix for Actionscript docblocks not working 77 | - **v2.7.3**, *7 August 2012* 78 | - No trailing whitespace added on the spacer lines added when `jsdocs_spacer_between_sections` is on (thanks to [Rafał Chłodnicki](https://github.com/rchl)) 79 | - Fixes a bug with detecting variable names when they have a default value in PHP 80 | - Changes the notation map to not ignore the leading `$` or `_`, meaning that (for example), you could specify that variables starting with `$` are `HTMLElement`s. 81 | - **v2.7.2**, *6 August 2012* 82 | - Small bug fix, thanks to [djuliusl](https://github.com/djuliusl) 83 | - **v2.7.1**, *5 August 2012* 84 | - Adds per-section alignment (can be set using `jsdocs_per_section_indent`) 85 | - Description field for `@return` tag can be disabled using `jsdocs_return_description`. *(Both thanks to [Drarok](https://github.com/Drarok))* 86 | - **v2.7.0**, *5 August 2012* 87 | - Adds support for ASDocs (Actionscript) 88 | - Changes Linux shortcut for reparsing a comment block to Alt+Shift+Tab 89 | - **v2.6.5**, *19 June 2012* 90 | - Bugfix for adding linebreaks when not at the start or end of a line 91 | - **v2.6.4**, *4 June 2012* 92 | - Better support for indentation using tabs 93 | - YUI tags are supported by the autocomplete 94 | - When only whitespace exists on a docblock line, and `trim_automatic_white_space` is set to true, the whitespace is removed. 95 | - Better support for comment blocks opened with `/*` 96 | - **v2.6.3**, *30 April 2012* 97 | - Fixes the join-lines command Ctrl+J for CoffeeScript. 98 | - **v2.6.2**, *22 March 2012* 99 | - PHP `__destruct` functions don't get a return value *(thanks to [Alex Whitman](https://github.com/whitman))*. 100 | - **v2.6.1**, *16 March 2012* 101 | - Fixes bug whereby the return values of functions which are named `set` or `add`, *etc* were not being guessed correctly. 102 | - `@return` tags are now given a description field *(thanks to [Nick Dowdell](https://github.com/mikulad13))*. 103 | - **v2.6.0**, *4 March 2012* 104 | - Added CoffeeScript support 105 | - **v2.5.0**, *11 February 2012* 106 | - Implemented DocBlock reparsing to re-enable tabstop fields. Hotkey is `Ctrl+Alt+Tab`. 107 | - **v2.4.1**, *2 February 2012* 108 | - Fixed bug [#36](https://github.com/spadgos/sublime-jsdocs/issues/36) whereby docblocks were not being properly extended inside of `