Skip to content

Commit 71ada50

Browse files
committed
Fixes/cleanup of built-in Tagbar and ctags config
- Regexes accommodate `override` on methods, vals, and vars. - Fix kind label mismatches with our provided Tagbar config. Fixes some kinds like case classes and values/variables simply not showing up in Tagbar even though the tags generation supports them. Changed some of the labels to what seem to me like more logical choices. - Drop the `kind2scope`/`scope2kind` Tagbar settings. They're only really meaningful if the ctags generation supports scopes, which an exuberant ctags langdef for Scala does not. These can be added back with appropriate values for a tool that supports scopes, like sctags. Removing them for now results in better grouping in Tagbar. Hat tip to @luben on derekwyatt#104 for prompting me to take notice of how wonky the configs taken from the Tagbar wiki were :-)
1 parent 70df206 commit 71ada50

File tree

2 files changed

+19
-35
lines changed

2 files changed

+19
-35
lines changed

ctags/scala.ctags

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
--langdef=scala
22
--langmap=scala:.scala
33

4-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*(private[^ ]*|protected)?[ \t ]*class[ \t ]+([a-zA-Z0-9_]+)/\4/c,classes/
5-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*(private[^ ]*|protected)?[ \t ]*object[ \t ]+([a-zA-Z0-9_]+)/\4/c,objects/
6-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*(private[^ ]*|protected)?[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*case class[ \t ]+([a-zA-Z0-9_]+)/\6/c,case classes/
7-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*(private[^ ]*|protected)?[ \t ]*case object[ \t ]+([a-zA-Z0-9_]+)/\4/c,case objects/
8-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*(private[^ ]*|protected)?[ \t ]*trait[ \t ]+([a-zA-Z0-9_]+)/\4/t,traits/
9-
--regex-scala=/^[ \t ]*type[ \t ]+([a-zA-Z0-9_]+)/\1/T,types/
10-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy|private[^ ]*(\[[a-z]*\])*|protected)[ \t ]*)*def[ \t ]+([a-zA-Z0-9_]+)/\4/m,methods/
11-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy|private[^ ]*|protected)[ \t ]*)*val[ \t ]+([a-zA-Z0-9_]+)/\3/l,constants/
12-
--regex-scala=/^[ \t ]*((abstract|final|sealed|implicit|lazy|private[^ ]*|protected)[ \t ]*)*var[ \t ]+([a-zA-Z0-9_]+)/\3/l,variables/
13-
--regex-scala=/^[ \t ]*package[ \t ]+([a-zA-Z0-9_.]+)/\1/p,packages/
4+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\4/c,classes/
5+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*object[ \t]+([a-zA-Z0-9_]+)/\4/o,objects/
6+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*case class[ \t ]+([a-zA-Z0-9_]+)/\6/C,case classes/
7+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*case object[ \t]+([a-zA-Z0-9_]+)/\4/O,case objects/
8+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*trait[ \t]+([a-zA-Z0-9_]+)/\4/t,traits/
9+
--regex-scala=/^[ \t]*type[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
10+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*(\[[a-z]*\])*|protected)[ \t]*)*def[ \t]+([a-zA-Z0-9_]+)/\4/m,methods/
11+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*|protected)[ \t]*)*val[ \t]+([a-zA-Z0-9_]+)/\3/V,values/
12+
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*|protected)[ \t]*)*var[ \t]+([a-zA-Z0-9_]+)/\3/v,variables/
13+
--regex-scala=/^[ \t]*package[ \t]+([a-zA-Z0-9_.]+)/\1/p,packages/

ftplugin/scala/tagbar.vim

+9-25
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,19 @@ endif
1010

1111
let g:tagbar_type_scala = {
1212
\ 'ctagstype' : 'scala',
13+
\ 'sro' : '.',
1314
\ 'kinds' : [
14-
\ 'p:packages:1',
15-
\ 'V:values',
16-
\ 'v:variables',
17-
\ 'T:types',
15+
\ 'p:packages',
16+
\ 'T:types:1',
1817
\ 't:traits',
1918
\ 'o:objects',
20-
\ 'a:aclasses',
19+
\ 'O:case objects',
2120
\ 'c:classes',
22-
\ 'r:cclasses',
23-
\ 'm:methods'
24-
\ ],
25-
\ 'sro' : '.',
26-
\ 'kind2scope' : {
27-
\ 'T' : 'type',
28-
\ 't' : 'trait',
29-
\ 'o' : 'object',
30-
\ 'a' : 'abstract class',
31-
\ 'c' : 'class',
32-
\ 'r' : 'case class'
33-
\ },
34-
\ 'scope2kind' : {
35-
\ 'type' : 'T',
36-
\ 'trait' : 't',
37-
\ 'object' : 'o',
38-
\ 'abstract class' : 'a',
39-
\ 'class' : 'c',
40-
\ 'case class' : 'r'
41-
\ }
21+
\ 'C:case classes',
22+
\ 'm:methods',
23+
\ 'V:values:1',
24+
\ 'v:variables:1'
25+
\ ]
4226
\ }
4327

4428
" In case you've updated/customized your ~/.ctags and prefer to use it.

0 commit comments

Comments
 (0)