annotate runtime/syntax/papp.vim @ 33674:021e5bb88513 v9.0.2074

patch 9.0.2074: Completion menu may be wrong Commit: https://github.com/vim/vim/commit/daef8c74375141974d61b85199b383017644978c Author: Christian Brabandt <cb@256bit.org> Date: Fri Oct 27 19:16:26 2023 +0200 patch 9.0.2074: Completion menu may be wrong Problem: Completion menu may be wrong Solution: Check for the original direction of the completion menu, add more tests, make it work with 'noselect' completion: move in right direction when filling completion_info() When moving through the insert completion menu and switching directions, we need to make sure we start at the correct position in the list and move correctly forward/backwards through it, so that we do not skip entries and the selected item points to the correct entry in the list of completion entries generated by the completion_info() function. The general case is this: 1) CTRL-X CTRL-N, we will traverse the list starting from compl_first_match and then go forwards (using the cp->next pointer) through the list (skipping the very first entry, which has the CP_ORIGINAL_TEXT flag set (since that is the empty/non-selected entry 2) CTRL-X CTRL-P, we will traverse the list starting from compl_first_match (which now points to the last entry). The previous entry will have the CP_ORIGINAL_TEXT flag set, so we need to start traversing the list from the second prev pointer. There are in fact 2 special cases after starting the completion menu with CTRL-X: 3) CTRL-N and then going backwards by pressing CTRL-P again. compl_first_match will point to the same entry as in step 1 above, but since compl_dir_foward() has been switched by pressing CTRL-P to backwards we need to pretend to be in still in case 1 and still traverse the list in forward direction using the cp_next pointer 4) CTRL-P and then going forwards by pressing CTRL-N again. compl_first_match will point to the same entry as in step 2 above, but since compl_dir_foward() has been switched by pressing CTRL-N to forwards we need to pretend to be in still in case 2 and still traverse the list in backward direction using the cp_prev pointer For the 'noselect' case however, this is slightly different again. When going backwards, we only need to go one cp_prev pointer back. And resting of the direction works again slightly different. So we need to take the noselect option into account when deciding in which direction to iterate through the list of matches. related: #13402 related: #12971 closes: #13408 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 27 Oct 2023 19:30:05 +0200
parents 43efa4f5a8ea
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " Vim syntax file for the "papp" file format (_p_erl _app_lication)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 " Language: papp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 " Maintainer: Marc Lehmann <pcg@goof.com>
2034
7bc41231fbc7 Update runtime files.
Bram Moolenaar <bram@zimbu.org>
parents: 7
diff changeset
5 " Last Change: 2009 Nov 11
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 " Filenames: *.papp *.pxml *.pxsl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 " URL: http://papp.plan9.de/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 " You can set the "papp_include_html" variable so that html will be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 " rendered as such inside phtml sections (in case you actually put html
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 " there - papp does not require that). Also, rendering html tends to keep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 " the clutter high on the screen - mixing three languages is difficult
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 " enough(!). PS: it is also slow.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 " pod is, btw, allowed everywhere, which is actually wrong :(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
17 " quit when a syntax file was already loaded
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
18 if exists("b:current_syntax")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 " source is basically xml, with included html (this is common) and perl bits
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
23 runtime! syntax/xml.vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 unlet b:current_syntax
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 if exists("papp_include_html")
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
27 syn include @PAppHtml syntax/html.vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 unlet b:current_syntax
2034
7bc41231fbc7 Update runtime files.
Bram Moolenaar <bram@zimbu.org>
parents: 7
diff changeset
29 syntax spell default " added by Bram
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
32 syn include @PAppPerl syntax/perl.vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 2034
diff changeset
34 syn cluster xmlFoldCluster add=papp_perl,papp_xperl,papp_phtml,papp_pxml,papp_perlPOD
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 " preprocessor commands
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 syn region papp_prep matchgroup=papp_prep start="^#\s*\(if\|elsif\)" end="$" keepend contains=@perlExpr contained
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 syn match papp_prep /^#\s*\(else\|endif\|??\).*$/ contained
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 " translation entries
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 syn region papp_gettext start=/__"/ end=/"/ contained contains=@papp_perlInterpDQ
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 syn cluster PAppHtml add=papp_gettext,papp_prep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 " add special, paired xperl, perl and phtml tags
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 syn region papp_perl matchgroup=xmlTag start="<perl>" end="</perl>" contains=papp_CDATAp,@PAppPerl keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 syn region papp_xperl matchgroup=xmlTag start="<xperl>" end="</xperl>" contains=papp_CDATAp,@PAppPerl keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 syn region papp_phtml matchgroup=xmlTag start="<phtml>" end="</phtml>" contains=papp_CDATAh,papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 syn region papp_pxml matchgroup=xmlTag start="<pxml>" end="</pxml>" contains=papp_CDATAx,papp_ph_perl,papp_ph_xml,papp_ph_xint keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 syn region papp_perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 " cdata sections
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 syn region papp_CDATAp matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=@PAppPerl contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 syn region papp_CDATAh matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 syn region papp_CDATAx matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=papp_ph_perl,papp_ph_xml,papp_ph_xint contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 syn region papp_ph_perl matchgroup=Delimiter start="<[:?]" end="[:?]>"me=e-2 nextgroup=papp_ph_html contains=@PAppPerl contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 syn region papp_ph_html matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@PAppHtml contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 syn region papp_ph_hint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ,@PAppHtml contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 syn region papp_ph_xml matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains= contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 syn region papp_ph_xint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ contained keepend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 " synchronization is horrors!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 syn sync clear
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 syn sync match pappSync grouphere papp_CDATAh "</\(perl\|xperl\|phtml\|macro\|module\)>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 syn sync match pappSync grouphere papp_CDATAh "^# *\(if\|elsif\|else\|endif\)"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 syn sync match pappSync grouphere papp_CDATAh "</\(tr\|td\|table\|hr\|h1\|h2\|h3\)>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 syn sync match pappSync grouphere NONE "</\=\(module\|state\|macro\)>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 syn sync maxlines=300
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 syn sync minlines=5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 " The default highlighting.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 hi def link papp_prep preCondit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 hi def link papp_gettext String
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 let b:current_syntax = "papp"