@@ -16,6 +16,13 @@ import Ide.Plugin.Cabal.Completion.Completer.Types (Completer)
16
16
import Ide.Plugin.Cabal.Completion.Types
17
17
-- import Ide.Plugin.Cabal.LicenseSuggest (licenseNames)
18
18
19
+ -- | Ad-hoc data type for modelling the available top-level stanzas.
20
+ -- Not intended right now for anything else but to avoid string
21
+ -- comparisons in 'stanzaKeywordMap' and 'libExecTestBenchCommons'.
22
+ data TopLevelStanza
23
+ = Package
24
+ | ProgramOptions
25
+
19
26
-- ----------------------------------------------------------------
20
27
-- Completion Data
21
28
-- ----------------------------------------------------------------
@@ -44,27 +51,27 @@ cabalProjectKeywords =
44
51
(" optional-packages:" , noopCompleter),
45
52
(" extra-packages:" , noopCompleter),
46
53
-- projectConfigBuildOnlyFieldGrammar
47
- (" verbose:" , constantCompleter [" 0" , " 1" , " 2" , " 3" ]), -- not sure if this works/makes sense?
54
+ (" verbose:" , constantCompleter [" 0" , " 1" , " 2" , " 3" ]),
48
55
(" build-summary:" , noopCompleter),
49
56
(" build-log:" , noopCompleter),
50
57
(" remote-build-reporting:" , noopCompleter),
51
58
(" report-planning-failure:" , noopCompleter),
52
59
(" symlink-bindir:" , noopCompleter),
53
60
(" jobs:" , noopCompleter),
54
61
(" semaphore:" , noopCompleter),
55
- (" keep-going:" , noopCompleter ),
62
+ (" keep-going:" , constantCompleter [ " False " , " True " ] ),
56
63
(" offline:" , noopCompleter),
57
- (" haddock-keep-temp-files:" , noopCompleter ),
58
- (" http-transport:" , noopCompleter ),
59
- (" ignore-expiry:" , noopCompleter ),
64
+ (" haddock-keep-temp-files:" , constantCompleter [ " False " , " True " ] ),
65
+ (" http-transport:" , constantCompleter [ " curl " , " wget " , " powershell " , " plain-http " ] ),
66
+ (" ignore-expiry:" , constantCompleter [ " False " , " True " ] ),
60
67
(" remote-repo-cache:" , noopCompleter),
61
68
(" logs-dir:" , noopCompleter),
62
69
-- projectConfigSharedFieldGrammar
63
70
(" builddir:" , noopCompleter),
64
71
(" project-dir:" , noopCompleter),
65
72
(" project-file:" , noopCompleter),
66
73
(" ignore-project:" , noopCompleter),
67
- (" compiler:" , noopCompleter ),
74
+ (" compiler:" , constantCompleter [ " ghc " , " ghcjs " , " jhc " , " lhc " , " uhc " , " haskell-suite " ] ),
68
75
(" with-compiler:" , noopCompleter),
69
76
(" with-hc-pkg:" , noopCompleter),
70
77
(" doc-index-file:" , noopCompleter),
@@ -75,73 +82,76 @@ cabalProjectKeywords =
75
82
(" constraints:" , noopCompleter),
76
83
(" preferences:" , noopCompleter),
77
84
(" cabal-lib-version:" , noopCompleter),
78
- (" solver:" , noopCompleter ),
85
+ (" solver:" , constantCompleter [ " modular " ] ),
79
86
(" allow-older:" , noopCompleter),
80
87
(" allow-newer:" , noopCompleter),
81
- (" write-ghc-environment-files:" , noopCompleter ),
88
+ (" write-ghc-environment-files:" , constantCompleter [ " never " , " always " , " ghc8.4.4+ " ] ),
82
89
(" max-backjumps:" , noopCompleter),
83
- (" reorder-goals:" , noopCompleter ),
84
- (" count-conflicts:" , noopCompleter ),
85
- (" fine-grained-conflicts:" , noopCompleter ),
86
- (" minimize-conflict-set:" , noopCompleter ),
87
- (" strong-flags:" , noopCompleter ),
88
- (" allow-boot-library-installs:" , noopCompleter ),
90
+ (" reorder-goals:" , constantCompleter [ " False " , " True " ] ),
91
+ (" count-conflicts:" , constantCompleter [ " True " , " False " ] ),
92
+ (" fine-grained-conflicts:" , constantCompleter [ " True " , " False " ] ),
93
+ (" minimize-conflict-set:" , constantCompleter [ " False " , " True " ] ),
94
+ (" strong-flags:" , constantCompleter [ " False " , " True " ] ),
95
+ (" allow-boot-library-installs:" , constantCompleter [ " False " , " True " ] ),
89
96
(" reject-unconstrained-dependencies:" , noopCompleter),
90
97
(" per-component:" , noopCompleter),
91
98
(" independent-goals:" , noopCompleter),
92
99
(" prefer-oldest:" , noopCompleter),
93
100
(" extra-prog-path-shared-only:" , noopCompleter),
94
- (" multi-repl:" , noopCompleter)
101
+ (" multi-repl:" , noopCompleter),
102
+ -- extras
103
+ (" benchmarks:" , constantCompleter [" False" , " True" ])
104
+
95
105
]
96
106
97
107
packageFields :: Map KeyWordName Completer
98
108
packageFields =
99
109
Map. fromList
100
110
[ -- packageConfigFieldGrammar
101
- (" haddock-all:" , noopCompleter ),
111
+ (" haddock-all:" , constantCompleter [ " False " , " True " ] ),
102
112
(" extra-prog-path:" , noopCompleter),
103
113
(" flags:" , noopCompleter),
104
- (" library-vanilla:" , noopCompleter ),
105
- (" shared:" , noopCompleter ),
106
- (" static:" , noopCompleter ),
107
- (" exectable-dynamic:" , noopCompleter ),
108
- (" executable-static:" , noopCompleter ),
109
- (" profiling:" , noopCompleter ),
110
- (" library-profiling:" , noopCompleter ),
114
+ (" library-vanilla:" , constantCompleter [ " True " , " False " ] ),
115
+ (" shared:" , constantCompleter [ " False " , " True " ] ),
116
+ (" static:" , constantCompleter [ " False " , " True " ] ),
117
+ (" exectable-dynamic:" , constantCompleter [ " False " , " True " ] ),
118
+ (" executable-static:" , constantCompleter [ " False " , " True " ] ),
119
+ (" profiling:" , constantCompleter [ " False " , " True " ] ),
120
+ (" library-profiling:" , constantCompleter [ " False " , " True " ] ),
111
121
(" profiling-shared:" , noopCompleter),
112
- (" exectable-profiling:" , noopCompleter ),
113
- (" profiling-detail:" , noopCompleter ),
114
- (" library-profiling-detail:" , noopCompleter ),
122
+ (" exectable-profiling:" , constantCompleter [ " False " , " True " ] ),
123
+ (" profiling-detail:" , constantCompleter [ " default " , " none " , " exported-functions " , " toplevel-functions " , " all-functions " ] ),
124
+ (" library-profiling-detail:" , constantCompleter [ " default " , " none " , " exported-functions " , " toplevel-functions " , " all-functions " ] ),
115
125
(" configure-options:" , noopCompleter),
116
- (" optimization:" , noopCompleter ),
126
+ (" optimization:" , constantCompleter [ " 0 " , " 1 " , " 2 " , " True " , " False " ] ),
117
127
(" program-prefix:" , noopCompleter),
118
128
(" program-suffix:" , noopCompleter),
119
129
(" extra-lib-dirs:" , noopCompleter),
120
130
(" extra-lib-dirs-static:" , noopCompleter),
121
131
(" extra-framework-dirs:" , noopCompleter),
122
132
(" extra-include-dirs:" , noopCompleter),
123
- (" library-for-ghci:" , noopCompleter ),
124
- (" split-sections:" , noopCompleter ),
125
- (" split-objs:" , noopCompleter ),
126
- (" executable-stripping:" , noopCompleter ),
127
- (" library-stripping:" , noopCompleter ),
128
- (" tests:" , noopCompleter ),
129
- (" benchmarks:" , noopCompleter ),
130
- (" relocatable:" , noopCompleter ),
133
+ (" library-for-ghci:" , constantCompleter [ " True " , " False " ] ),
134
+ (" split-sections:" , constantCompleter [ " False " , " True " ] ),
135
+ (" split-objs:" , constantCompleter [ " False " , " True " ] ),
136
+ (" executable-stripping:" , constantCompleter [ " True " , " False " ] ),
137
+ (" library-stripping:" , constantCompleter [ " False " , " True " ] ),
138
+ (" tests:" , constantCompleter [ " False " , " True " ] ),
139
+ (" benchmarks:" , constantCompleter [ " False " , " True " ] ),
140
+ (" relocatable:" , constantCompleter [ " False " , " True " ] ),
131
141
(" debug-info:" , noopCompleter),
132
142
(" build-info:" , noopCompleter),
133
- (" run-tests:" , noopCompleter ),
134
- (" documentation:" , noopCompleter ),
135
- (" haddock-hoogle:" , noopCompleter ),
136
- (" haddock-html:" , noopCompleter ),
143
+ (" run-tests:" , constantCompleter [ " False " , " True " ] ),
144
+ (" documentation:" , constantCompleter [ " False " , " True " ] ),
145
+ (" haddock-hoogle:" , constantCompleter [ " False " , " True " ] ),
146
+ (" haddock-html:" , constantCompleter [ " True " , " False " ] ),
137
147
(" haddock-html-location:" , noopCompleter),
138
148
(" haddock-foreign-libraries:" , noopCompleter),
139
- (" haddock-executables:" , noopCompleter ),
140
- (" haddock-tests:" , noopCompleter ),
141
- (" haddock-benchmarks:" , noopCompleter ),
142
- (" haddock-internal:" , noopCompleter ),
149
+ (" haddock-executables:" , constantCompleter [ " False " , " True " ] ),
150
+ (" haddock-tests:" , constantCompleter [ " False " , " True " ] ),
151
+ (" haddock-benchmarks:" , constantCompleter [ " False " , " True " ] ),
152
+ (" haddock-internal:" , constantCompleter [ " False " , " True " ] ),
143
153
(" haddock-css:" , noopCompleter),
144
- (" haddock-hyperlink-source:" , noopCompleter ),
154
+ (" haddock-hyperlink-source:" , constantCompleter [ " False " , " True " ] ),
145
155
(" haddock-quickjump:" , noopCompleter),
146
156
(" haddock-hscolour-css:" , noopCompleter),
147
157
(" haddock-contents-location:" , noopCompleter),
@@ -160,13 +170,42 @@ packageFields =
160
170
(" test-options:" , noopCompleter),
161
171
(" benchmark-options:" , noopCompleter),
162
172
-- packageConfigCoverageGrammar
163
- (" coverage:" , noopCompleter)
173
+ (" coverage:" , constantCompleter [" False" , " True" ]),
174
+ -- other
175
+ (" ghc-options:" , noopCompleter)
176
+ ]
177
+
178
+ -- just for testing right now, to be filled in later
179
+ programOptionsFields :: Map KeyWordName Completer
180
+ programOptionsFields = Map. fromList
181
+ [ (" ghc-options:" , noopCompleter)
182
+ ]
183
+
184
+ sourceRepoFields :: Map KeyWordName Completer
185
+ sourceRepoFields = Map. fromList
186
+ [ (" type:" , constantCompleter
187
+ [ " darcs" ,
188
+ " git" ,
189
+ " svn" ,
190
+ " cvs" ,
191
+ " mercurial" ,
192
+ " hg" ,
193
+ " bazaar" ,
194
+ " bzr" ,
195
+ " arch" ,
196
+ " monotone"
197
+ ]), -- just used the one from cabal
198
+ (" location:" , noopCompleter),
199
+ (" tag:" , noopCompleter),
200
+ (" subdir:" , noopCompleter)
164
201
]
165
202
166
203
-- | Map, containing all stanzas in a cabal file as keys,
167
204
-- and lists of their possible nested keywords as values.
168
205
stanzaKeywordMap :: Map StanzaType (Map KeyWordName Completer )
169
206
stanzaKeywordMap =
170
207
Map. fromList
171
- [ (" package" , packageFields)
208
+ [ (" package" , packageFields),
209
+ (" program-options" , programOptionsFields),
210
+ (" source-repository-package" , sourceRepoFields)
172
211
]
0 commit comments