scalacommenter.vim : Functions for documenting Scala-code
script karma |
Rating 8/2,
Downloaded by 2640 |
Comments, bugs, improvements
|
Vim wiki
|
created by |
richard emberson |
|
script type |
utility |
|
description |
Re-written using the Self.vim Object prototype system, hence
justifying a major version number increase
(see: http://www.vim.org/scripts/script.php?script_id=3072).
The self.vim code is embedded in the scalacommenter.vim code
so you don't need to download self.vim.
Inspired by Kalle Bjorklid's JCommenter.
Works on Vim version 7.0 and above
This has two capabilities:
1) Generating a comment template, and
2) Formatting an existing set of comment tags.
Generating ScalaDoc comments for Scala sources.
This is triggered by executing the ScalaCommentWriter() function
1) while the cursor is over something meaningful, or
2) if a (visual) selection exists,
The selected text is parsed and the comment template generated.
The following comments are generated (in the appropriate situations):
1. File comments: user specifies the template, generated when the
cursor is on the first line of the file.
2. Class comments: generated when on top of a class declaration
Tags if applicable: @author, @version, @since, @param, @tparam and @throws
3. Trait comments: generated when on top of a trait declaration
Tags if applicable: @author, @version and @since
4. Object comments: generated when on top of a object declaration
Tags if applicable: @author, @version and @since
5. Inner Class comments: generated when on top of an inner class declaration
Tags if applicable: @param, @tparam and @throws
6. Inner Trait comments: generated when on top of an inner trait declaration
7. Inner Object comments: generated when on top of an inner object declaration
8. Method comments: generated when on top of a method declaration.
Tags if applicable: @param, @tparam, @return and @throws
9. Fields, val and var, comments: generated when on top of a var or val
declaration.
If executed and the class, trait, object or method already has a ScalaDoc
comment, an attempt is made to add/remove parameter and template parameter
tags as needed.
Formatting existing ScalaDoc comments for Scala sources.
This is triggered by executing the ScalaCommentFormatter() function
The user (visual) selection of the comment tag lines to be formatted
and invokes the ScalaCommentFormatter() function.
As an example, the following is selected and formatted:
* @author Tom Jones
* @version 1.3 03/10/50
* @param name This is the name
* @param value the value to associate with the value
* This is a second line. Here is a second second line.
* This is a third line. Here is a third third line.
* @throws java.io.EOFException For no reason
* @author Jane Doe
becomes:
* @author Tom Jones
* @author Jane Doe
* @version 1.3 03/10/50
* @param name This is the name
* @param value the value to associate with the value This
* is a second line. Here is a second second
* line. This is a third line. Here is a third
* third line.
* @throws java.io.EOFException For no reason
Note that tags are re-ordered and grouped based upon Sun's JavaDoc guide.
The start line selected to be formatted must be a comment tag line.
The end line selected to be formated should be a comment tag line
or a line containing additional text for a previous tag line.
Work flow:
Generate comment template,
Fill in template and then
Format the comment's tags.
For more details about what is produced and how to configure the production,
see the start of the script for additional documentation.
Source can be found at: https://github.com/megaannum/scala_commenter
|
|
install details |
Add the scalacommenter.vim to your .vim directory (or whatever).
Here's what I have in my .vimrc:
autocmd FileType scala source $HOME/.vim/scalacommenter.vim
autocmd FileType scala map <M-c> :call ScalaCommentWriter()<CR>
autocmd FileType scala map <M-f> :call ScalaCommentFormatter()<CR>
autocmd FileType scala map cm :call ScalaCommentWriter()<CR>
autocmd FileType scala map cf :call ScalaCommentFormatter()<CR>
autocmd FileType scala let b:scommenter_class_author='Richard Emberson'
autocmd FileType scala let b:scommenter_file_author='Richard Emberson'
autocmd FileType scala let g:scommenter_file_copyright_list = [
\ 'COPYRIGHT',
\ 'Second line of copyright',
\ 'And a third line'
\]
autocmd FileType scala let b:scommenter_extra_line_text_offset = 20
autocmd FileType scala let b:scommenter_user_tags = [
\["pre", 0, 1, 0],
\["post", 0, 1, 0],
\["requires", 1, 1, 0],
\["provides", 0, 1, 0]
\]
The user tags: "pre", "post", "requires" and "provides" appear in
a couple of the base Scala library code - I include them just for
testing the user-defined tags capability.
Note that Alt-c and <M-c> may not work on Unix systems, hence
I map in command mode "cm" to call the ScalaCommentWriter function.
|
|
script versions (upload new version)
Click on the package to download.
scala_commenter.zip |
3.0.3 |
2012-08-24 |
7.0 |
richard emberson |
Changed version number for type to kind delta |
scala_commenter.zip |
3.0.2 |
2012-07-30 |
7.3 |
richard emberson |
Vim 7.3 could not handle construct: call funcReturnDictionary().someFunc() |
scala_commenter.zip |
3.0 |
2012-07-27 |
7.0 |
richard emberson |
Support for autoloading.
Uses latest version of Self library |
scalacommenter.vim |
2.2 |
2010-05-10 |
7.0 |
richard emberson |
Minor correction: could not handle parameters with templates with commas:
def getAtomicVars(atomicMethods: List[XMethodInfo], methods: HashMap[global.Symbol, XMethodInfo], vars: HashMap[global.Symbol, XVarInfo]) : List[XVarInfo] = {
}
|
scalacommenter.vim |
2.1 |
2010-04-24 |
7.0 |
richard emberson |
Very minor: Method recognition failed for the List methods: '::', ':::' and 'reverse_:::'.
|
scalacommenter.vim |
2.0 |
2010-04-22 |
7.0 |
richard emberson |
Refactored comment generation code using Self.vim, the Vim
dictionary-base object prototype system. Unified the code that
generated output for both the writing and re-formatting of
comments.
Throw tags are now sorted in alphabetical order
Unified the comment writing code so that comment formatting,
first comment generation, and subsequent generation all
use the came code.
Text associated with an existing comment tag is no longer lost.
Add b:scommenter_top_level_tparams_only which controls if all
template parameters have @tparam tags generated or only those
at the top-level have tags generated.
Fixed scanning parameters, now scans past qualifiers like 'val',
Supports curried notations func(a: A)(b: B).
'var' or 'private var', etc.
Added b:scommenter_extra_line_text_offset allowing the user to control
the offset of any additional text associated with a tag.
There is now a b:scommenter_user_tags configuration variable allowing
the user to register in their .vimrc file third-party tags.
Added b:scommenter_warning_message_enable which controls the printing
of warning messages (if any)
Added b:scommenter_line_between_user_unknown_and_std_tags which
controls if a single comment line is printed between the
user/unknown tags and the standard tags.
Added b:scommenter_user_unknown_before_std_tags which controls the
order of formatting of the user/unknown tags and the standard tags.
Added b:scommenter_warn_deleted_tags which allows the user to
save the text from tags deleted during re-formatting.
Supports capturing parameter template @specialized information
in comments.
The @deprecated(text) annotation now becomes a ScalaDoc @deprecated
tag (just as the @throws annotation does).
|
scalacommenter.vim |
1.0 |
2010-04-09 |
7.2 |
richard emberson |
Initial upload |
ip used for rating: 3.22.216.30
|