vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
asp.lua
(1090B)
1 -- Copyright 2006-2025 Mitchell. See LICENSE.
2 -- ASP LPeg lexer.
3
4 local lexer = lexer
5 local P, S = lpeg.P, lpeg.S
6
7 local html = lexer.load('html')
8 local lex = lexer.new(..., {inherit = html}) -- proxy for HTML
9
10 -- Embedded VB.
11 local vb = lexer.load('vb')
12 local vb_start_rule = lex:tag(lexer.PREPROCESSOR, '<%' * P('=')^-1)
13 local vb_end_rule = lex:tag(lexer.PREPROCESSOR, '%>')
14 lex:embed(vb, vb_start_rule, vb_end_rule)
15
16 -- Embedded VBScript.
17 local vbs = lexer.load('vb', 'vbscript')
18 local script_element = lexer.word_match('script', true)
19 local vbs_start_rule = #('<' * script_element * (P(function(input, index)
20 if input:find('^%s+language%s*=%s*(["\'])vbscript%1', index) or
21 input:find('^%s+type%s*=%s*(["\'])text/vbscript%1', index) then return true end
22 end) + '>')) * html.embed_start_tag -- <script language="vbscript">
23 local vbs_end_rule = #('</' * script_element * '>') * html.embed_end_tag -- </script>
24 lex:embed(vbs, vbs_start_rule, vbs_end_rule)
25
26 -- Fold points.
27 lex:add_fold_point(lexer.PREPROCESSOR, '<%', '%>')
28
29 lexer.property['scintillua.comment'] = '<!--|-->'
30
31 return lex