annotate runtime/syntax/rtf.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 5b7ea82bc18f
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
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 " Language: Rich Text Format
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 " "*.rtf" files
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 " The Rich Text Format (RTF) Specification is a method of encoding formatted
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 " text and graphics for easy transfer between applications.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 " .hlp (windows help files) use compiled rtf files
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 " rtf documentation at http://night.primate.wisc.edu/software/RTF/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 "
22723
5b7ea82bc18f Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 10051
diff changeset
10 " Maintainer: Dominique Stéphan (dominique@mggen.com)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 " URL: http://www.mggen.com/vim/syntax/rtf.zip
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 " Last change: 2001 Mai 02
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 " TODO: render underline, italic, bold
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
16 " quit when a syntax file was already loaded
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
17 if exists("b:current_syntax")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 " case on (all controls must be lower case)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 syn case match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 " Control Words
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 syn match rtfControlWord "\\[a-z]\+[\-]\=[0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 " New Control Words (not in the 1987 specifications)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 syn match rtfNewControlWord "\\\*\\[a-z]\+[\-]\=[0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 " Control Symbol : any \ plus a non alpha symbol, *, \, { and } and '
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 syn match rtfControlSymbol "\\[^a-zA-Z\*\{\}\\']"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 " { } and \ are special characters, to use them
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 " we add a backslash \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 syn match rtfCharacter "\\\\"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 syn match rtfCharacter "\\{"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 syn match rtfCharacter "\\}"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 " Escaped characters (for 8 bytes characters upper than 127)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 syn match rtfCharacter "\\'[A-Za-z0-9][A-Za-z0-9]"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 " Unicode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 syn match rtfUnicodeCharacter "\\u[0-9][0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 " Color values, we will put this value in Red, Green or Blue
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 syn match rtfRed "\\red[0-9][0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 syn match rtfGreen "\\green[0-9][0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 syn match rtfBlue "\\blue[0-9][0-9]*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 " Some stuff for help files
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 syn match rtfFootNote "[#$K+]{\\footnote.*}" contains=rtfControlWord,rtfNewControlWord
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 " Define the default highlighting.
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
52 " Only when an item doesn't have highlighting yet
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
10051
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
55 hi def link rtfControlWord Statement
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
56 hi def link rtfNewControlWord Special
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
57 hi def link rtfControlSymbol Constant
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
58 hi def link rtfCharacter Character
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
59 hi def link rtfUnicodeCharacter SpecialChar
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
60 hi def link rtfFootNote Comment
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61
10048
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
62 " Define colors for the syntax file
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
63 hi rtfRed term=underline cterm=underline ctermfg=DarkRed gui=underline guifg=DarkRed
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
64 hi rtfGreen term=underline cterm=underline ctermfg=DarkGreen gui=underline guifg=DarkGreen
43efa4f5a8ea commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
65 hi rtfBlue term=underline cterm=underline ctermfg=DarkBlue gui=underline guifg=DarkBlue
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66
10051
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
67 hi def link rtfRed rtfRed
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
68 hi def link rtfGreen rtfGreen
46763b01cd9a commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
69 hi def link rtfBlue rtfBlue
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 let b:current_syntax = "rtf"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 " vim:ts=8