Skip to content

Commit 24869e9

Browse files
authored
Merge pull request #667 from LPCIC/name-commands
Display elpi commands/tactics in the outline
2 parents 5827121 + 4023435 commit 24869e9

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

src/coq_elpi_vernacular_syntax.mlg

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,42 @@ END
106106

107107
(* Syntax **************************************************************** *)
108108

109-
VERNAC COMMAND EXTEND Elpi CLASSIFIED AS SIDEFF
109+
{
110+
let classify_named_vernac (_,p) = Vernacextend.VtSideff([Names.Id.of_string_soft @@ String.concat "." p],VtNow)
111+
}
112+
113+
VERNAC COMMAND EXTEND ElpiNamed
114+
| #[ atts = any_attribute ] [ "Elpi" "Program" qualified_name(p) elpi_string(s) ] => { classify_named_vernac p } SYNTERP AS atts
115+
{
116+
let atts = validate_attributes raw_args_attributes atts in
117+
EV.Synterp.create_program ~atts ~init:s p;
118+
atts
119+
} -> {
120+
EV.Interp.create_program ~atts ~init:s p
121+
}
122+
| #[ atts = any_attribute ] [ "Elpi" "Command" qualified_name(p) ] => { classify_named_vernac p } SYNTERP AS atts
123+
{
124+
let atts = validate_attributes raw_args_attributes atts in
125+
EV.Synterp.create_command ~atts p;
126+
atts
127+
} -> {
128+
EV.Interp.create_command ~atts p }
129+
| #[ atts = any_attribute ] [ "Elpi" "Tactic" qualified_name(p) ] => { classify_named_vernac p } SYNTERP AS _
130+
{
131+
let () = ignore_unknown_attributes atts in
132+
EV.Synterp.create_tactic p
133+
} -> {
134+
EV.Interp.create_tactic p }
135+
| #[ atts = any_attribute ] [ "Elpi" "Db" qualified_name(d) elpi_string(s) ] => { classify_named_vernac d } SYNTERP AS atts
136+
{
137+
let atts = validate_attributes synterp_attribute atts in
138+
EV.Synterp.create_db ~atts d ~init:s;
139+
atts
140+
} -> {
141+
EV.Interp.create_db ~atts d ~init:s }
142+
END
143+
144+
VERNAC COMMAND EXTEND ElpiUnnamed CLASSIFIED AS SIDEFF
110145
| #[ atts = any_attribute ] [ "Elpi" "Accumulate" "File" ne_ident_list(ids) ] SYNTERP AS atts {
111146
let atts = validate_attributes skip_and_synterp_attributes atts in
112147
EV.Synterp.accumulate_extra_deps ~atts ids;
@@ -262,35 +297,6 @@ VERNAC COMMAND EXTEND Elpi CLASSIFIED AS SIDEFF
262297
} -> {
263298
EV.Interp.print ~atts (snd p) s }
264299

265-
| #[ atts = any_attribute ] [ "Elpi" "Program" qualified_name(p) elpi_string(s) ] SYNTERP AS atts
266-
{
267-
let atts = validate_attributes raw_args_attributes atts in
268-
EV.Synterp.create_program ~atts ~init:s p;
269-
atts
270-
} -> {
271-
EV.Interp.create_program ~atts ~init:s p
272-
}
273-
| #[ atts = any_attribute ] [ "Elpi" "Command" qualified_name(p) ] SYNTERP AS atts
274-
{
275-
let atts = validate_attributes raw_args_attributes atts in
276-
EV.Synterp.create_command ~atts p;
277-
atts
278-
} -> {
279-
EV.Interp.create_command ~atts p }
280-
| #[ atts = any_attribute ] [ "Elpi" "Tactic" qualified_name(p) ] SYNTERP AS _
281-
{
282-
let () = ignore_unknown_attributes atts in
283-
EV.Synterp.create_tactic p
284-
} -> {
285-
EV.Interp.create_tactic p }
286-
| #[ atts = any_attribute ] [ "Elpi" "Db" qualified_name(d) elpi_string(s) ] SYNTERP AS atts
287-
{
288-
let atts = validate_attributes synterp_attribute atts in
289-
EV.Synterp.create_db ~atts d ~init:s;
290-
atts
291-
} -> {
292-
EV.Interp.create_db ~atts d ~init:s }
293-
294300
| #[ atts = any_attribute ] [ "Elpi" "Typecheck" ] SYNTERP AS _
295301
{
296302
let () = ignore_unknown_attributes atts in

0 commit comments

Comments
 (0)