aboutsummaryrefslogtreecommitdiff
path: root/vim/plugin/31-create-scala.vim
diff options
context:
space:
mode:
authorBen Beltran <ben@freshout.us>2012-10-08 11:44:10 -0500
committerBen Beltran <ben@freshout.us>2012-10-08 11:44:10 -0500
commit0d23b6e515a01a5782532351821ebfa11f3d6cf2 (patch)
treeaa395b7e50ccb533d6b48b809016ac06f2d5bc8c /vim/plugin/31-create-scala.vim
parenta91731eac872b7837c2821341db5888702125cef (diff)
Add vim again :)
Diffstat (limited to 'vim/plugin/31-create-scala.vim')
-rw-r--r--vim/plugin/31-create-scala.vim55
1 files changed, 55 insertions, 0 deletions
diff --git a/vim/plugin/31-create-scala.vim b/vim/plugin/31-create-scala.vim
new file mode 100644
index 0000000..e4ecb44
--- /dev/null
+++ b/vim/plugin/31-create-scala.vim
@@ -0,0 +1,55 @@
+" Vim plugin that generates new Scala source file when you type
+" vim nonexistent.scala.
+" Scripts tries to detect package name from the directory path, e. g.
+" .../src/main/scala/com/mycompany/myapp/app.scala gets header
+" package com.mycompany.myapp
+"
+" Author : Stepan Koltsov <yozh@mx1.ru>
+
+function! MakeScalaFile()
+ if exists("b:template_used") && b:template_used
+ return
+ endif
+
+ let b:template_used = 1
+
+ let filename = expand("<afile>:p")
+ let x = substitute(filename, "\.scala$", "", "")
+
+ let p = substitute(x, "/[^/]*$", "", "")
+ let p = substitute(p, "/", ".", "g")
+ let p = substitute(p, ".*\.src$", "@", "") " unnamed package
+ let p = substitute(p, ".*\.src\.", "!", "")
+ let p = substitute(p, "^!main\.scala\.", "!", "") "
+ let p = substitute(p, "^!.*\.ru\.", "!ru.", "")
+ let p = substitute(p, "^!.*\.org\.", "!org.", "")
+ let p = substitute(p, "^!.*\.com\.", "!com.", "")
+
+ " ! marks that we found package name.
+ if match(p, "^!") == 0
+ let p = substitute(p, "^!", "", "")
+ else
+ " Don't know package name.
+ let p = "@"
+ endif
+
+ let class = substitute(x, ".*/", "", "")
+
+ if p != "@"
+ call append("0", "package " . p)
+ endif
+
+ "norm G
+ "call append(".", "class " . class . " {")
+
+ "norm G
+ "call append(".", "} /// end of " . class)
+
+ call append(".", "// vim: set ts=4 sw=4 et:")
+ call append(".", "")
+
+endfunction
+
+au BufNewFile *.scala call MakeScalaFile()
+
+" vim: set ts=4 sw=4 et: