Compare commits

...

132 Commits

Author SHA1 Message Date
Hirohito Higashi
5ef1eec5c5 patch 9.2.0467: multi-line statusline loses highlighting attributes
Problem:  In a multi-line statusline (and 'tabpanel'), %#XX# / %N*
          set on one row do not persist on subsequent rows.
          build_stl_str_hl_local() rebuilds stl_items[] from scratch
          on every line break ("%@" or "\n"), so the highlight is
          reset at each row boundary even though within a row it
          stays until %* (or another %# / %*).
Solution: Carry the last Highlight item's stl_minwid across line
          breaks via a new in/out int* parameter "carry_hl".  At the
          start of each row, pre-insert a Highlight item from the
          carried value so the row begins under the same highlight;
          before returning, update the carried value with the row's
          final Highlight item.  Apply the same carry to the
          tabpanel rendering loop (Hirohito Higashi).

related: #19123
closes:  #20180

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 18:14:01 +00:00
Yasuhiro Matsumoto
3a8b9e09b2 patch 9.2.0466: popup: redraw can use stale blended cells
Problem:  popup: redraw can use stale blended cells
Solution: Save the old popup area and redraw the newly exposed region so
          opacity popups don't show stale blended cells when another
          popup moves or closes. Consolidate redraw helpers so the
          saved-area and exposed-area logic is shared across
          move/hide/close/settext/setoptions. Refactor popup redrawing
          code, add a regressions tests (Yasuhiro Matsumoto).

closes: #20172

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 17:23:12 +00:00
Christian Brabandt
2020e0bade patch 9.2.0465: modeline: foldmarker cannot be set with modelinestrict
Problem:  modeline: foldmarker cannot be set with modelinestrict
          (Lyderic Landry, after v9.2.0350)
Solution: Add foldmarker option to the whitelist

fixes:  #20028
closes: #20174

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 17:00:59 +00:00
J. Paulo Seibt
ec76ac620b patch 9.2.0464: runtime(netrw): bookmarking directory uses current dir
Problem:  runtime(netrw): bookmarking directory uses current dir
Solution: Correctly handle netrw actual directory (J. Paulo Seibt)

fixes:  #10481
closes: #20169

Signed-off-by: J. Paulo Seibt <jpseibt@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 16:55:18 +00:00
Yegappan Lakshmanan
6b8d2262d3 patch 9.2.0463: Not able to use legacy expression evaluation in a vim9script maps
Problem:  Not able to use legacy expression evaluation in a vim9script
          maps
Solution: Explicitly set script version to 1 when the :legacy modifier has been
          used (Yegappan Lakshmanan).

fixe:   #20176
closes: #20177

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 16:41:35 +00:00
K.Takata
3a1ac7ced2 patch 9.2.0462: MS-Windows: workaround for assert error on GUI
Problem:  When Vim is built with debug mode, gvim causes an assertion
          error and stops working when running on Visual Studio
          Debugger.
Solution: Stop calling _set_fmode() if not needed (Ken Takata).

closes: #20181

Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-10 16:34:01 +00:00
Christian Brabandt
4f610f07b7 patch 9.2.0461: Corrupted undofile causes use-after-free
Problem:  The four pointer-resolution loops in u_read_undo() lack
          an i != j guard, so a header whose uh_next.seq equals
          its own uh_seq resolves uh_next.ptr to itself.  On
          buffer close, u_freeheader() sees uhp->uh_next.ptr !=
          NULL and skips updating b_u_oldhead, so u_blockfree()
          dereferences the freed header on the next iteration.
          The same pattern applies to uh_prev, uh_alt_next and
          uh_alt_prev.  A crafted .un~ file in the same directory
          as a text file can trigger the use-after-free and
          subsequent double-free when the buffer is closed.
          (Daniel Cervera)
Solution: Add an i != j guard to each of the four resolution
          loops, matching the guard already present in the
          duplicate-detection loop above.

closes: #20168

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-09 14:41:37 +00:00
zeertzjq
abd74fa122 patch 9.2.0460: did_set_shellpipe_redir() in wrong file
Problem:  did_set_shellpipe_redir() is a callback for a string option,
          but is not in optionstr.c (after 9.2.0458).
Solution: Move it to optionstr.c. Also add missing change from patch
          9.2.0455 (zeertzjq).

related: #20159
related: #20164
closes:  #20170

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-09 14:22:47 +00:00
Christian Brabandt
124f8becec patch 9.2.0459: tests: test_termcodes fails (after v9.2.0456)
Problem:  tests: test_termcodes fails, because it disabled DECRQM, but
          did not adjust the expected values in the test (after v9.2.0456)
Solution: Update the test

related: #20161
closes:  #20173

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-09 14:13:52 +00:00
dependabot[bot]
fbec828c7e CI: Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action) and [actions/labeler](https://github.com/actions/labeler).

Updates `github/codeql-action` from 4.35.2 to 4.35.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.35.2...v4.35.3)

Updates `actions/labeler` from 6 to 6.0.1
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v6...v6.0.1)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/labeler
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

closes: #20171

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-09 13:49:57 +00:00
Christian Brabandt
84ae09dd79 patch 9.2.0458: Crash with invalid shellredir/shellpipe value
Problem:  Crash with invalid shellredir/shellpipe value
          (bfredl)
Solution: Validate the option and allow only a single "%s".

fixes:  #20157
closes: #20159

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:32:21 +00:00
Christian Brabandt
2f00656b34 patch 9.2.0457: Compile warning about unused variable
Problem:  Compile warning about unused variable
          (Tony Mechelynck, after v9.2.0452)
Solution: Initialize the variable

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:22:28 +00:00
Foxe Chen
7644d9d611 patch 9.2.0456: stray p character displayed on some terms
Problem:  stray p character displayed on some terms
Solution: Make sending DECRQM more strict and disable it for a few more
          terminals (Foxe Chen)

fixes:  #20156
fixes:  #20140
closes: #20161

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:14:52 +00:00
zeertzjq
9694ff58fe patch 9.2.0455: 'findfunc' only allows extra info for cmdline completion
Problem:  'findfunc' only allows extra info for cmdline completion, not
          for actually finding files (Maxim Kim, after 9.2.0451).
Solution: Handle returning a list of dicts when actually finding files.
          Also fix crash on NULL string (zeertzjq).

fixes:  #20163
closes: #20164

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:09:48 +00:00
zeertzjq
b207b5a2a3 patch 9.2.0454: tests: no test that "abbr" in customlist completion is shown
Problem:  No test that "abbr" in customlist completion is shown in pum.
Solution: Add some "abbr" fields to the existing test (zeertzjq).

closes: #20165

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:06:08 +00:00
Hirohito Higashi
c895390e58 patch 9.2.0453: vertical separator of statusline blend into active statusline
Problem:  Since v9.2.0349, the vertical separator cell at status line
	  rows is drawn as a space with StatusLine highlight, hiding the
	  user's 'fillchars' "vert" or "stl"/"stlnc" character at that
	  cell (after v9.2.0349)
Solution: Drop the status line blend.  At status line rows the separator
	  cell goes back to using the status fillchar when adjacent
	  status lines are connected, or the vsep character otherwise.
	  (Same as before v9.2.0348)

Keep the VertSplitNC highlight group introduced in v9.2.0349.  The
highlight (VertSplit vs VertSplitNC) is selected based on whether the
current window is adjacent to the separator at the row.

Vertical separators are redrawn on current-window changes and on
:redrawstatus[!] so the VertSplit/VertSplitNC highlight is updated
immediately.

fixes:   #20089
related: #19951
closes:  #20167

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-08 21:03:12 +00:00
Yasuhiro Matsumoto
b9871cef10 patch 9.2.0452: screen.c popup opacity blend logic is duplicated
Problem:  screen_line() has four near-identical blocks computing
          the popup_attr, the combined attr, the blend value and
          the underlying base attr in sequence when handling popups
          with opacity.  The duplication makes the function long
          and hard to follow, and changes have to be applied to all
          four sites.
Solution: Extract the shared computation into popup_blend_with_base()
          and popup_base_attr_or() helpers, and cache per-popup
          attrs once via popup_opacity_T.  No behavior change
          (Yasuhiro Matsumoto).

closes: #20154

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-07 19:40:16 +00:00
zeertzjq
58124789aa patch 9.2.0451: 'findfunc' can't return extra info for cmdline completion
Problem:  'findfunc' can't return extra info for cmdline completion
          (Maxim Kim).
Solution: Handle 'findfunc' return value in cmdline completion like that
          of "customlist" functions (zeertzjq).

fixes:  #20155
closes: #20158

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-07 19:32:23 +00:00
Christian Brabandt
9299332917 patch 9.2.0450: [security]: heap buffer overflow in spellfile.c read_compound()
Problem:  read_compound() in spellfile.c computes the size of the regex
          pattern buffer using signed-int arithmetic on the attacker
          controlled SN_COMPOUND sectionlen.  With sectionlen=0x40000008
          and UTF-8 encoding active the multiplication wraps to 27 while
          the per-byte loop writes up to ~1B bytes, overflowing the heap.
          Reachable when loading a crafted .spl file (e.g. via 'set spell'
          after a modeline sets 'spelllang').  The cp/ap/crp allocations
          have the same int + 1 overflow class (Daniel Cervera)
Solution: Use type size_t as buffer size and reject values larger than
          COMPOUND_MAX_LEN (100000).  Apply the same size_t treatment to
          the cp/ap/crp allocations.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-q4jv-r9gj-6cwv

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-07 18:49:53 +00:00
Yasuhiro Matsumoto
4cbdef8e30 runtime(vim9): Check cmd.exe on WSL is executable
closes: #20150

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-06 18:24:51 +00:00
Christian Brabandt
0ab4316fce patch 9.2.0449: Make proto fails in non GTK builds
Problem:  Make proto fails when not building the GTK gui
Solution: Test for $GLIB_COMPILE_RESOURCES as done elsewhere

closes: #20145

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-06 18:17:00 +00:00
Yasuhiro Matsumoto
4bcc8ba93d patch 9.2.0448: Vim9: dangling cmdline pointer after skip_expr_cctx()
Problem:  Vim9: dangling cmdline pointer after skip_expr_cctx()
          (Foxe Chen)
Solution: Extract the cmdline restoration logic from compile_lambda into
          a helper restore_cmdline_arg() and call it from
          skip_expr_cctx() too, so a skipped lambda inside an "else"
          branch does not leave "*arg" pointing into freed evalarg
          memory (Yasuhiro Matsumoto).

fixes:  #20147
closes: #20148

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-06 18:02:09 +00:00
magnus-rattlehead
c06002f3cb patch 9.2.0447: cindent does not ignore comments
Problem:  When find_start_brace() scans backwards for the enclosing
          block, '{' and '}' inside // and /* */ comments are counted,
          producing wrong indent for code following such comments
          (rendcrx).
Solution: Implement FM_SKIPCOMM in findmatchlimit() to track block-
          comment state and skip matches inside comments. Pass
          FM_SKIPCOMM from cindent's call sites
          (find_start_brace, find_match_char, cin_iswhileofdo,
          get_c_indent).

fixes:  #4
fixes:  #648
fixes:  #19578
closes: #19581
closes: #20111

Signed-off-by: magnus-rattlehead <guranjakustivi@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 21:14:33 +00:00
J. Paulo Seibt
7ccc273a4c patch 9.2.0446: runtime(netrw): off-by-one bug in s:NetrwUnMarkFile()
Problem:  off-by-one bug in s:NetrwUnMarkFile()
Solution: Correctly loop through all buffers to unlet all variables
          (J. Paulo Seibt)

When the function loops through buffers to clear s:netrwmarkfilelist_#
and s:netrwmarkfilemtch_#, it skips the last one at bufnr('$'), messing
up mark highlights and causing other functions that operate on those
arrays (like delete or rename) to target stale marked files.

The bufnr() help page says that bufnr("$") returns the highest buffer
number of existing buffers, so while ibuf < bufnr("$") does not clear
the last buffer-local arrays.

To reproduce:

Just opening a fresh Vim and running :Ex opens a netrw buffer at the
highest number. Then, typing mu after marking some files triggers the
mark highlight bug, and finally typing D would act like calling the
delete function against the previous marked files, as the buffer-local
arrays where not touched by s:NetrwUnMarkFile.

closes: #20129

Signed-off-by: J. Paulo Seibt <jpseibt@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 20:09:58 +00:00
Jesse Rosenstock
40fc78f0a1 patch 9.2.0445: win_fix_scroll() called before win_comp_pos() in command_height()
Problem:  win_fix_scroll(true) is called before win_comp_pos() in
          command_height().
Solution: Move win_fix_scroll(true) after win_comp_pos(), matching the
          ordering used in win_drag_status_line() (Jesse Rosenstock).

Patch 9.2.0413 added win_fix_scroll(true) to command_height() to handle
splitkeep when cmdheight changes, but placed the call before win_comp_pos().
win_fix_scroll() reads w_winrow to detect window movement
(620557bd48/src/window.c (L7266)),
but w_winrow is not recomputed until win_comp_pos() runs
(620557bd48/src/window.c (L6516)).
This causes incorrect scroll adjustments and was breaking
Test_smoothscroll_incsearch on macOS CI.

closes: #20138

Co-authored-by: Gemini
Signed-off-by: Jesse Rosenstock <jmr@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 19:50:46 +00:00
Christian Brabandt
88fb739918 patch 9.2.0444: Cannot set 'path' option via modeline
Problem:  Cannot set 'path' option via modeline (zeertzjq, after v9.2.0435)
Solution: Revert the part that disallows setting 'path' via modeline.

closes: #20137

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 19:47:19 +00:00
Hirohito Higashi
cf947e7ef0 patch 9.2.0443: GUI: cancelling save dialog overwrites or discards unnamed buffer
Problem:  When closing gvim with an unsaved unnamed buffer, choosing
          "Yes" in the "Save changes?" dialog and then "Cancel" in the
          file selection dialog either silently writes the buffer to a
          file named "Untitled" (overwriting any existing file with
          that name) or discards the buffer altogether
          (vibs29, after v9.1.0265).
Solution: In dialog_changed(), if browse_save_fname() leaves the buffer
          without a file name, treat it as a cancel and return without
          saving.  Also stop clearing the modified flag in the restore
          path on write failure, so the unsaved changes are kept and
          the caller (e.g. gui_shell_closed()) can also cancel the
          close.  Pre-fill the file dialog with "Untitled" to match
          the preceding "Save changes to ..." prompt.  Add a test for
          the write-failure path (Hirohito Higashi).

fixes:  #20132
closes: #20143

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 19:02:59 +00:00
zeertzjq
2bfddbea47 patch 9.2.0442: completion: i_CTRL-X_CTRL-V doesn't use dict from customlist
Problem:  Completion with i_CTRL-X_CTRL-V doesn't use dict from cmdline
          "customlist" completion.
Solution: Include abbr/kind/menu/info in the completion items
          (zeertzjq).

closes: #20139

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 18:56:56 +00:00
Arnaud Rebillout
1903020b82 runtime(autopkgtest): update syntax script
Fix some typos, and move a deprecated keyword where it belongs

closes: #20141

Signed-off-by: Arnaud Rebillout <arnaudr@debian.org>
Signed-off-by: James McCoy <jamessan@jamessan.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-05 18:53:33 +00:00
mityu
b10159bcc2 Fix wrong comment in getchar.c
The comment for `do_key_input_pre()` function says that it handles the
InsertCharPre autocommand, but what the function actually handles is the
KeyInputPre autocommand.

closes: #20142

Signed-off-by: mityu <mityu.mail@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 20:24:07 +00:00
Hirohito Higashi
8c7d824b73 patch 9.2.0441: statusline: click handler not called on multi-line statusline
Problem:  With a multi-line statusline clicking on a "%[FuncName]...%[]"
          or "%@FuncName@..." region defined on a row other than the
          last drawn row does not invoke the handler (Christian
          Robinson, after v9.2.0338)
Solution: In win_redr_custom() the click region table reflects only the
          last iteration of the per-row draw loop, so click regions are
          recorded only for the last row.  Move the click-region
          resolution inside the loop and append regions for each row
          using vim_realloc().  This also fixes a leak of
          clicktab[].funcname for non-last rows (Hirohito Higashi).

fixes:  #20116
closes: #20120

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 20:03:46 +00:00
Yasuhiro Matsumoto
0c998003bc patch 9.2.0440: MS-Windows: cursor flicker during update_screen()
Problem:  MS-Windows: cursor flicker during update_screen()
Solution: Hide the cursor during update_screen() to avoid Windows ConPTY
          flicker (Yasuhiro Matsumoto).

On terminals that do not honor synchronized output mode (e.g. Windows
ConPTY), update_screen() emits cell positioning and content as multiple
Win32 console writes through mch_write(), which the terminal renders as
separate frames.  This shows up as the cursor briefly jumping to column
1 of rows being redrawn, especially during async redraws around the
popup completion menu.

Disable the cursor with cursor_off() at the start of update_screen()
and restore it with cursor_on() at the end, but only when synchronized
output mode is not active.  When it is, the redraw is already atomic
from the terminal's view and hiding the cursor would only add visible
blink with no benefit.

closes: #20121

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 19:58:27 +00:00
zeertzjq
3bfffcc290 patch 9.2.0439: completion: info popup not removed in cmdline mode
Problem:  Info popup isn't removed when selecting an item that doesn't
          have "info" in cmdline completion, which is inconsistent with
          Insert mode behavior.
Solution: Set pum_call_update_screen in cmdline mode (zeertzjq).

closes: #20128

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 19:53:10 +00:00
Jesse Rosenstock
20a124a6e0 patch 9.2.0438: tests: test_plugin_termdebug is flaky
Problem:  Test_termdebug_tbreak(), Test_termdebug_basic(), and
          Test_termdebug_toggle_break() use synchronous assert_equal()
          to check breakpoint signs immediately after sending commands
          to gdb.  On slow CI (ASAN, ARM64, macOS) gdb may not have
          processed the response yet, causing the sign to be missing.
Solution: Wrap the three assertions in WaitForAssert() to poll until
          the signs are placed, matching the pattern already used by
          the other assertions in the same tests (Jesse Rosenstock).

closes: #20133

Co-authored-by: Gemini
Signed-off-by: Jesse Rosenstock <jmr@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 19:22:25 +00:00
Hirohito Higashi
bb807ebc8a runtime(doc): Tweak documentation style
closes: #20134

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 19:17:52 +00:00
Felipe Matarazzo
cb0b4cf45c Fix a few more typos
closes: #20135

Signed-off-by: Felipe Matarazzo <felipemps@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-04 19:10:37 +00:00
Yasuhiro Matsumoto
9d3019104c patch 9.2.0437: MS-Windows: cursor flicker in vtp mode
Problem:  MS-Windows: cursor flicker in vtp mode
Solution: Skip mch_update_cursor() in cursor_visible() when vtp is
          active (Yasuhiro Matsumoto).

In vtp (ConPTY) mode the cursor visibility is controlled by DECTCEM
(\033[?25h / \033[?25l).  The follow-up call to mch_update_cursor() then
re-emits DECSCUSR (\033[0 q etc.) on every visibility toggle even though
the cursor shape did not change.  Some terminals briefly redisplay the
cursor when DECSCUSR arrives, so this can cause a visible flash at the
position the cursor will be moved to next (e.g. column 0 ahead of a line
redraw).

In non-vtp mode the call is still required because SetConsoleCursorInfo()
inside mch_set_cursor_shape() reads s_cursor_visible to apply the
visibility change, so keep that path unchanged.

closes: #20122

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-03 18:37:05 +00:00
Christian Brabandt
77677c33de patch 9.2.0436: Buffer overflow when parsing overlong errorformat lines
Problem:  When an error line in a file passed to :cfile / :cgetfile is
          longer than IOSIZE, qf_parse_file_pfx() copies the tail
          into the fixed-size IObuff with STRMOVE(), overflowing the heap buffer.
          The same code path can also loop indefinitely because
          qf_parse_file_pfx() always returns QF_MULTISCAN when a
          tail is present, and qf_init_ext() unconditionally goes
          to "restofline" without bounding the tail length (Nabih).
Solution: Remove the STRMOVE() into IObuff.  In the QF_MULTISCAN
          branch, alias linebuf into the tail directly and update
          linelen, requiring strict progress (new length less than
          the previous length) before retrying; otherwise ignore
          the line.

closes: #20126

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-03 18:33:39 +00:00
Christian Brabandt
190cb3c2b9 patch 9.2.0435: [security]: backticks in 'path' may cause shell execution on completion
Problem:  [security]: Backticks enclosed shell commands in the 'path'
          option value are executed during completion (q1uf3ng).
Solution: Skip path entries containing backticks, add P_SECURE to 'path'
          option, so that it cannot be set from a modeline (for symmetry with
          the 'cdpath' option)

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-hwg5-3cxw-wvvg

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-03 18:17:02 +00:00
Christian Brabandt
fde5a56ecb patch 9.2.0434: cscope: filename interpreted by /bin/sh
Problem:  cs_create_connection() builds the cscope command by
          interpolating csinfo[i].fname (and ppath, flags) into a
          string and lets the shell parse it.  Shell metacharacters
          in a database filename are therefore evaluated by /bin/sh
          before cscope is exec'd, rather than being passed through as a
          literal path (q1uf3ng)
Solution: Build argv directly and execvp() the cscope binary
          without an intervening shell.

closes: #20119

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-03 17:47:50 +00:00
Yasuhiro Matsumoto
5c700152ae patch 9.2.0433: customlist completion cannot supply pum metadata
Problem:  customlist completion cannot supply pum metadata
Solution: Allow each item returned by a customlist function to be
          either a string or a Dict with keys "word", "abbr", "kind",
          "menu" and "info" (Yasuhiro Matsumoto).

closes: #20100

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-02 16:11:01 +00:00
Yasuhiro Matsumoto
3bd25c63b4 patch 9.2.0432: blob to string conversion can be improved
Problem:  blob to string conversion can be improved
Solution: Compute the output size up front and use a single alloc plus
          mch_memmove() (Yasuhiro Matsumoto).

Replace per-byte ga_append/snprintf loops with bulk allocation and
mch_memmove in three hot paths: blob2string() (used by string()),
string_from_blob(), and the UTF-16/UCS path of f_blob2str(). For a
16 MiB blob, string(blob) is ~28x faster and blob2str() is ~2x faster.

Benchmark (16 MiB blob, 5 iterations, total seconds):

| | Before | After | Speedup |
|---|---:|---:|---:|
| `string(blob)` | 6.422 | 0.225 | 28.5x |
| `blob2str(b)` | 0.504 | 0.265 | 1.90x |
| `blob2str(b, {encoding: 'utf-8'})` | 0.507 | 0.282 | 1.80x |
| `blob2str(b, {encoding: 'utf-16le'})` | 0.407 | 0.202 | 2.01x |

closes: #20112

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-02 15:49:17 +00:00
Yasuhiro Matsumoto
e1e92fea92 patch 9.2.0431: blob encoding can be improved
Problem:  blob encoding can be improved
Solution: Speed up blob encoding by avoiding per-byte ga_append()
          (Yasuhiro Matsumoto)

Replace the per-byte ga_append loop in the VAR_BLOB branch of
json_encode_item() with a single ga_grow for the worst case
(2 + 4 * blen) and direct writes through a local pointer. Also
read blob bytes through a local char_u* instead of going through
blob_get() for each byte.

Benchmark (1 MiB blob, 5 iterations, total seconds, median of 3 runs):

| byte distribution | Before | After | Speedup |
|---|---:|---:|---:|
| 1-digit (0–9)     | 0.0254 | 0.0174 | 1.46x |
| 2-digit (10–99)   | 0.0344 | 0.0064 | 5.38x |
| 3-digit (100–255) | 0.0539 | 0.0102 | 5.28x |
| mixed (0–255)     | 0.0335 | 0.0093 | 3.60x |

closes: #20113

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-02 15:39:55 +00:00
Yasuhiro Matsumoto
2219c89013 patch 9.2.0430: tests: Test_shortmess_F3() is flaky on MS-Windows
Problem:  tests: Test_shortmess_F3() is flaky on MS-Windows
Solution: Increase the sleep to 3s (Yasuhiro Matsumoto)

On MS-Windows time_differs() treats mtime as unchanged unless st_mtime
differs by more than 1 second, so a 2-second sleep can fall short when
the two writes straddle a second boundary. Bump the non-nanotime sleep
to 3 seconds.

closes: #20117

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-02 15:20:18 +00:00
Yasuhiro Matsumoto
e25933014c patch 9.2.0429: tests: flaky screendump Test_smoothscroll_incsearch()
Problem:  tests: flaky screendump Test_smoothscroll_incsearch()
Solution: Replace screendump test by WaitForAssert()
          (Yasuhiro Matsumoto)

VerifyScreenDump fails consistently on the macos-15-intel CI runner.
Replace the dump comparisons with assertions that verify the actual
invariant under test: that the visible buffer view stays unchanged
across the four incremental-search keystrokes (i.e. skipcol is not
reset). Drop the now-unused dump files.

closes: #20118

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-02 13:29:01 +00:00
Doug Kearns
e4413c5df7 runtime(algol68): Update syntax file, match symbolic identity relators
closes: #20109

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 16:35:57 +00:00
Yasuhiro Matsumoto
59e59a62b4 patch 9.2.0428: popup: no opacity support for completepopup/previewpopup
Problem:  popup: no opacity support for completepopup/previewpopup
Solution: Add support opacity: suboption for the 'completeopt'.

Accepts opacity:0-100 with the same semantics as popup_create()'s
opacity option, allowing the info / preview popup to blend with
the background.

closes: #20099

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 16:32:44 +00:00
Yasuhiro Matsumoto
7b218ae98c patch 9.2.0427: popup: opacity blend may leaks white bg color
Problem:  popup: opacity blend may leaks white bg color
Solution: Add cterm color blending for 256 color terminals, use
          COLOR_INVALID() macro to check for invalid color
          (Yasuhiro Matsumoto)

When a textprop highlight only set gui=undercurl/guisp (no fg/bg), the
CTERMCOLOR sentinel was treated by hl_blend_attr() as a real near-white
color, leaking white bg onto textprop-covered cells under an opacity
popup or pum.  Add a cterm color blending path that approximates blends
in the xterm 256-color palette using the gui RGB when available, so
opacity now has a visible effect even without 'termguicolors' (in
256-color terminals).  Below 256 colors the blend is skipped.

Also document the requirement (GUI, 'termguicolors', or 256-color
terminal) and update existing pumopt/popupwin opacity screendumps to
reflect the new blended output.

closes: #20095

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 16:22:32 +00:00
Yasuhiro Matsumoto
cf5d7102b9 patch 9.2.0426: tests: still some flaky screendump tests
Problem:  tests: still some flaky screendump tests
          (James McCoy)
Solution: Replace flaky VerifyScreenDump checks with assert_* assertions
          for Test_visual_block_scroll and Test_scrolloffpad_with_folds,
          and remove the now-unused dump files, mark those tests as
          flaky (which happened previously for screendump tests
          automatically) (Yasuhiro Matsumoto).

fixes:   #20096
related: #20095

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 16:20:43 +00:00
Shougo Matsushita
d25f8d1b2c patch 9.2.0425: Cannot silence undo/redo messages
Problem:  Cannot silence undo/redo messages
Solution: Add "u" flag to 'shortmess' option
          (Shougo Matsushita).

fixes:  #20049
closes: #20107

Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 14:54:56 +00:00
Yasuhiro Matsumoto
ec8b8bd82a patch 9.2.0424: popup: flicker when wildtrigger() refreshes the popup menu
Problem:  popup: flicker when wildtrigger() refreshes the popup menu
Solution: Wrap the pum teardown and cmdline redraw in synchronized
          terminal output (Yasuhiro Matsumoto).

Reduces flicker when wildtrigger() refreshes the popup on every
keystroke and the cmdline is wrapped: the un-scroll inside
update_screen() and the re-scroll inside redrawcmd() are emitted as
one atomic terminal update.

closes: #20081

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 13:29:01 +00:00
Yasuhiro Matsumoto
587447ec64 patch 9.2.0423: popup: wrapped cmdline truncated with wildoptions=pum
Problem:  popup: wrapped cmdline truncated with wildoptions=pum
Solution: Call msg_starthere() in redrawcmd() to reset lines_left
          before each redraw (Yasuhiro Matsumoto).

redrawcmd() leaves lines_left at its previous value, which decrements
across successive redraws (e.g. when wildtrigger() refreshes the popup
on every keystroke) until 0, after which msg_no_more aborts drawing
the wrapped cmdline. Call msg_starthere() to reset it.

related: #20081

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 13:25:31 +00:00
Yasuhiro Matsumoto
ba85f88fe9 patch 9.2.0422: popup: leave stray char when scrollbar changes
Problem:  popup: leave stray char when scrollbar changes
          (Maxim Kim, after v9.2.0112)
Solution: refresh popup mask when scrollbar visibility changes
          (Yasuhiro Matsumoto)

popup_adjust_position() set popup_mask_refresh only on geometry
changes, missing the case where w_has_scrollbar flips. After
popup_settext() shrinks the buffer enough that the scrollbar
disappears, the cell that held the old border / scrollbar was
never repainted, leaving stray characters.

fixes:  #20092
closes: #20098

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-01 13:12:11 +00:00
Ivan Pešić
7f3243e3a8 translation(sr): Update of Serbian translation
closes: #20105

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-30 18:06:46 +00:00
Léana 江
7da90de1cb runtime(cabal): add missing haskell language editions
closes: #20097

Signed-off-by: Léana 江 <leana.jiang+git@icloud.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-30 18:01:17 +00:00
Hirohito Higashi
f793e98068 runtime(doc): clarify separator cell on status line rows
- Expand hl-VertSplit / hl-VertSplitNC in syntax.txt to spell out which
  character (space vs 'fillchars' "vert") and which highlight group
  (StatusLine / StatusLineNC / VertSplit / VertSplitNC) are used at the
  separator cell on each kind of screen row.
- Add cross references from hl-StatusLine and hl-StatusLineNC to
  hl-VertSplit / hl-VertSplitNC.

The behavior itself is unchanged — see v9.2.0349 (c72196529) — but the
asymmetry reported in #20089 surprised users, so this aims to make the
spec discoverable from the highlight group docs.

closes: #20101

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 21:44:12 +00:00
Christian Brabandt
620557bd48 runtime(doc): Update help tags file
forgotten from Commit e7e35b9e38

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 21:22:48 +00:00
Christian Brabandt
e7e35b9e38 runtime(doc): clarify that viminfo file should be trusted
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 21:17:11 +00:00
Christian Brabandt
77499e009a patch 9.2.0421: vimball: can smuggle Vimscript into VimballRecord file
Problem:  vimball: can smuggle Vimscript into VimballRecord file
          (Mayank Jangid and Kushal Khemka)
Solution: Disallow strange file names

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 20:36:14 +00:00
Yasuhiro Matsumoto
3ac7b97439 patch 9.2.0420: channel: cannot handle binary data via channel callbacks
Problem:  channel: cannot handle binary data via channel callbacks
Solution: Add a blob channel mode that passes callback data as a Blob
          (Yasuhiro Matsumoto).

closes: #20084

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 19:49:45 +00:00
Yasuhiro Matsumoto
bd8716178e patch 9.2.0419: popup: rendering issues
Problem:  popup: rendering issues
Solution: Fix popup bottom edge overflow, stabilize popup width across
          scrolling, fix popup right edge overflow
          (Yasuhiro Matsumoto)

closes: #20042

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 19:23:47 +00:00
glepnir
20e98ff1cc patch 9.2.0418: wildcards in expanded env vars reinterpreted by glob
Problem:  With $d='[dir]', `:e $d/file.txt` opens the wrong file,
          `:e $d/<Tab>` fails to complete, and `glob('$d/*')` returns
          nothing. Wildcard characters inside expanded environment
          variables get picked up by globbing again.
Solution: Turn the 4th parameter of expand_env_esc() from a bool into a
          string of characters to escape in each expanded value. Callers
          that pass the result to wildcard expansion should include
          PATH_ESC_WILDCARDS in addition to " \t" (glepnir).

closes: #20053

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 19:10:43 +00:00
glepnir
af494af5ff patch 9.2.0417: completion: no support for "noinsert" with 'wildmode'
Problem:  completion: no support for "noinsert" with 'wildmode' and
          commandline completion
Solution: Add "noinsert" value to the 'wildmode' option, mirroring
          'completeopt' "noinsert" behaviour (glepnir).

fixes:  #16551
closes: #20080

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 18:35:55 +00:00
Maxim Kim
c2bda0add9 patch 9.2.0416: Unix: filename completion splits at space for single-file Ex commands
Problem:  SPACE_IN_FILENAME is defined on most platforms but not on Unix.
	  As a result, set_context_for_wildcard_arg() on Unix always resets the
	  completion pattern at white space for Ex commands that take a
          single file argument.
Solution: Drop the SPACE_IN_FILENAME ifdef (Maxim Kim)

fixes:  #18411
closes: #20090

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 17:19:35 +00:00
zeertzjq
6453a7c440 patch 9.2.0415: Wrong behavior when executing register that ends in Insert mode
Problem:  Wrong behavior when executing register that ends in Insert
          mode from Ctrl-O (Emilien Breton)
Solution: Use :startinsert etc. to restore Insert mode after executing
          the register contents (zeertzjq).

fixes:  #20085
closes: #20091

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 16:11:56 +00:00
Yasuhiro Matsumoto
458fed4f65 patch 9.2.0414: Flicker when drawing window separator and pum is shown
Problem:  In a vertical split where the pum overlaps the windows vsep column,
          background draws (vsep at cursor row, status line,
          redraw_vseps, idle ins_redraw) can write into cells that are
          covered by the pum, because skip_for_popup() only protects
          those cells while pum_will_redraw is set.
Solution: In skip_for_popup(), also skip cells under a visible pum when
          the current draw is not the pum itself (screen_zindex
          POPUPMENU_ZINDEX).  Exclude the wildmenu pum (MODE_CMDLINE):
          while the cmdline grows, pum_row is briefly stale and
          protecting those cells would blank a cell of the wrapped
          cmdline row (Yasuhiro Matsumoto).

closes: #20093

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-29 15:58:42 +00:00
ii14
c5de8231f4 runtime(qml): Add optional chaining to QML syntax
"obj?.prop" was wrongly parsed as ternary operator.

closes: #19988

Signed-off-by: ii14 <ii14@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 21:20:41 +00:00
Luuk van Baal
bd0f3e6da5 patch 9.2.0413: Scrolling wrong with 'splitkeep' when changing 'cmdheight'
Problem:  Cursor is not adjusted when 'cmdheight' is changed to cover
          the cursor with 'splitkeep' ~= "cursor".
Solution: Handle window resize for 'splitkeep' after changing 'cmdheight'.
          Ensure previous window height is set when changing 'splitkeep'
          (Luuk van Baal).

closes: #20043

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 21:14:50 +00:00
Hirohito Higashi
41c3379bdf patch 9.2.0412: channel: term_start() out_cb/err_cb no longer deliver raw chunks
Problem:  channel: term_start() out_cb/err_cb no longer deliver raw
          chunks (regression from patch 9.2.0224, breaks callers like
          vim-fugitive that parse multi-line output)
          (D. Ben Knoble, after v9.2.0224)
Solution: Remove the PTY-specific per-line splitting in
          may_invoke_callback() so RAW callbacks again receive the
          raw chunk as returned by read(), preserving embedded NL.
          If per-line handling is desired, the callback must split
          "msg" on NL and strip the trailing CR itself; document
          this behavior in term_start().  Replace
          Test_term_start_cb_per_line() with
          Test_term_start_cb_raw_chunk() to verify the raw-chunk
          contract.

fixes:  #20041
closes: #20045

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 21:06:45 +00:00
Yasuhiro Matsumoto
e7745b7cbf patch 9.2.0411: tabpanel: no Vim script functions for the tabpanel
Problem:  tabpanel: no Vim script functions for the tabpanel
Solution: Add tabpanel_getinfo() and tabpanel_scroll()
          (Yasuhiro Matsumoto).

tabpanel_getinfo() returns a dict describing the tabpanel (align,
columns, scrollbar, offset, total, max_offset).

tabpanel_scroll(n) scrolls the tabpanel by n rows (positive for
down, negative for up). With {absolute: 1} the argument is used as
the new absolute offset instead of a delta. The offset is clamped to
the valid range; returns true when it actually changes.

closes: #20056

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 20:31:34 +00:00
Jesse Rosenstock
6146f3382f patch 9.2.0410: test suite races when run with parallel make
Problem:  Running "make test" with -jN causes spurious failures because
          the old-style tests share filenames (test.ok, test.out, X*,
          viminfo) in the working directory.
Solution: Add .NOTPARALLEL to the testdir Makefile to prevent parallel
          execution of tests (Jesse Rosenstock).

closes: #20082

Co-authored-by: Gemini
Signed-off-by: Jesse Rosenstock <jmr@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 19:23:41 +00:00
Hirohito Higashi
30b4240730 runtime(doc): Update docs related to tabpanel
closes: #20083

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 19:19:53 +00:00
glepnir
6cb4173294 patch 9.2.0409: memory leaks in copy_substring_from_pos()
Problem:  Memory leak in error path of copy_substring_from_pos().
Solution: Free the garray on OOM in copy_substring_from_pos()
          (glepnir).

closes: #20086

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 19:14:22 +00:00
Jaehwang Jung
e47daed442 patch 9.2.0408: Insert-mode <Cmd> edits can corrupt undo
Problem:  A <Cmd> command in Insert mode can edit the current buffer,
          e.g., with setline(). That edit appends to the current undo
          block, but Insert mode does not know that the cursor line may
          need to be saved again before the next typed edit. If the next
          typed edit is a <BS> at the start of a line, it can join away
          the line that was changed by the <Cmd> command before Insert
          mode saves that updated line. The newest undo entry can then
          still refer to the joined-away line, so undo sees a range past
          the end of the buffer and fails with E438.
Solution: If a <Cmd> command in Insert mode changes the buffer, set
          ins_need_undo so stop_arrow() refreshes Insstart. This lets
          the next edit properly decide whether a new undo entry is
          needed (Jaehwang Jung)

closes: #20087
AI-assisted: Codex

Signed-off-by: Jaehwang Jung <tomtomjhj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-28 19:06:15 +00:00
Hirohito Higashi
2d43240659 patch 9.2.0407: tabpanel: A few issues with the tabpanel
Problem:  Several issues around the tabpanel scrollbar:
          1. :set tabpanelopt= completion did not offer "scroll" and
              "scrollbar".
          2. gt/gT and other tab switches did not update the scrollbar
              thumb; the current tab could move outside the visible
              panel range without the view following.
          3. When tpl_scroll_offset was at its maximum, the thumb's
              bottom did not reach the last screen row due to integer
              truncation in thumb_top (e.g. 31 tabs on 24 rows + :tablast
              left a one-row gap).
          4. For align:right the scrollbar was drawn on the panel's
              left edge (adjacent to the buffer area), which breaks the
              common convention that a vertical scrollbar sits on the
              right.
Solution: - Add "scroll" and "scrollbar" to the 'tabpanelopt' expansion
            list.  Cover the completion in test_options.vim and extend
            util/gen_opt_test.vim with the new valid/invalid values;
            drop the now-redundant acceptance test from
            test_tabpanel.vim.
          - In draw_tabpanel(), remember the last-drawn curtab and,
            when it changes, adjust tpl_scroll_offset so curtab_row
            falls inside [offset, offset + Rows).  Mouse wheel and
            drag leave curtab unchanged, so the user's chosen offset
            is preserved.
          - In draw_tabpanel_scrollbar(), compute thumb_top as
            (Rows - thumb_height) * tpl_scroll_offset
            / (tpl_total_rows - Rows), mirroring the mapping already
            used by tabpanel_drag_scrollbar().  This guarantees the
            thumb's bottom reaches the last row at the maximum offset.
          - In draw_tabpanel(), place the scrollbar at the tabpanel's
            right edge for both align:left and align:right (previously
            align:right put it on the panel's left edge next to the
            vertical separator).  For align:right this means the
            scrollbar now sits at the screen's right edge.
          - Update :h tabpanel-scroll to describe the new, align-
            independent placement.
          - Add Test_tabpanel_scrollbar_follows_curtab() and
            Test_tabpanel_scrollbar_reaches_bottom() to exercise the
            regressions fixed by items 2 and 3.

closes: #20052

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 21:16:56 +00:00
Shane Harper
7e76514896 patch 9.2.0406: VisualNOS not used when Wayland selection ownership lost
Problem:  VisualNOS not used when Wayland selection ownership lost
          (lilydjwg)
Solution: Don't require X_DISPLAY != NULL to use VisualNOS
          (Shane Harper).

fixes:   #19914
related: #19812
related: #19659
closes:  #20066

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 19:58:46 +00:00
Christian Brabandt
ae196b2d58 patch 9.2.0405: when jumping to tags, will open URLs
Problem:  when jumping to tags, will open URLs
          (Srinivas Piskala Ganesh Babu)
Solution: Disallow trying to open remote files.

closes: #20068

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 18:43:10 +00:00
Christian Brabandt
3958188f6a patch 9.2.0404: redraw_listener_add() does not check secure flag
Problem:  redraw_listener_add() does not check secure flag
Solution: Check for check_secure() in f_redraw_listener_add()

closes: #20070

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 18:34:01 +00:00
Christian Brabandt
f1a9449206 patch 9.2.0403: Vim9: def function sandbox bypass
Problem:  Vim9: def function sandbox bypass
          (Srinivas Piskala Ganesh Babu)
Solution: Check for sandbox flag in call_user_func() and call_dfunc()
          when executing Vim9 script functions

closes: #20071

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 18:14:49 +00:00
Yasuhiro Matsumoto
7070a85d94 patch 9.2.0402: pum: opacity not applied to wildmenu pum
Problem:  pum: opacity not applied to wildmenu pum
Solution: Call pum_call_update_screen() in cmdline_pum_display() when
          opacity is set, fix flicker by checking against expected row
          (Yasuhiro Matsumoto).

closes: #20072

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 18:05:12 +00:00
Christian Brabandt
0bc64b19a2 patch 9.2.0401: tests: still a few flaky tests
Problem:  tests: still a few flaky tests
Solution: Add WaitForAssert to test_messages.vim, use a smaller terminal
          window for test_tabpanel, add TermWait() in test_messages
          to handle DECQRM messages.

closes: #20074

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 18:00:14 +00:00
Barrett Ruth
dd9b31fb62 patch 9.2.0400: sandbox callbacks selected through 'complete'
Problem:  Modeline-tainted 'complete' values can invoke completion
          callbacks outside the sandbox.
Solution: Enter the sandbox for both 'complete' callback phases and add
          a regression test (Barrett Ruth)

closes: #20078

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 17:18:17 +00:00
Yasuhiro Matsumoto
a622dda915 patch 9.2.0399: MS-Windows: compile warning in strptime.c
Problem:  MS-Windows: compile warning in strptime.c
          (John Marriott, after v9.2.0398)
Solution: Fix the compile warning (Yasuhiro Matsumoto).

Use _get_tzname() instead of the deprecated tzname[] global on UCRT and
MSVC builds; older MinGW (msvcrt.dll) keeps using tzname[] as a
fallback.

related: #20054
closes:  #20079

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 17:10:25 +00:00
Christian Brabandt
96be27309c runtime(doc): fix :z command description again
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-27 17:06:47 +00:00
Yasuhiro Matsumoto
036e40e6d8 patch 9.2.0398: MS-Windows: missing strptime() support
Problem:  MS-Windows: missing strptime() support
Solution: Port NetBSD's strptime fallback to Vim
          (Yasuhiro Matsumoto).

The MSVC and MinGW C runtimes do not provide strptime(), so the
strptime() builtin was unavailable on Windows.  Port NetBSD's
lib/libc/time/strptime.c (rev 1.67) and compile it into the Windows
builds.  The BSD 2-clause notice from the original is preserved in the
file.  Windows-specific adjustments: English-only locale tables, the
fromzone()/tzalloc() path is stubbed out (no IANA tzfile loader on
Windows), and tm_gmtoff / tm_zone stores are elided.

Also call tzset() before mktime() in f_strptime() so changes to \$TZ
are honored.

Skip the POSIX DST TZ assertion in Test_strptime() on MS-Windows since
the CRT tzset() does not parse POSIX TZ strings with DST rules.

closes: #20054

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 17:31:41 +00:00
Yasuhiro Matsumoto
22aedc4a90 patch 9.2.0397: tabpanel: double-click opens a new tab
Problem:  tabpanel: double-click opens a new tab page
Solution: Do not create a new tab page when using a double click
          (Yasuhiro Matsumoto).

The tabpanel click handler inherited the tabline behavior where a
double-click opens a new, empty tab page.  Unlike the tabline, the
tabpanel has no "empty area": every row maps to some tab, so this
fires on any double-click in the tabpanel and can generate stray
empty tabs.  The behavior is also not documented for the tabpanel.

Skip the new-tab branch when the click originated in the tabpanel
and fall through to the regular tab-switch path instead.  The
tabline behavior is unchanged.

closes: #20044

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 16:53:58 +00:00
Doug Kearns
076366bd4e runtime(javascript): Fix regex highlighting after (
- Fix regex highlighting after opening parens, javascriptParens was
  matching later.  Fixes issue #20069.
- Add missing regex flags.
- Mark the file as unmaintained.  Thanks Claudio for all your work.

closes: #20076

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 14:52:21 +00:00
zeertzjq
c23bfd7922 runtime(help): fix wrong check for existing HelpComplete function
To check for an existing HelpComplete function, exists('*HelpComplete')
should be used, as exists('HelpComplete') still returns 0 after sourcing
the ftplugin.

closes: #20073

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 14:36:23 +00:00
Doug Kearns
3cc7d50716 runtime(algol68): Add new syntax file, ftplugin and filetype detection
- Add a syntax file update to Neville Dempsey's long-serving version
- Add a new rudimentary ftplugin
- Add filetype detection

Changes to the syntax file include:
- improved prelude, number and symbol highlighting
- prelude highlighting tests
- updated boiler plate

Note that these runtime files currently target Algol 68 Genie employing
the default UPPER stropping regime.  Support for GNU Algol 68 should
also be usable with the UPPER stropping regime, although somewhat less
complete.  Full support for the SUPPER stropping regime in GNU Algol 68
is also planned.

closes: #19818

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Janis Papanagnou <janis_papanagnou@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 14:31:55 +00:00
Doug Kearns
1ce03d674a runtime(dockerfile): Update syntax, fix RUN command highlighting
Allow for docker comments to be interspersed in a multiline (continued)
RUN command argument.

fixes:  #8364
closes: #19829

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 14:26:19 +00:00
Yasuhiro Matsumoto
2baef82cd1 patch 9.2.0396: tests: Test_error_callback_terminal is flaky on macOS
Problem:  tests: Test_error_callback_terminal is flaky on macOS
Solution: Use WaitForAssert() to make it more reliable
          (Yasuhiro Matsumoto).

term_wait() only waits for terminal screen updates and does not
guarantee that the err_io 'pipe' callback has fired, so on macOS
the assert_match() against g:error frequently runs before sh has
written "sh: XXXX: not found", causing the test to flake.

Replace term_wait() + assert_match() with WaitForAssert() so each
assertion polls until the callback delivers the expected output.
Also defer sending "exit" until the stderr message has been seen,
to avoid losing the stderr write to the exit race.

closes: #20075

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 09:22:38 +00:00
Christian Brabandt
bf6892aaab runtime(doc): Update documentation on :z
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 09:18:07 +00:00
Peter Cardenas
0ca1121d1f runtime(help): make help omnifunc global
closes: #20024

Signed-off-by: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:42:57 +00:00
D. Ben Knoble
8d9c383aaf patch 9.2.0395: tests: Test_backupskip() may read from $HOME
Problem:  tests: Test_backupskip() may read from $HOME
Solution: Set $HOME to an empty value, use --clean
          (D Ben Knoble)

Even though we unset HOME, we can see via scriptnames that user files
are still sourced! One of my installed plugins warns when not compiled
with +python3, so this test has a "press Enter" prompt.

Use `--clean` like most other GetVimProg()'s do to fix it. Some tests
use `system()` instead, but that turns this test into a failure rather
than passing; I'm not sure why other tests don't suffer from this.

To prove to ourselves, we can use code like this:

    diff --git i/src/testdir/test_options.vim w/src/testdir/test_options.vim
    index a408e20e1..044364a54 100644
    --- i/src/testdir/test_options.vim
    +++ w/src/testdir/test_options.vim
    @@ -1179,6 +1179,7 @@ func Test_backupskip()
       " P_NODUP).  Run this in a separate instance and write v:errors in a file,
       " so that we see what happens on startup.
       let after =<< trim [CODE]
    +      call writefile([execute('scriptnames')], 'foo')
           let bsklist = split(&backupskip, ',')
           call assert_equal(uniq(copy(bsklist)), bsklist)
           call writefile(['errors:'] + v:errors, 'Xtestout')
    @@ -1196,7 +1197,7 @@ func Test_backupskip()
       " unset $HOME, so that it won't try to read init files
       let saveenv['HOME'] = getenv("HOME")
       call setenv('HOME', v:null)
    -  exe 'silent !' . cmd
    +  exe 'silent !' . cmd .. ' --cmd "echo &rtp"'
       call assert_equal(['errors:'], readfile('Xtestout'))

       " restore environment variables

Here, that causes "foo" to include a bunch of files under ~/.vim. I'm
not sure why this happens, but lets paper over it for the test.

We can also tell that (orthogonal to --clean) setting HOME='' works too.
Let's do that in addition since unsetting HOME isn't quite enough.

closes: #20051

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:33:59 +00:00
Yasuhiro Matsumoto
8f9cde4592 patch 9.2.0394: xxd: offsets greater than LONG_MAX print as negative
Problem:  xxd: offsets greater than LONG_MAX print as negative
Solution: Use "%lu" to print unsigned long value
          (Yasuhiro Matsumoto)

closes: #20055

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:22:23 +00:00
svardew
807f2cd789 CI: Fix syntax error in lychee URL checker
fixes: #20040

Signed-off-by: svardew <svardew@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:16:59 +00:00
Christian Brabandt
1de887681d No guidance for AI coding agents
Problem:  No guidance for AI coding agents working in the Vim
          repository.
Solution: Add AGENTS.md to the repository documenting build
          and test commands, repository layout, commit format,
          C and Vim9-script conventions, test conventions, help
          file style, and release policy, so that AI agents can
          produce patches that match project expectations.

closes: #20039

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:11:59 +00:00
dependabot[bot]
e7eef554f3 CI: Bump the github-actions group across 1 directory with 3 updates
Bumps the github-actions group with 3 updates in the / directory: [msys2/setup-msys2](https://github.com/msys2/setup-msys2), [actions/cache](https://github.com/actions/cache) and [github/codeql-action](https://github.com/github/codeql-action).

Updates `msys2/setup-msys2` from 2.31.0 to 2.31.1
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/msys2/setup-msys2/compare/v2.31.0...v2.31.1)

Updates `actions/cache` from 5.0.4 to 5.0.5
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5.0.4...v5.0.5)

Updates `github/codeql-action` from 4.35.1 to 4.35.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.35.1...v4.35.2)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.31.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

closes: #20063

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 08:05:33 +00:00
Yasuhiro Matsumoto
0c2ac3480a patch 9.2.0393: MS-Windows: link error with XPM support on UCRT64
Problem:  MS-Windows: link error with XPM support on UCRT64
Solution: Make_cyg_ming.mak: allow XPM to point to system layout with
          X11/ headers (Yasuhiro Matsumoto)

When XPM is set to a system prefix such as /msys64/ucrt64 (where xpm.h
lives in include/X11/), the existing -I flags miss the header.  Add
-I $(XPM)/include/X11 so both the bundled layout (xpm/include/xpm.h)
and the system layout (include/X11/xpm.h) work.

closes: #20064

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-26 07:57:14 +00:00
Hirohito Higashi
32a30cb5a0 runtime(doc): Update docs about tabpanel
closes: #20067

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-25 17:56:30 +00:00
Christian Brabandt
1940bcb243 patch 9.2.0392: tests: Some tests are flaky
Problem:  tests: Some tests are flaky and cause CI to fail
Solution: Add WaitForAsserts() calls to reduce flakiness

closes: #20050

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-25 17:50:47 +00:00
Christian Brabandt
5f7c52408f runtime(doc): Update the ga output to match the actual output
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-25 17:46:51 +00:00
Christian Brabandt
10b57290d3 patch 9.2.0391: tests: Comment in test_vim9_cmd breaks syntax highlighting
Problem:  tests: Comment in test_vim9_cmd breaks syntax highlighting
Solution: Move the comment into the function and use the # as comment
          marker instead

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-25 16:49:21 +00:00
Vitaliy Gromov
0f9218851d translation(ru): Fix typo in "може" to "можете" in lang/README.ru.txt
closes: #20047

Signed-off-by: Vitaliy Gromov <101171374+VitaliyGromov@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-23 16:03:31 +00:00
Bruno Belanyi
521eac1877 patch 9.2.0390: filetype: some Beancount files are not recognized
Problem:  filetype: some Beancount files are not recognized
Solution: Detect *.bean files as beancount filetype
          (Bruno Belanyi)

closes: #20037

Signed-off-by: Bruno Belanyi <bruno@belanyi.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-23 15:56:30 +00:00
Hirohito Higashi
44f707da6a patch 9.2.0389: DECRQM still leaves stray "pp" on Apple Terminal.app
Problem:  DECRQM was still sent to Apple Terminal.app before its DA2
          reply was processed, leaving a literal "pp" on screen.
          may_req_decrqm() was called from vim_main2()
          right after may_req_termresponse(), at which point
          term_props[TPR_DECRQM].tpr_status was still TPR_UNKNOWN, so
          the `!= TPR_NO` guard let the request through (after v9.2.0387)
Solution: Send DECRQM from handle_version_response() once
          term_props[TPR_DECRQM].tpr_status == TPR_YES, the same
          pattern already used for t_RS (TPR_CURSOR_STYLE) and t_RC
          (TPR_CURSOR_BLINK), which deliberately wait for the DA2
          reply to avoid the same echo-on-screen issue on Apple
          Terminal.app and Gnome terminal.  Drop the now-unused
          may_req_decrqm() helper and its call site in vim_main2()
          (Hirohito Higashi).

fixes:   #19852
related: #19938
closes:  #20038

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: John Marriott <basilisk@internode.on.net>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-22 20:29:08 +00:00
zeertzjq
f194676c93 patch 9.2.0388: strange indent in update_topline()
Problem:  strange indent in update_topline()
Solution: Fix the indentation (zeertzjq)

closes: #20033

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-22 16:09:06 +00:00
Hirohito Higashi
cee8fd73eb patch 9.2.0387: DECRQM request may leave stray chars in terminal
Problem:  Sending DECRQM from handle_version_response() caused DECRPM
          responses to arrive during user input processing, leaving
          bytes in typebuf when clear_showcmd() ran.  This made
          visual-mode showcmd (e.g. "7" line count after V<C-D><C-D>)
          intermittently disappear, failing many screendump tests on CI.
Solution: Move DECRQM request out of handle_version_response() and send
          it at startup via may_req_decrqm(), following the existing
          may_req_termresponse() and may_req_bg_color() pattern.
          Add TPR_DECRQM property set per terminal from the DA2 reply,
          and route DECRQM sends through a may_req_decrqm() helper using
          the termrequest_T pattern, skipping terminals known to
          mishandle it (Foxe Chen, Hirohito Higashi).

fixes:  #19852
closes: #19938

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Hirohito Higashi <h.east.727@gmail.com>
Co-Authored-By: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 21:03:25 +00:00
Yasuhiro Matsumoto
2ea4a7c3b7 patch 9.2.0386: No scroll/scrollbar support in the tabpanel
Problem:  No scroll/scrollbar support in the tabpanel
Solution: Add support for it (Yasuhiro Matsumoto)

closes: #19979

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 20:39:22 +00:00
D. Ben Knoble
10040bc9cd runtime(sh): allow "#" in special derefs
Code like ${!#} flags the "#" as shDerefWordError [1]; the "!prefix"
syntax region delegates to one of the shDerefSpecial handlers via
@shDerefList, but it misses the "#" case as valid for ${##} and ${!#}.

[1]: https://vi.stackexchange.com/q/48617/10604

Correct that. Indirection is only valid in Bash in Ksh, so rearrange the
"!" handling to be conditional.

closes: #20016

Helped-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:59:07 +00:00
zeertzjq
33f3965087 patch 9.2.0385: Integer overflow with "ze" and large 'sidescrolloff'
Problem:  Integer overflow with "ze" and large 'sidescrolloff'.
Solution: Check for overflow to avoid negative w_leftcol (zeertzjq).

closes: #20026

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:41:37 +00:00
zeertzjq
3918f3232f runtime(doc): fix incorrect description of 'scrolloffpad'
closes: #20029

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:34:18 +00:00
Jon Parise
16d28548d2 runtime(graphql): Update syntax script to September 2025 spec
A new graphqlEscape syntax graph has been introduced to represent escape
sequences within strings, including the braced unicode form (\u{H+})
added in the September 2025 specification.

See: https://spec.graphql.org/September2025/

closes: #20030

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:25:54 +00:00
Jaehwang Jung
d4fb31762e patch 9.2.0384: stale Insstart after <Cmd> cursor move breaks undo
Problem:  A <Cmd> command executed from Insert mode can sync undo and
          move the cursor before the next edit. stop_arrow() saved the
          new cursor line for undo, but left Insstart at the previous
          insertion point. A line-start backspace could then delete
          lines above the saved line without saving the joined range,
          leaving a pending undo entry whose bottom resolved above
          its top and raising E340.
Solution: Update Insstart and Insstart_textlen after the pending undo
          save so the next edit starts from the command-updated cursor
          position (Jaehwang Jung).

closes: #20031

AI-assisted: Codex

Signed-off-by: Jaehwang Jung <tomtomjhj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:24:14 +00:00
Christian Brabandt
405e2fb6d5 patch 9.2.0383: [security]: runtime(netrw): shell-injection via sftp: and file: URLs
Problem:  runtime(netrw): shell-injection via sftp: and file: URLs
          (Joshua Rogers)
Solution: Escape temporary file names, harden filename suffix regex,
          drop unused g:netrw_tmpfile_escape variable

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-21 19:08:05 +00:00
Foxe Chen
d0b6ee320b patch 9.2.0382: Wayland: focus-stealing is non-working
Problem:  Wayland: focus-stealing is non-working
Solution: Remove it, the feature could be re-implemented using
          clipboard-providers feature, see :h wayland-primary-selection
          (Foxe Chen).

closes: #19984

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 18:24:17 +00:00
Christian Brabandt
ec3f79e037 patch 9.2.0381: Vim9: Missing check_secure() in exec_instructions()
Problem:  Vim9: Missing check_secure() when executing ISN_STOREENV
          instruction (Andrej Tomči)
Solution: Add check_secure(), add test.

closes: #19992

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 17:44:45 +00:00
glepnir
b328686d6a patch 9.2.0380: completion: a few issues in completion code
Problem: ins_compl_stop() sets compl_best_matches = 0, but that's a
         pointer, should reset compl_num_bests instead,
         find_common_prefix() reads cpt_sources_array[cur_source] without
         checking cur_source != -1 which causes an OOB for -1,
         find_next_completion_match(): second `if` in the pending loop
         should be `else if`. Forward paging only moves one step per call.

Solution: Reset compl_num_bests instead, add a check for cur_source not
          equal -1, change if to else if (glepnir)

closes: #20000

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 17:36:56 +00:00
Hirohito Higashi
fe3c27ce0b patch 9.2.0379: gui.color_approx is never used
Problem:  gui.color_approx in gui_T has not been assigned anywhere since
          patch 7.4.2094 ("The color allocation in X11 is overly
          complicated", 2016), which dropped the single "gui.color_approx = TRUE;"
          site.  Because the member is zero-initialized and never written, the
          check "if (gui.color_approx)" in gui_mch_init() is always false and the
          "E458: Cannot allocate colormap entry, ..." warning can never be
          emitted.
Solution: Remove the struct member and the unreachable branch.  The E458
          error definition is removed. Update the example error code
          "E458" in the ex_eval.c comment to "E457" accordingly.

closes: #20007

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 17:24:15 +00:00
Hirohito Higashi
146d5da0d1 patch 9.2.0378: Using int as bool type in win_T struct
Problem:  Several win_T fields are declared as "int" or "char" but are
          used strictly as boolean flags with TRUE/FALSE values.  The
          integer types obscure the boolean intent and are wider than
          needed.
Solution: Change the following win_T members to bool (stdbool.h) and
          update their assignments from TRUE/FALSE to true/false
          accordingly.

The following conversions have been done:
- int -> bool (10 members):
  w_set_curswant, w_botfill, w_old_botfill, w_do_win_fix_cursor,
  w_popup_fixed, w_border_highlight_isset, w_cline_folded,
  w_redr_status, w_arg_idx_invalid, w_has_scrollbar
- char -> bool (4 members):
  w_topline_was_set, w_ru_empty, w_fold_manual, w_foldinvalid

No existing code compares these members against TRUE/FALSE explicitly or
uses ++/-- / bitwise ops on them, so only plain assignments are
affected.

Excluded:
- w_locked (recursion counter with ++/--),
- w_want_scrollbar (may hold -1 from dict_get_bool),
- w_winbar_height (used in arithmetic and exposed as number via
  getwininfo()).

related: #20005
closes:  #20008

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 17:12:29 +00:00
Hirohito Higashi
3c3050e648 patch 9.2.0377: Using int as bool type in gui_T struct
Problem:  Several gui_T fields are declared as "int" or "char" but are
          used strictly as boolean flags with TRUE/FALSE values.  The
          integer types obscure the boolean intent and are wider than
          needed.
Solution: Change the following gui_T members to bool (stdbool.h) and
          update their assignments from TRUE/FALSE to true/false
          accordingly (Hirohito Higashi)

The following conversions have been done:
- int -> bool (11 members):
  in_focus, in_use, starting, dying, dofork, dospawn,
  pointer_hidden, force_redraw, directx_enabled, font_can_bold,
  which_scrollbars[3]
- char -> bool (2 members):
  cursor_is_valid, menu_is_active

No existing code compares these members against TRUE/FALSE explicitly
(e.g. "== TRUE"), so only plain assignments are affected.

gui_init() used counter-style "--gui.starting" / "++gui.starting" to
temporarily clear the flag across a call to gui_mch_enable_menu().
With gui.starting now bool this triggers -Werror=bool-operation, so
replace it with an explicit save/restore.

X11 Bool members (rsrc_rev_video, color_approx) are intentionally left
unchanged: rsrc_rev_video is registered as an X Toolkit resource with
XtRBool / sizeof(Bool) and must keep the int-sized X11 Bool type.

closes: #20005

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 16:33:57 +00:00
Furkan Sahin
f74a41620b patch 9.2.0376: Vim9: elseif condition compiled in dead branch
Problem:  When an `if` condition is constant true, the `else` block is
          skipped during compilation. However, any `elseif` condition
          within that skipped block was still compiled. This caused
          errors when the condition referenced variables only declared
          in the skipped block or when it checked for missing features
          (like `has('clipboard')`) (Coacher)
Solution: In compile_elseif(), when scope->se_skip_save is
          already SKIP_YES, skip compiling the elseif condition
          expression using skip_expr_cctx() (Furkan Sahin)

fixes:  #19160
closes: #20021

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 16:22:50 +00:00
Furkan Sahin
c9d4c1dc43 patch 9.2.0375: prop_find() does not find a virt text in starting line
Problem:  prop_find() does not find a virt text in the starting line
          (@rickhowe, after v9.2.0320)
Solution: Do not skip virtual text properties with tp_col == MAXCOL on
          the starting line (Furkan Sahin)

The column matching logic incorrectly skipped virtual text properties
with tp_col == MAXCOL on the starting line.  Exclude such properties
from the column range check so they are always found.

fixes:  #20013
closes: #20019

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 16:20:12 +00:00
Barrett Ruth
c62342e5cf patch 9.2.0374: c_CTRL-{G,T} does not handle offset
Problem:  c_CTRL-{G,T} does not handle offset, when cycling between
          matches
Solution: Refactor parsing logic into parse_search_pattern_offset() and
          handle offsets, note: highlighting does not handle offsets
          yet (Barrett Ruth).

fixes:  #19991
closes: #19998

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 16:08:47 +00:00
zeertzjq
49e8630a28 patch 9.2.0373: Ctrl-R mapping not triggered during completion
Problem:  Ctrl-R mapping not triggered during completion.
Solution: Move Ctrl-R check out of vim_is_ctrl_x_key()
          (zeertzjq).

fixes:  #20004
closes: #20006

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 15:46:08 +00:00
Yasuhiro Matsumoto
73ba353c9d patch 9.2.0372: pum: rendering issues with multibyte text and opacity
Problem:  pum: rendering issues with multibyte text and opacity
Solution: Fix trailing-cell handling near popup text boundary,
          use popup attrs on opaque popup text,
          preserve right border when bg wide char spills,
          blend popup text bg with underlying bg,
          fix wide background char corruption
          (Yasuhiro Matsumoto)

closes: #20017

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 15:35:39 +00:00
Eisuke Kawashima
1c88aee1fa runtime: Remove wrong syn oneline keyword from a few syntax files
Also:
- drop a few trailing whitespaces
- mark the oneline keyword for :syn keyword as error in the
  Vim syntax script, add tests for it.

closes: #20018

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 15:14:31 +00:00
Bez Hermoso
b30803b231 patch 9.2.0371: filetype: ghostty config files are not recognized
Problem:  filetype: ghostty config files are not recognized
Solution: Detect ghostty configuration files as ghostty filetype,
          include a simple ghostty filetype plugin (Bez Hermoso)

closes: #20002

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Bez Hermoso <me@bez.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 14:50:37 +00:00
Hirohito Higashi
2c436be6f7 patch 9.2.0370: duplicate code with literal string_T assignment
Problem:  Duplicate code with literal string_T assignment
Solution: Add STR_LITERAL_SET() macro for string_T literal assignment
          (Hirohito Higashi).

Previously, assigning a string literal to a string_T variable required
two lines that repeated the literal:

    s.string = (char_u *)"open";
    s.length = STRLEN_LITERAL("open");

Writing the literal twice is error-prone -- a typo in one of them
leaves the pointer and the cached length out of sync.

Add a STR_LITERAL_SET() macro in macros.h so that the assignment can
be written in one statement with the literal appearing only once:

    STR_LITERAL_SET(s, "open");

Replace all occurrences of the two-line pattern across the codebase
with the new macro.

No functional change.

related: #19999
related: #20023
closes:  #20025

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-20 14:43:52 +00:00
Hirohito Higashi
6ecff78129 patch 9.2.0369: multiple definitions of STRING_INIT macro
Problem:  multiple definitions of STRING_INIT macro
Solution: Refactor use of STRING_INIT and use a single
          STR_LITERAL_INIT() macro instead
          (Hirohito Higashi)

Consolidate the ad-hoc STRING_INIT() macros that were defined and used
locally in multiple source files. Define a single STR_LITERAL_INIT()
macro in macros.h and replace all previous STRING_INIT() usages with it.

No functional change.

related: #19999
closes:  #20023

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-19 21:51:51 +00:00
John Marriott
c13232699d patch 9.2.0368: too many strlen() calls when adding strings to dicts
Problem:  too many strlen() calls when adding strings to dicts
Solution: Refactor code to use string_T, use dict_add_string_len()
          instead of dict_add_string() (John Marriott)

Additionally:
- In textprop.c, in function prop_fill_dict() use a string_T to store
  local variable text_align.
- In popupwin.c, use a string_T to store struct member pp_name in struct
  poppos_entry_T.
- In mark.c, refactor function add_mark() to pass in the length of
  argument mname.
- In insexpand.c:
  ->Use a string_T to store the elements of static array
    ctrl_x_mode_names.
  ->Refactor function trigger_complete_done_event():
  ->->change type of argument char_u *word to string_T *word.
  ->->make one access of array ctrl_x_mode_names instead of two.
  ->Refactor function ins_compl_mode() to accept a string_T to return the
    resulting string.
- In fileio.c:
  ->Refactor function getftypewfd() to accept a string_T to return the
    resulting string.
  ->In function create_readdirex_item() use a string_T to store local
    variable q.
- In cmdexpand.c, store global cmdline_orig as a string_T.
- In autocmd.c, in function f_autocmd_get() use a string_T to store local
  variables event_name and group_name. Measure their lengths once when
  they are assigned so they are not remeasured on each call to
  dict_add_string() in the subsequent for loop.
- In channel.c, in function channel_part_info() drop local variable status
  and use s instead. Make s a string_T.

closes: #19999

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-19 21:10:43 +00:00
Yasuhiro Matsumoto
723c0acf25 patch 9.2.0367: runtime(netrw): ~ note expanded on MS Windows
Problem:  runtime(netrw): ~ note expanded on MS Windows
          (Tom Vamvanij)
Solution: Expand ~ on MS Windows (Yasuhiro Matsumoto)

On Windows, ":Explore ~" did nothing because the tilde expansion was
gated to Unix/Cygwin only.  Additionally, substitute() interprets
backslashes in the replacement string specially (e.g. \U as a case
modifier), which would corrupt $HOME values like C:\Users\name even
if the branch were taken.

Include has("win32") in the guard, anchor the pattern to the start of
the string, and escape backslashes, ampersands and tildes in $HOME
before substituting.

fixes:  #20003
closes: #20014

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-19 20:40:58 +00:00
537 changed files with 13820 additions and 5430 deletions

2
.github/MAINTAINERS vendored
View File

@@ -133,6 +133,7 @@ runtime/doc/xxd-ru.1 @RestorerZ
runtime/doc/xxd-ru.UTF-8.1 @RestorerZ
runtime/ftplugin/abaqus.vim @costerwi
runtime/ftplugin/abnf.vim @A4-Tacks
runtime/ftplugin/algol68.vim @dkearns
runtime/ftplugin/antlr4.vim @jiangyinzuo
runtime/ftplugin/apache.vim @dubgeiser
runtime/ftplugin/arduino.vim @k-takata
@@ -472,6 +473,7 @@ runtime/syntax/shared/hgcommitDiff.vim @vegerot
runtime/syntax/abaqus.vim @costerwi
runtime/syntax/abnf.vim @A4-Tacks
runtime/syntax/aidl.vim @dpelle
runtime/syntax/algol68.vim @dkearns
runtime/syntax/amiga.vim @sodero
runtime/syntax/ant.vim @dkearns
runtime/syntax/antlr4.vim @jiangyinzuo

View File

@@ -435,7 +435,7 @@ jobs:
echo "SODIUM_DIR=${SODIUM_DIR}" >> $GITHUB_ENV
echo "GETTEXT_PATH=D:\gettext${{ matrix.arch == 'x64' && '64' || '32' }}" >> $GITHUB_ENV
- uses: msys2/setup-msys2@v2.31.0
- uses: msys2/setup-msys2@v2.31.1
if: matrix.toolchain == 'mingw'
with:
update: true
@@ -459,7 +459,7 @@ jobs:
echo %GETTEXT64_URL%>> urls.txt
- name: Cache downloaded files
uses: actions/cache@v5.0.4
uses: actions/cache@v5.0.5
with:
path: downloads
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('urls.txt') }}

View File

@@ -48,7 +48,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.35.1
uses: github/codeql-action/init@v4.35.3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -59,7 +59,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4.35.1
uses: github/codeql-action/autobuild@v4.35.3
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -73,4 +73,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.35.1
uses: github/codeql-action/analyze@v4.35.3

View File

@@ -17,6 +17,6 @@ jobs:
pull-requests: write
steps:
- uses: actions/labeler@v6
- uses: actions/labeler@v6.0.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

325
AGENTS.md Normal file
View File

@@ -0,0 +1,325 @@
# AGENTS.md
Guidance for AI coding agents working in the Vim repository.
## Project
Vim is a text editor written in C. The canonical repository is
https://github.com/vim/vim. The code is old and has grown organically over
the past 30+ years. Some files are vendored from upstream projects
(`src/xdiff`, `src/libvterm`); parts of the runtime are occasionally shared
with forks like Neovim.
Vim strives to be portable across several different operating systems and
aims to be a stable, robust editor gradually developing new features while
remaining backwards compatible as much as possible.
At the same time, Vim can be compiled with different feature sets, from the
POSIX compatible minimal vi to a full-fledged GUI editor which includes
additional scripting interfaces.
See `runtime/doc/develop.txt` for the high level design goals.
## Build and test
# Full build on Unix/Linux (from src/):
make
# Run the full test suite:
make test
# Generate proto files
make proto
# Run a single test file:
cd src/testdir && make test_name.res
Output is in testdir/messages and testdir/test.log
Builds on Windows depend on the Environment, see `src/INSTALLpc.txt`
for Cygwin/MSYS and MSVC ways to build Vim
Before submitting any patch, at minimum:
1. The build succeeds without new warnings.
2. Relevant tests pass.
3. The code matches the style of the file being edited.
## Layout
- `src/` - the C source. Subsystem names are usually obvious from filenames
(`buffer.c`, `window.c`, `search.c`, `vim9compile.c`, etc.).
- `src/proto/` - function prototypes, one `.pro` file per source file.
Regenerated; do not hand-edit unless you know what you're doing.
- `src/po` - Translations
- `src/xxd` - for the xxd subproject
- `src/xdiff` - for the xdiff library (imported from git)
- `src/libvterm` - for the libvterm library
- `src/testdir/` - tests. Vim-script files named `test_*.vim`.
Screendump expected output lives in `src/testdir/dumps/`.
- `runtime/doc/` - user-facing documentation in Vim help format, when updating,
also update the Last Change header
- `runtime/syntax/generator` - Syntax script for Vim Script, automatically generated
from Vims source
- `runtime/` - runtime files shipped with Vim, when updating, also update the
Last Change header and a short description if this file has no maintainer
If the file has a maintainer, changes should go via them (so make a merge
request against the upstream repo instead)
- `src/version.c` - contains the `included_patches[]` list. Every
patch touching anything below `src/` (with the exception of `src/po`) needs a
new entry at the top, will be updated only when merging into
the master tree.
## Commit format
Vim uses a strict commit message format. The subject line is a
one-sentence **problem statement**, not a description of the fix:
patch 9.2.NNNN: short description of the problem
Problem: Restatement of the problem as a full sentence, possibly
with a reporter attribution in parentheses.
Solution: Short description of the fix, ending with the author's
name in parentheses.
optional longer description of the problem and solution goes here in prose.
Do not use bullet points.
fixes: #NNNN
related: #NNNN
closes: #NNNN
Co-authored-by: Name
Signed-off-by: Author Name <email>
Rules:
- **Subject line states the problem**, not the solution. "fix typo" is
wrong; "typo in foo() causes OOB read" is right.
- **Problem line is a full sentence with a trailing period.** It mirrors
the subject.
- **Solution line ends with `(Author Name)`** — parentheses, period
after them.
- **Longer prose**, if any, goes after the Problem/Solution header
- **`fixes:` references the issue** the patch fixes.
**`closes:` references the PR** that introduces the fix.
**`related:` references related issues**, including issues that caused this
one.
All can appear. Colon, aligned, no trailing period.
- **`Signed-off-by:` is required** — DCO.
- **`Co-Authored-By:` is allowed** and is the accepted way to
acknowledge AI assistance transparently. Human
coauthors should usually also have their own Signed-off-by.
## C code conventions
- **Indentation is 4 spaces per level.** Existing files use tabs with
`ts=8 sts=4 sw=4 noet` (set by the modeline in the file),
so tabs of width 8 appear where two levels of indent collapse. `sign.c`,
`sound.c`, and any new file must use spaces only and follow the style from
the .editorconfig file.
- **Opening braces go on their own line (Allman style)** — for function
definitions and for control-flow constructs (`if`/`else`/`for`/`while`/
`do`) alike.
- **Function definitions**: return type on its own indented line, with
the function name beginning on the next line.
- Initialize locals where a reader cannot trivially see the first
assignment (common for pointers and return-value accumulators).
Don't add `= 0` initializers for values that are always assigned
before use — they can hide real uninitialized-read bugs from
the compiler.
- `for (int i = 0; ...)` loop declarations are fine in files that
use them; older files may declare the counter at the top of the
block.
- **Function-scope declarations at the top of a block** is the historical
style, but mid-block declarations are acceptable in files that have
adopted them. Match the surrounding code.
- **Custom types end in `_T`** (e.g., `buf_T`, `linenr_T`, `pos_T`).
Never use `_t` — it collides with POSIX typedefs.
- **C language is C95 plus specific C99 features**: `//` comments,
mixed declarations and statements, `__func__`, `bool`/`_Bool`,
variadic macros, compound literals, `static inline`, trailing enum
commas. Do not reach for later C standards — Vim still must build
with Compaq C on OpenVMS. See `*assumptions-C-compiler*` in
`develop.txt` for the full list.
- **`bool` / `true` / `false` are acceptable.** Vim is transitioning
from `int` with `TRUE`/`FALSE` to C99 `bool`. Do not "fix" `bool`
back to `int`. Within a single patch, be consistent — don't mix
`true` and `TRUE` in new code.
- **Do not mass-convert** `TRUE`/`FALSE` to `true`/`false` across files
unless that is the patch's explicit purpose. Opportunistic
conversions create noise in diffs.
- **`STRLEN_LITERAL("...")`** should be used when the length of a
string literal is needed. Avoid `STRLEN()` on literals.
- **`vim_snprintf_safelen()`** returns the written length; prefer it
over `vim_snprintf()` when the length is then needed.
- **Prefer `dict_add_string_len()`** when the string length is already
known, over `dict_add_string()` which calls `STRLEN()`.
- **String/buffer parameters go `(char_u *buf, size_t buflen)`** —
length alongside pointer, in bytes. Use `size_t` for byte counts,
`int` only where required by legacy APIs.
- **Guards before divisions.** Check for divisor zero explicitly, even
when a composite earlier guard would prevent it. Relying on
transitive guards is fragile.
- When introducing new allocations, verify the cleanup paths handle all exit
conditions (early return, error branches, etc).
**Use Vim wrappers instead of libc where one exists:**
| libc | Vim | Why |
|---------------|------------------------|-----------------------------|
| `free()` | `vim_free()` | Tolerates NULL |
| `malloc()` | `alloc()` / `lalloc()` | Checks for OOM |
| `strcpy()` | `STRCPY()` | Cast for `char_u *` |
| `strchr()` | `vim_strchr()` | Handles special characters |
| `strrchr()` | `vim_strrchr()` | Handles special characters |
| `memcpy()` | `mch_memmove()` | Handles overlapping copies |
| `bcopy()` | `mch_memmove()` | Handles overlapping copies |
| `memset()` | `vim_memset()` | Uniform across systems |
| `isspace()` | `vim_isspace()` | Handles bytes > 127 |
| `iswhite()` | `vim_iswhite()` | TRUE only for tab and space |
Further rules, not spelled out here, live in `runtime/doc/develop.txt`:
- `*style-names*` — reserved name patterns (`is*`, `to*`, `str*`, `mem*`,
`wcs*`, `.*_t`, `__.*`), forbidden identifiers (`delete`, `this`, `new`,
`time`, `index`), and the 31-character function-name limit.
- `*style-spaces*`, `*style-examples*` — spacing and one-statement-per-line.
- `*style-various*``FEAT_` feature prefix, uppercase `#define`,
`#ifdef HAVE_X` rather than `#if HAVE_X`, no `'\"'`.
- `*assumptions-makefiles*` — POSIX.1-2001 `make` only in the main
Makefiles (no `%` rules, `:=`, `.ONESHELL`, GNU conditionals).
- Vim uses `char_u` instead of `char` type
- Vim uses the macros `STRLEN`, `STRCPY`, `STRCMP`, `STRCAT` that work
with the `char_u` type.
- `*style-clang-format*``sign.c` and `sound.c` are formatted with
`clang-format`; re-run it after editing those files.
## Vim9 script conventions (in tests and runtime files)
- Write modern Vim style (new files can use Vim9 script, but compatibility
with Neovim and other forks is a concern, so in doubt please ask!)
- **Drop `l:` prefix from local variables** in Vim-script tests.
- **Don't add `CheckFeature` inside individual tests** if it's already
at the top of the file.
- If a test file doesn't gate features at the top, add CheckFeature to
individual tests that depend on specific build features.
## Test conventions
- Tests are in `src/testdir/test_*.vim`.
- Reproducible tests beat "it doesn't crash" tests. If a patch fixes
a rendering bug, add a screendump test. If it fixes incorrect output,
assert the output.
- Add comprehensive tests for newly added features and include them
in existing tests if possible
- **Screendump tests** use `CheckScreendump`, `RunVimInTerminal`,
`VerifyScreenDump`, and live dumps in `src/testdir/dumps/`.
- `v9.CheckScriptSuccess(lines)` / `v9.CheckScriptFailure(lines, error, lnum)`
are the standard way to test Vim9 script behavior at script-load time.
- When fixing a bug reported as an issue, include a test that
reproduces the original report, not just a minimal synthetic case.
- Tests for Syntax runtime are in `runtime/syntax/testdir`
- Tests for Indent runtime are in `runtime/indent/testdir`
## Common gotchas
- **Distinguish what code enforces from what docs claim.** If a patch
changes documented behavior, say so in the Problem/Solution.
- **Generated files** (`src/auto/configure`, generated Wayland protocol
C, etc.) should only be regenerated when their source changes.
Mixing unrelated regeneration into a functional patch creates noise.
## Documentation
- User-facing option or feature changes require a `runtime/doc/*.txt`
update in the same patch.
- When editing an existing help file, bump the `Last change:` header
at the top.
### Help file style
See `runtime/doc/helphelp.txt` (`*help-writing*`) for the authoritative
reference. Key conventions:
- **File header**: first line is `*filename.txt*` then a tab then a
short description. That description appears under `LOCAL ADDITIONS`
in `help.txt`. The version and `Last change:` date go on the second
line, right aligned.
- **Modeline**: every help file ends with a Vim modeline — typically
`vim:tw=78:ts=8:noet:ft=help:norl:`.
- **Layout**: `'textwidth'` 78, `'tabstop'` 8, indent and align with
tab characters. Two spaces between sentences. Run `:retab`
(not `:retab!`, and review the diff) after editing.
- **Tags** are defined as `*tag-name*`, usually right-aligned on the
line where the thing they name is introduced. Tag names must be
unique across all of `runtime/doc/`; for plugin help, prefix with
the plugin name.
- **Cross-references inside help text**:
- `|tag-name|` — hot-link to an existing tag.
- `` `:cmd` `` — Ex command, highlighted as a code block.
- `'option'` — option name, in single quotes.
- `<Key>` or `CTRL-X` — special keys.
- `{placeholder}` — user-supplied argument.
- **Sections** are separated by a line of `=` starting in column 1.
Column or subsection headings end with `~` to trigger heading
highlighting.
- **Code blocks** start with `>` at the end of the introducing line
and end with `<` as the first non-blank on a later line (any line
starting in column 1 also implicitly closes the block). Use `>vim`
(or another language name) to request syntax highlighting inside
the block.
- **Notation** — `Note`, `Todo`, `Error` and a few similar words are
auto-highlighted; do not try to fake the highlighting by other means.
- **Language**: gender-neutral language is preferred for new or updated
text; existing wording does not need to be rewritten for this alone.
## Release policy
Vim alternates between development cycles and stability periods — see
`runtime/doc/develop.txt` `*design-policy*`.
- **During a stability period** only clear bug fixes, security fixes,
documentation updates, translations, and runtime file updates are
accepted. No new features, no backwards-incompatible changes.
- **Once released in a minor version**, C-core features must stay
backwards-compatible. Runtime files have a bit more flexibility so
their maintainers can correct old behavior.
- **Deprecated features** stay reachable via config (do not hard-error),
are documented as deprecated, can be disabled at compile time, and
may be removed in a later cycle.
## Security
Before reporting a suspected security issue or submitting a patch
that touches security-sensitive code, read `SECURITY.md`. Follow
the disclosure process described there.
## Before submitting
1. Commit message follows the format above.
2. All modified code compiles without new warnings.
3. Tests pass, and new functionality has regression tests.
4. Documentation is updated for user-visible changes.
5. Signed-off-by is present.
6. Diff contains only changes relevant to the stated problem —
no stray whitespace fixes, no unrelated refactors, no unrelated
regeneration of `auto/configure`.
7. For multi-patch series: each commit compiles and passes its own
tests. A known-broken intermediate state that a later patch fixes
is not acceptable — squash instead.
## When in doubt
- Make the smallest possible change to achieve the goal. Do not rewrite
entire files or functions when a targeted edit suffices.
- Read surrounding code and match its style rather than imposing an
"improvement."
- Err toward smaller, more focused patches. A patch that does three
things is three patches.
- If a patch fixes a symptom of a deeper bug, say so in the Problem
and acknowledge the scope limitation in the Solution.
- Before claiming a bug exists, reproduce it. Before claiming code does X, read
the code. Do not rely on training-data memory of file contents.
- Before running shell commands that modify files outside the working tree,
install packages, push branches, or invoke network operations, confirm with
the user.

View File

@@ -153,6 +153,7 @@ SRC_ALL = \
src/spellfile.c \
src/spellsuggest.c \
src/strings.c \
src/strptime.c \
src/structs.h \
src/syntax.c \
src/tabpanel.c \
@@ -1198,6 +1199,7 @@ IGNORE = \
.github/FUNDING.yml \
.github/labeler.yml \
.github/workflows/label.yml \
AGENTS.md \
SECURITY.md \
ci/unlisted.make \
ci/hlgroups.make \

View File

@@ -13,7 +13,7 @@ extensions = ["c", "h", "md", "html", "txt"]
accept = ["100..=103", "200..=299", "429"]
# Retry each request a few times on transient network errors
retries = 2
max_retries = 2
retry_wait_time = 2
# Timeout per request in seconds

View File

@@ -137,7 +137,7 @@ README_vms.txt VMS
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Для системе macOS вы може использовать MacVim: https://macvim.org
Для системе macOS вы можете использовать MacVim: https://macvim.org
Последние новости о редакторе Vim можно найти на его домашней странице:
https://www.vim.org/

View File

@@ -3,7 +3,7 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2026 Apr 15
# Last Change: 2026 Apr 23
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
# These functions are moved here from runtime/filetype.vim to make startup
@@ -1726,6 +1726,8 @@ const ft_from_ext = {
"tdf": "ahdl",
# AIDL
"aidl": "aidl",
# Algol 68
"a68": "algol68",
# AMPL
"run": "ampl",
# ANTLR / PCCTS
@@ -1798,6 +1800,7 @@ const ft_from_ext = {
# BDF font
"bdf": "bdf",
# Beancount
"bean": "beancount",
"beancount": "beancount",
# BibTeX bibliography database file
"bib": "bib",
@@ -3113,7 +3116,9 @@ const ft_from_ext = {
"bp": "bp",
# Tiltfile
"Tiltfile": "tiltfile",
"tiltfile": "tiltfile"
"tiltfile": "tiltfile",
# Ghostty
"ghostty": "ghostty",
}
# Key: file name (the final path component, excluding the drive and root)
# Value: filetype

View File

@@ -3,7 +3,7 @@ vim9script
# Vim runtime support library
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2026 Apr 17
# Last Change: 2026 May 06
export def IsSafeExecutable(filetype: string, executable: string): bool
if empty(exepath(executable))
@@ -51,7 +51,7 @@ if has('unix')
execute $'silent !cmd /c start "" /b {args} {Redir()}' | redraw!
enddef
endif
elseif exists('$WSL_DISTRO_NAME') # use cmd.exe to start GUI apps in WSL
elseif exists('$WSL_DISTRO_NAME') && executable('cmd.exe') # use cmd.exe to start GUI apps in WSL
export def Launch(args: string)
const command = (args =~? '\v<\f+\.(exe|com|bat|cmd)>')
? $'cmd.exe /c start /b {args} {Redir()}'

View File

@@ -103,14 +103,14 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
while linenr <= a:line2
let svfile = getline(linenr)
if !filereadable(svfile)
call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
call s:ChgDir(curdir)
call vimball#RestoreSettings()
return
endif
" create/switch to mkvimball tab
if !exists("vbtabnr")
tabnew
@@ -119,7 +119,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
else
exe "tabn ".vbtabnr
endif
let lastline= line("$") + 1
if lastline == 2 && getline("$") == ""
call setline(1,'" Vimball Archiver by Charles E. Campbell')
@@ -163,7 +163,7 @@ endfun
" ---------------------------------------------------------------------
" vimball#Vimball: extract and distribute contents from a vimball {{{2
" (invoked the the UseVimball command embedded in
" (invoked the the UseVimball command embedded in
" vimballs' prologue)
fun! vimball#Vimball(really,...)
@@ -213,7 +213,7 @@ fun! vimball#Vimball(really,...)
" give title to listing of (extracted) files from Vimball Archive
if a:really
echohl Title | echomsg "Vimball Archive" | echohl None
else
else
echohl Title | echomsg "Vimball Archive Listing" | echohl None
echohl Statement | echomsg "files would be placed under: ".home | echohl None
endif
@@ -237,6 +237,15 @@ fun! vimball#Vimball(really,...)
bw! Vimball
call s:ChgDir(curdir)
return
" Also, disallow strange paths, that could lead to code execution from
" .VimballRecord
" Disallow: pipe, quotes and closing paren
elseif fname =~ '[|'')"]'
echomsg printf("(Vimball) Forbidding strange filename: '%s', aborting...", fname)
exe "tabn ".curtabnr
bw! Vimball
call s:ChgDir(curdir)
return
endif
if a:really
@@ -295,7 +304,7 @@ fun! vimball#Vimball(really,...)
exe "silent w! ".fnameescape(fnamepath)
endif
echo "wrote ".fnameescape(fnamepath)
call s:RecordInVar(home,"call delete('".fnamepath."')")
call s:RecordInVar(home,"call delete('".escape(fnamepath, '"''|')."')")
endif
" return to tab with vimball
@@ -370,7 +379,7 @@ fun! vimball#RmVimball(...)
call s:ChgDir(home)
if filereadable(".VimballRecord")
keepalt keepjumps 1split
keepalt keepjumps 1split
sil! keepalt keepjumps e .VimballRecord
let keepsrch= @/
if search('^\M'.curfile."\m: ".'cw')
@@ -558,7 +567,7 @@ fun! s:RecordInFile(home)
if exists("s:recordfile") || exists("s:recorddir")
let curdir= getcwd()
call s:ChgDir(a:home)
keepalt keepjumps 1split
keepalt keepjumps 1split
let cmd= expand("%:tr").": "

View File

@@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.2. Last change: 2026 Apr 14
*builtin.txt* For Vim version 9.2. Last change: 2026 May 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -705,6 +705,8 @@ tabpagebuflist([{arg}]) List list of buffer numbers in tab page
tabpagenr([{arg}]) Number number of current or last tab page
tabpagewinnr({tabarg} [, {arg}])
Number number of current window in tab page
tabpanel_getinfo() Dict get current state of the tabpanel
tabpanel_scroll({n} [, {opts}]) Bool scroll the tabpanel
tagfiles() List tags files used
taglist({expr} [, {filename}]) List list of tags matching {expr}
tan({expr}) Float tangent of {expr}
@@ -6863,6 +6865,8 @@ listener_add({callback} [, {buf} [, {unbuffered}]]) *listener_add()*
second argument: >
GetBuffer()->listener_add(callback)
<
This function is not available in the |sandbox|.
Return type: |Number|
@@ -6877,6 +6881,8 @@ listener_flush([{buf}]) *listener_flush()*
Can also be used as a |method|: >
GetBuffer()->listener_flush()
<
This function is not available in the |sandbox|.
Return type: void
@@ -6888,6 +6894,8 @@ listener_remove({id}) *listener_remove()*
Can also be used as a |method|: >
GetListenerId()->listener_remove()
<
This function is not available in the |sandbox|.
Return type: |Number|
@@ -8867,6 +8875,8 @@ redraw_listener_add({opts}) *redraw_listener_add()*
Can also be used as a |method|: >
GetOpts()->redraw_listener_add()
<
This function is not available in the |sandbox|.
Return type: |Number|
@@ -11317,7 +11327,12 @@ strptime({format}, {timestring}) *strptime()*
can try different {format} values until you get a non-zero
result.
Note: On MS-Windows, where the C runtime does not provide
strptime(), Vim uses a built-in fallback that always uses
English locale names regardless of the active locale.
See also |strftime()|.
Examples: >
:echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
< 862156163 >
@@ -11871,6 +11886,38 @@ tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()*
Return type: |Number|
tabpanel_getinfo() *tabpanel_getinfo()*
Return a |Dictionary| describing the current state of the
tabpanel (see |tabpanel|). The dictionary has these keys:
align "left" or "right"
columns width in screen columns
scrollbar |TRUE| if a scrollbar is shown
offset current scroll offset in rows
total total number of rows rendered
max_offset largest valid value for "offset"
The "total" and "max_offset" values are only accurate after
the tabpanel has been drawn at least once.
Return type: dict<any>
tabpanel_scroll({n} [, {opts}]) *tabpanel_scroll()*
Scroll the tabpanel by {n} rows. Positive values scroll down
(later tab pages become visible), negative values scroll up.
The new offset is clamped to the valid range.
When {opts} is a |Dictionary| and its "absolute" entry is
|TRUE|, {n} is used as the new absolute scroll offset instead
of a delta.
Returns |TRUE| if the scroll offset changed, |FALSE| otherwise
(for example when the tabpanel is not shown, or the offset is
already at the requested value).
Return type: |vim9-boolean|
tagfiles() *tagfiles()*
Returns a |List| with the file names used to search for tags
for the current buffer. This is the 'tags' option expanded.
@@ -11990,6 +12037,7 @@ terminalprops() *terminalprops()*
underline_rgb whether |t_8u| works **
mouse mouse type supported
kitty whether Kitty terminal was detected
decrqm whether sending DECRQM sequences work
** value 'u' for unknown, 'y' for yes, 'n' for no
@@ -12009,6 +12057,9 @@ terminalprops() *terminalprops()*
For "mouse" the value 'u' is unknown
If "decrqm" is 'y', then Vim will query support for the
'termsync' and 'termresize' ("inband") options.
Also see:
- 'ambiwidth' - detected by using |t_u7|.
- |v:termstyleresp| and |v:termblinkresp| for the response to
@@ -13354,8 +13405,6 @@ vtp Compiled for vcon support |+vtp| (check vcon to find
out if it works in the current console).
wayland Compiled with Wayland protocol support.
wayland_clipboard Compiled with support for Wayland clipboard.
wayland_focus_steal Compiled with support for Wayland clipboard focus
stealing.
wildignore Compiled with 'wildignore' option.
wildmenu Compiled with 'wildmenu' option.
win16 old version for MS-Windows 3.1 (always false)

View File

@@ -1,4 +1,4 @@
*channel.txt* For Vim version 9.2. Last change: 2026 Apr 15
*channel.txt* For Vim version 9.2. Last change: 2026 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -170,6 +170,7 @@ unreachable on the network.
"js" - Use JS (JavaScript) encoding, more efficient than JSON.
"nl" - Use messages that end in a NL character
"raw" - Use raw messages
"blob" - Use raw messages and pass callback data as a |Blob|
"lsp" - Use language server protocol encoding
"dap" - Use debug adapter protocol encoding
*channel-callback* *E921*
@@ -189,6 +190,8 @@ unreachable on the network.
excluding the NL.
When "mode" is "raw" the "msg" argument is the whole message
as a string.
When "mode" is "blob" the "msg" argument is the whole message
as a |Blob|.
For all callbacks: Use |function()| to bind it to arguments
and/or a Dictionary. Or use the form "dict.function" to bind

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 9.2. Last change: 2026 Mar 17
*cmdline.txt* For Vim version 9.2. Last change: 2026 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -466,14 +466,15 @@ CTRL-L A match is done on the pattern in front of the cursor. If
*c_CTRL-G* */_CTRL-G*
CTRL-G When 'incsearch' is set, entering a search pattern for "/" or
"?" and the current match is displayed then CTRL-G will move
to the next match (does not take |search-offset| into account)
to the next match. The |search-offset| is applied when <CR>
is pressed, but does not affect the match highlighting.
Use CTRL-T to move to the previous match. Hint: on a regular
keyboard G is below T.
*c_CTRL-T* */_CTRL-T*
CTRL-T When 'incsearch' is set, entering a search pattern for "/" or
"?" and the current match is displayed then CTRL-T will move
to the previous match (does not take |search-offset| into
account).
to the previous match. The |search-offset| is applied when
<CR> is pressed, but does not affect the match highlighting.
Use CTRL-G to move to the next match. Hint: on a regular
keyboard T is above G.

View File

@@ -1,4 +1,4 @@
*ft_mp.txt* For Vim version 9.2. Last change: 2026 Feb 14
*ft_mp.txt* For Vim version 9.2. Last change: 2026 May 04
This is the documentation for the METAFONT and MetaPost filetype plugins.
Unless otherwise specified, the commands, settings and mappings defined below
@@ -25,7 +25,7 @@ MetaPost documents, including syntax coloring, indentation, and completion.
Defining indentation rules for METAFONT and MetaPost code is tricky and
somewhat subjective, because the syntax is quite liberal. The plugin uses some
heuristics that work well most of the time, but in particular cases you may
want to to override the automatic rules, so that the manually defined
want to override the automatic rules, so that the manually defined
indentation is preserved by commands like `gg=G`.
This can be achieved by appending `%>`, `%<`, `%=` or `%!` to a line to

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 9.2. Last change: 2026 Feb 14
*map.txt* For Vim version 9.2. Last change: 2026 May 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1693,7 +1693,21 @@ For the "custom" argument, the function should return the completion
candidates one per line in a newline separated string.
*E1303*
For the "customlist" argument, the function should return the completion
candidates as a Vim List. Non-string items in the list are ignored.
candidates as a Vim List. Each item may be either a string or a |Dictionary|.
A Dictionary item may have the following keys:
word (required) the text inserted into the command line when the
item is selected
abbr alternative text shown in the popup menu in place of "word",
when 'wildoptions' contains "pum"; useful when the inserted
text and the displayed text should differ
kind short kind text (one or two characters), shown in the popup
menu when 'wildoptions' contains "pum"
menu extra text shown after the match in the popup menu
info long description shown in the info popup; the |+popupwin|
feature is required to display it
Items that are neither a string nor a Dictionary, and Dictionary items without
a "word" key, are ignored. When 'wildoptions' does not contain "pum", only
"word" is shown.
The function arguments are:
ArgLead the leading portion of the argument currently being

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 9.2. Last change: 2026 Apr 17
*options.txt* For Vim version 9.2. Last change: 2026 May 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2393,6 +2393,9 @@ A jump table for the options with a short description can be found at |Q_op|.
close show close button: "on" (default) or "off"
height maximum height of the popup
highlight popup highlight group (default: PmenuSel)
opacity opacity percentage 0-100 (default 100, fully
opaque). When less than 100, content beneath
the popup shows through.
resize show resize handle: "on" (default) or "off"
shadow "off" (default) or "on" using |hl-PmenuShadow|
width maximum width of the popup
@@ -2400,6 +2403,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Example: >
:set completepopup=height:10,border:single,highlight:InfoPopup
:set completepopup=width:60,border:custom:─;│;─;│;┌;┐;┘;└
:set completepopup=border:round,opacity:80
<
When "align" is set to "item", the popup is positioned near the
selected item and moves as the selection changes.
@@ -3979,7 +3983,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|String| and is the |:find| command argument. The second argument is
a |Boolean| and is set to |v:true| when the function is called to get
a List of command-line completion matches for the |:find| command.
The function should return a List of strings.
The function should return a List, which is handled similarly to the
return value of a |:command-completion-customlist| function.
The function is called only once per |:find| command invocation.
The function can process all the directories specified in 'path'.
@@ -6211,6 +6216,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'filetype'
'foldcolumn'
'foldenable'
'foldmarker'
'foldmethod'
'modifiable'
'readonly'
@@ -7007,7 +7013,8 @@ A jump table for the options with a short description can be found at |Q_op|.
of 'fillchars' option.
opacity:{n} opacity percentage 0-100 (default 100).
When less than 100, background content shows
through the popup menu.
through the popup menu. Requires the GUI,
'termguicolors', or a 256-color terminal.
Flags (no value):
margin adds one-cell spacing inside the left and
@@ -7840,6 +7847,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Note: When using a pipe like "| tee", you'll lose the exit code of the
shell command. This might be configurable by your shell, look for
the pipefail option (for bash and zsh, use ":set -o pipefail").
Only a single "%s" value is allowed.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -7883,6 +7891,9 @@ A jump table for the options with a short description can be found at |Q_op|.
become obsolete (at least for Unix).
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*E1577*
Only a single "%s" item is allowed in the option value.
*'shellslash'* *'ssl'* *'noshellslash'* *'nossl'*
'shellslash' 'ssl' boolean (default off)
@@ -8044,6 +8055,9 @@ A jump table for the options with a short description can be found at |Q_op|.
search count statistics. The maximum limit can be set with
the 'maxsearchcount' option, see also |searchcount()|
function.
u don't give undo and redo messages like *shm-u*
"1 line less; before #1 1 second ago", "Already at oldest
change" or "Already at newest change"
This gives you the opportunity to avoid that a change between buffers
requires you to hit <Enter>, but still gives as useful a message as
@@ -9052,24 +9066,22 @@ A jump table for the options with a short description can be found at |Q_op|.
Optional settings for the |tabpanel|, It can consist of the following
items. Items must be separated by a comma.
align:{text} Specifies the position of the tabpanel.
Currently supported positions are:
left left-side
align:{text} Specifies the position of the tabpanel.
Currently supported positions are:
left left-side (default)
right right-side
(default "left")
columns:{n} Number of columns of the tabpanel.
If this value is 0 or less than 'columns', the
tab panel will not be displayed.
(default 20)
vert Use a vertical separator for tabpanel.
The vertical separator character is taken from
"tpl_vert" in 'fillchars'.
(default off)
columns:{n} Number of columns of the tabpanel. (default 20)
If this value is 0 or less than 'columns', the
tabpanel will not be displayed.
scrollbar A one-column scrollbar is always displayed at the
right edge of the tabpanel, regardless of the
"align:" setting. (default off)
See |tabpanel-scroll|.
vert The vertical separator is drawn at the boundary
between the tabpanel and the buffer area.
(default off)
The character to be drawn uses "tpl_vert" from
'fillchars'.
Examples: >
:set tabpanelopt=columns:16,align:right
:set tabpanelopt=
@@ -10043,6 +10055,14 @@ A jump table for the options with a short description can be found at |Q_op|.
letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
and "_K_L_M" are not. Nested List and Dict items may not be
read back correctly, you end up with an empty item.
Restoring |List|, |Dictionary| and |Tuple| variables is done by
parsing their textual form with the Vim expression evaluator.
Reading a viminfo file with "!" enabled is therefore only safe
when the file is trusted. In particular, do not enable "!"
before reading a viminfo file you obtained from another user,
downloaded, or that is writable by another account. See
also |viminfo-security|.
*viminfo-quote*
" Maximum number of lines saved for each register. Old name of
the '<' item, with the disadvantage that you need to put a
@@ -10400,8 +10420,12 @@ A jump table for the options with a short description can be found at |Q_op|.
applies to buffer name completion.
"noselect" If 'wildmenu' is enabled, show the menu but do not
preselect the first item.
If only one match exists, it is completed fully, unless "noselect" is
specified.
"noinsert" If 'wildmenu' is enabled, show the menu and preselect
the first match, but do not insert it in the command
line. If both "noinsert" and "noselect" are present,
"noselect" takes precedence.
If only one match exists, it is completed fully, unless "noselect" or
"noinsert" is specified.
Some useful combinations of colon-separated values:
"longest:full" Start with the longest common string and show
@@ -10669,11 +10693,10 @@ A jump table for the options with a short description can be found at |Q_op|.
*'wlsteal'* *'wst'* *'nowlsteal'* *'nowst'*
'wlsteal' 'wst' boolean (default off)
global
{only when the |+wayland_focus_steal| feature is
included}
DEPRECATED: This option is no longer used; changing it has no effect.
When enabled, then allow Vim to steal focus by creating a temporary
surface, in order to access the clipboard. For more information see
|wayland-focus-steal|.
surface, in order to access the clipboard.
*'wltimeoutlen'* *'wtm'*
'wltimeoutlen' 'wtm' number (default 500)
@@ -10686,9 +10709,6 @@ A jump table for the options with a short description can be found at |Q_op|.
some cases. On the other hand, it may also mean you receive errors
when the compositor takes more time to respond than usual.
Additionally, this option is also used as the maximum timeout when
waiting for a surface to gain focus, see |wayland-focus-steal|.
*'wrap'* *'nowrap'*
'wrap' boolean (default on)
local to window

View File

@@ -2854,10 +2854,6 @@ your browsing preferences. (see also: |netrw-settings|)
such as listing, file removal, etc.
default: ssh
*g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files
to escape these characters.
*g:netrw_timefmt* specify format string to vim's strftime().
The default, "%c", is "the preferred date
and time representation for the current

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 9.2. Last change: 2026 Apr 06
*popup.txt* For Vim version 9.2. Last change: 2026 May 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1067,8 +1067,9 @@ The opacity value ranges from 0 to 100:
1-99 Partially transparent - the popup background is blended with
the underlying text, making both partially visible.
The transparency effect requires using the GUI or having 'termguicolors'
enabled in the terminal. Without it, the opacity setting has no effect.
The transparency effect requires using the GUI, having 'termguicolors'
enabled, or running in a 256-color terminal. On terminals with fewer
than 256 colors the opacity setting has no effect.
When a popup is transparent:
- The popup's background color is blended with the background text

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 9.2. Last change: 2026 Apr 15
*quickref.txt* For Vim version 9.2. Last change: 2026 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -895,7 +895,7 @@ Short explanation of each option: *option-list*
'scrollfocus' 'scf' scroll wheel applies to window under pointer
'scrolljump' 'sj' minimum number of lines to scroll
'scrolloff' 'so' minimum nr. of lines above and below cursor
'scrolloffpad' 'sop' keep 'scrolloff' context at end of file
'scrolloffpad' 'sop' vertically center cursor at end of file
'scrollopt' 'sbo' how 'scrollbind' should behave
'sections' 'sect' nroff macros that separate sections
'secure' secure mode for reading .vimrc in current dir

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 9.2. Last change: 2026 Mar 17
*starting.txt* For Vim version 9.2. Last change: 2026 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1573,6 +1573,24 @@ Session. You could have several Session files, one for each project you are
working on. Viminfo and Session files together can be used to effectively
enter Vim and directly start working in your desired setup. |session-file|
*viminfo-security*
A viminfo file written by Vim is plain text and contains Vim expressions for
|List|, |Dictionary| and |Tuple| values. When "!" is in 'viminfo' at the time
Vim processes the file as a viminfo file, those expressions are evaluated.
The default value of 'viminfo' does not include "!", so by default no
expression evaluation happens.
Opening a viminfo file in a buffer (e.g. with |:edit|) is harmless; Vim only
displays the file contents. The risk is letting Vim process an untrusted file
through the viminfo machinery, which happens when:
- |:rviminfo| is used on the file, or
- 'viminfofile' is set to point at it, or
- the file is placed at the path Vim already reads as viminfo
|viminfo-file-name|
In any of those cases, do not have "!" in 'viminfo' if you do not trust it.
*viminfo-read*
When Vim is started and the 'viminfo' option is non-empty, the contents of
the viminfo file are read and the info can be used in the appropriate places.

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.2. Last change: 2026 Apr 14
*syntax.txt* For Vim version 9.2. Last change: 2026 May 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -849,6 +849,20 @@ ADA
See |ft-ada-syntax|
ALGOL 68 *algol68* *ft-algol68-syntax*
This syntax file currently targets the Algol 68 Genie project using the
default UPPER stropping regime. It should also be usuable in other
environments using the UPPER stropping regime, though somewhat less complete.
Highlighting can be further configured with the following variables.
Variable Highlight ~
*algol68_no_preludes* no prelude identifiers, procedures or
bold word operators
*algol68_symbolic_operators* all prelude symbolic operators
ANT *ant.vim* *ft-ant-syntax*
The ant syntax file provides syntax highlighting for javascript and python
@@ -5978,14 +5992,14 @@ EndOfBuffer Filler lines (~) after the last line in the buffer.
*hl-ErrorMsg*
ErrorMsg Error messages on the command line.
*hl-VertSplit*
VertSplit Column separating vertically split windows that are adjacent
to the current window. On the current window's status line
rows, the separator cell is drawn as a space with the
|hl-StatusLine| highlight so it blends into the status line
without a stray fillchar glyph.
VertSplit Column separating vertically split windows that is adjacent
to the current window. Drawn with the "vert" item of
'fillchars'.
*hl-VertSplitNC*
VertSplitNC Column separating vertically split windows of non-current
windows. By default, highlighted like |hl-VertSplit|.
VertSplitNC Column separating vertically split windows where neither
adjacent window is the current window. Drawn with the
"vert" item of 'fillchars'.
By default, highlighted like |hl-VertSplit|.
*hl-Folded*
Folded Line used for closed folds.
*hl-FoldColumn*
@@ -6103,14 +6117,15 @@ SpellRare Word that is recognized by the spellchecker as one that is
*hl-StatusLine*
StatusLine Status line of current window.
*hl-StatusLineNC*
StatusLineNC status lines of not-current windows
StatusLineNC status lines of not-current windows.
Note: If this is equal to "StatusLine", Vim will use "^^^" in
the status line of the current window.
*hl-StatusLineTerm*
StatusLineTerm Status line of current window, if it is a |terminal| window.
*hl-StatusLineTermNC*
StatusLineTermNC Status lines of not-current windows that is a
|terminal| window.
StatusLineTermNC
Status lines of not-current windows that is a |terminal|
window.
*hl-TabLine*
TabLine Tab pages line, not active tab page label.
*hl-TabLineFill*
@@ -6130,18 +6145,19 @@ Title Titles for output from ":set all", ":autocmd" etc.
*hl-TitleBar*
TitleBar Title bar for the active Gui's window.
This feature is supported only in the MS-Windows GUI.
See |gui-w32-title-bar| for details
See |gui-w32-title-bar| for details.
Only the `guibg` and `guifg` highlight arguments are effective.
*hl-TitleBarNC*
TitleBarNC Title bar for inactive Gui's window.
This feature is supported only in the MS-Windows GUI.
See |gui-w32-title-bar| for details
See |gui-w32-title-bar| for details.
Only the `guibg` and `guifg` highlight arguments are effective.
*hl-Visual*
Visual Visual mode selection.
*hl-VisualNOS*
VisualNOS Visual mode selection when vim is "Not Owning the Selection".
Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this.
Only X11 Gui's |gui-x11|, |xterm-clipboard| and
|wayland-selections| supports this.
*hl-WarningMsg*
WarningMsg Warning messages.
*hl-WildMenu*
@@ -6161,10 +6177,9 @@ Menu Current font, background and foreground colors of the menus.
Also used for the toolbar.
Applicable highlight arguments: font, guibg, guifg.
NOTE: For Motif the font argument actually
specifies a fontset at all times, no matter if 'guifontset' is
empty, and as such it is tied to the current |:language| when
set.
NOTE: For Motif the font argument actually specifies a fontset
at all times, no matter if 'guifontset' is empty, and as such
it is tied to the current |:language| when set.
*hl-Scrollbar*
Scrollbar Current background and foreground of the main window's
@@ -6175,10 +6190,9 @@ Scrollbar Current background and foreground of the main window's
Tooltip Current font, background and foreground of the tooltips.
Applicable highlight arguments: font, guibg, guifg.
NOTE: For Motif the font argument actually
specifies a fontset at all times, no matter if 'guifontset' is
empty, and as such it is tied to the current |:language| when
set.
NOTE: For Motif the font argument actually specifies a fontset
at all times, no matter if 'guifontset' is empty, and as such
it is tied to the current |:language| when set.
==============================================================================
15. Linking groups *:hi-link* *:highlight-link* *E412* *E413*

View File

@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 9.2. Last change: 2026 Feb 14
*tabpage.txt* For Vim version 9.2. Last change: 2026 May 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -482,6 +482,42 @@ The vertical separator character is taken from "tpl_vert" in 'fillchars'.
You can customize the appearance of the tab page labels using the highlight
groups: |hl-TabPanel| |hl-TabPanelSel| |hl-TabPanelFill|
SCROLLING IN THE TABPANEL *tabpanel-scroll*
When the total height of the tab page list exceeds the visible screen height,
mouse wheel events over the tabpanel area scroll the tab page list up or down.
The scroll step follows the 'mousescroll' setting. Wheel events inside the
tabpanel area are consumed by the tabpanel and do not trigger
|<ScrollWheelUp>| or |<ScrollWheelDown>| mappings.
The current tab page is always brought into view: when the selected tab page
changes (by |gt|, |gT|, |:tabnext| etc.), the panel scrolls so the current
entry is visible.
To show a vertical scrollbar indicating the current scroll position, add
"scrollbar" to 'tabpanelopt': >
:set tabpanelopt+=scrollbar
A one-column scrollbar is always displayed at the right edge of the tabpanel,
regardless of the "align:" setting in 'tabpanelopt'. Clicking on the
scrollbar column moves the thumb to the click position, and the thumb can be
dragged to scroll continuously.
The scrollbar uses the |hl-PmenuSbar| highlight group for the track and
|hl-PmenuThumb| for the thumb.
The scroll offset is remembered across redraws.
MOUSE CLICKS IN THE TABPANEL *tabpanel-mouse*
A left click on a row in the tabpanel selects the tab page that the row
belongs to. Unlike the tabline, a double click in the tabpanel does not open
a new, empty tab page; it is treated the same as a single click.
For finer-grained control, the 'tabpanel' value may contain |stl-%[FuncName]|
click regions. Clicks on those regions are dispatched to the callback
function instead of falling through to tab page selection.
==============================================================================
6. Setting 'guitablabel' *setting-guitablabel*

View File

@@ -1562,7 +1562,6 @@ $quote eval.txt /*$quote*
+vtp various.txt /*+vtp*
+wayland various.txt /*+wayland*
+wayland_clipboard various.txt /*+wayland_clipboard*
+wayland_focus_steal various.txt /*+wayland_focus_steal*
+wildignore various.txt /*+wildignore*
+wildmenu various.txt /*+wildmenu*
+windows various.txt /*+windows*
@@ -4779,6 +4778,8 @@ E1572 options.txt /*E1572*
E1573 channel.txt /*E1573*
E1574 channel.txt /*E1574*
E1575 builtin.txt /*E1575*
E1576 tagsrch.txt /*E1576*
E1577 options.txt /*E1577*
E158 sign.txt /*E158*
E159 sign.txt /*E159*
E16 cmdline.txt /*E16*
@@ -6234,6 +6235,9 @@ added-win32-GUI version5.txt /*added-win32-GUI*
aff-dic-format spell.txt /*aff-dic-format*
after-directory options.txt /*after-directory*
aleph options.txt /*aleph*
algol68 syntax.txt /*algol68*
algol68_no_preludes syntax.txt /*algol68_no_preludes*
algol68_symbolic_operators syntax.txt /*algol68_symbolic_operators*
alt intro.txt /*alt*
alt-input debugger.txt /*alt-input*
alternate-file editing.txt /*alternate-file*
@@ -7520,6 +7524,7 @@ ft-ada-options ft_ada.txt /*ft-ada-options*
ft-ada-plugin ft_ada.txt /*ft-ada-plugin*
ft-ada-syntax ft_ada.txt /*ft-ada-syntax*
ft-ada-variables ft_ada.txt /*ft-ada-variables*
ft-algol68-syntax syntax.txt /*ft-algol68-syntax*
ft-ant-syntax syntax.txt /*ft-ant-syntax*
ft-apache-syntax syntax.txt /*ft-apache-syntax*
ft-arduino-plugin filetype.txt /*ft-arduino-plugin*
@@ -7971,7 +7976,6 @@ g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject*
g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd*
g:netrw_sshport pi_netrw.txt /*g:netrw_sshport*
g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt*
g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape*
g:netrw_uid pi_netrw.txt /*g:netrw_uid*
g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf*
g:netrw_use_nt_rcp pi_netrw.txt /*g:netrw_use_nt_rcp*
@@ -10328,6 +10332,7 @@ shm-q options.txt /*shm-q*
shm-r options.txt /*shm-r*
shm-s options.txt /*shm-s*
shm-t options.txt /*shm-t*
shm-u options.txt /*shm-u*
shm-w options.txt /*shm-w*
shm-x options.txt /*shm-x*
short-name-changed version4.txt /*short-name-changed*
@@ -10891,6 +10896,10 @@ tabpagebuflist() builtin.txt /*tabpagebuflist()*
tabpagenr() builtin.txt /*tabpagenr()*
tabpagewinnr() builtin.txt /*tabpagewinnr()*
tabpanel tabpage.txt /*tabpanel*
tabpanel-mouse tabpage.txt /*tabpanel-mouse*
tabpanel-scroll tabpage.txt /*tabpanel-scroll*
tabpanel_getinfo() builtin.txt /*tabpanel_getinfo()*
tabpanel_scroll() builtin.txt /*tabpanel_scroll()*
tag tagsrch.txt /*tag*
tag-! tagsrch.txt /*tag-!*
tag-binary-search tagsrch.txt /*tag-binary-search*
@@ -11754,6 +11763,7 @@ viminfo-r options.txt /*viminfo-r*
viminfo-read starting.txt /*viminfo-read*
viminfo-read-write starting.txt /*viminfo-read-write*
viminfo-s options.txt /*viminfo-s*
viminfo-security starting.txt /*viminfo-security*
viminfo-timestamp starting.txt /*viminfo-timestamp*
viminfo-write starting.txt /*viminfo-write*
vimrc starting.txt /*vimrc*
@@ -11805,8 +11815,6 @@ waittime channel.txt /*waittime*
warningmsg-variable eval.txt /*warningmsg-variable*
wayland wayland.txt /*wayland*
wayland-and-x11 wayland.txt /*wayland-and-x11*
wayland-focus-steal wayland.txt /*wayland-focus-steal*
wayland-gnome wayland.txt /*wayland-gnome*
wayland-gui wayland.txt /*wayland-gui*
wayland-persist wayland.txt /*wayland-persist*
wayland-primary-selection wayland.txt /*wayland-primary-selection*

View File

@@ -579,6 +579,9 @@ ctags).
have an absolute or relative path. It may contain environment
variables and wildcards (although the use of wildcards is
doubtful). It cannot contain a <Tab>.
*E1576*
Using a remote file via network protocol (e.g. using
http://remote/file.txt) is not allowed.
{tagaddress} The Ex command that positions the cursor on the tag. It can
be any Ex command, although restrictions apply (see
|tag-security|). Posix only allows line numbers and search

View File

@@ -965,6 +965,20 @@ term_start({cmd} [, {options}]) *term_start()*
input and one output handle, with no separate handle for
stderr.
Note: term_start() always uses RAW mode for its callbacks.
"out_cb" and "err_cb" receive the raw chunk of data as read
from the OS. A single callback invocation may contain
multiple lines separated by NL, and (for stdout via a pty)
each line may have a trailing CR from the line discipline
(ONLCR). If per-line handling is desired, the callback must
split "msg" on NL and strip the trailing CR itself.
Example: >
func Handle(ch, msg)
for line in split(a:msg, "\n")
echom substitute(line, '\r$', '', '')
endfor
endfunc
<
There are extra options:
"term_name" name to use for the buffer name, instead
of the command name.

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.2. Last change: 2026 Feb 14
*todo.txt* For Vim version 9.2. Last change: 2026 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -421,8 +421,6 @@ more information.
Add an option to restrict 'incsearch' to not scroll the view. (Tavis Ormandy)
Remove SPACE_IN_FILENAME ? It is only used for completion.
When 'term' starts with "foot" then default t_TI and t_TE to the values used
for the builtin xterm termcap.
@@ -2115,7 +2113,6 @@ es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle,
When $HOME contains special characters, such as a comma, escape them when used
in an option. (Michael Hordijk, 2009 May 5)
Turn "esc" argument of expand_env_esc() into string of chars to be escaped.
Should make 'ignorecase' global-local, so that it makes sense setting it from
a modeline.

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 9.2. Last change: 2026 Feb 16
*usr_41.txt* For Vim version 9.2. Last change: 2026 Apr 28
VIM USER MANUAL by Bram Moolenaar
@@ -1081,6 +1081,8 @@ Buffers, windows and the argument list:
tabpagebuflist() return List of buffers in a tab page
tabpagenr() get the number of a tab page
tabpagewinnr() like winnr() for a specified tab page
tabpanel_getinfo() get current state of the tabpanel
tabpanel_scroll() scroll the tabpanel
winnr() get the window number for the current window
bufwinid() get the window ID of a specific buffer
bufwinnr() get the window number of a specific buffer

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 9.2. Last change: 2026 Apr 06
*various.txt* For Vim version 9.2. Last change: 2026 Apr 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -60,10 +60,9 @@ ga Print the ascii value of the character under the
but printable according to the 'isprint' option, the
non-printable version is also given.
When the character is larger than 127, the <M-x> form
is also printed. For example:
<~A> <M-^A> 129, Hex 81, Octal 201 ~
<p> <|~> <M-~> 254, Hex fe, Octal 376 ~
When the character is larger than 127:
<<81>> 129, Hex 0081, Octal 201 ~
<p> 254, Hex 00fe, Octal 376 ~
(where <p> is a special character)
The <Nul> character in a file is stored internally as
@@ -185,6 +184,9 @@ g8 Print the hex values of the bytes used in the
If the mark is "=", a line of dashes is printed
around the current line.
If the 'number' option is set, absolute line numbers
will be included in the output.
*:z!*
:[range]z![+-^.=][count]
Like ":z", but when [count] is not specified, it
@@ -529,9 +531,6 @@ T *+vreplace* |gR| and |gr|
*+vtp* on MS-Windows console: support for 'termguicolors'
N *+wayland* Unix only: support for the Wayland protocol.
N *+wayland_clipboard* Unix only: support for Wayland selections/clipboard.
N *+wayland_focus_steal*
Unix only: support for Wayland clipboard on
compositors without a data control protocol
T *+wildignore* 'wildignore' Always enabled since 9.0.0278
T *+wildmenu* 'wildmenu' Always enabled since 9.0.0279
T *+windows* more than one window; Always enabled since 8.0.1118.

View File

@@ -1,4 +1,4 @@
*version9.txt* For Vim version 9.2. Last change: 2026 Apr 16
*version9.txt* For Vim version 9.2. Last change: 2026 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41954,7 +41954,7 @@ Vim Arguments: ~
Configure Switches: ~
--with-wayland Enable the |wayland| feature.
--enable-wayland-focus-steal Enable the |wayland-focus-steal| feature.
--enable-wayland-focus-steal Enable the wayland-focus-steal feature.
--enable-socketserver Enable the |socketserver-clientserver|
feature.
@@ -52587,6 +52587,7 @@ Popups ~
- Support for transparency, see |popup-opacity|.
- 'previewpopup' supports the same values as 'completepopup' (except for
"align").
- Support "opacity" setting for 'completepopup' option.
Diff mode ~
---------
@@ -52616,10 +52617,20 @@ Other ~
- Allow mouse clickable regions in the 'statusline', 'tabline' and the
'tabpanel' using the |stl-%[FuncName]| atom.
- Enable reflow support in the |:terminal|.
- Enabled scrolling for the tabpanel when the tab page list exceeds the screen
height. Also added the "scrollbar" sub-option to 'tabpanelopt'.
- Added the "noinsert" value to the 'wildmode' option for symmetry with the
'completeopt' option
- Channel can handle |Blob| messages |channel-open-options|.
- Added the "u" flag to 'shortmess' to silence undo/redo messages: |shm-u|
- |:command-completion-customlist| can return a list of dictionaries with
kind/menu/info/abbr for the popup menu.
- |C-indenting| detects comments better.
Platform specific ~
-----------------
- support OpenType font features in 'guifont' for DirectWrite (Win32)
- Include strptime() fallback for MS-Windows
xxd ~
---
@@ -52636,6 +52647,12 @@ Changed ~
are moved to the resulting joined line instead of being dropped.
- Only a few whitelisted options are allowed to be set by a modeline to
improve overall security, see for details: 'modelinestrict'
- Removed the Wayland focus steal feature 'wlsteal', since it causes too many
issues and can now be re-implemted using the |clipboard-providers| feature
if needed, see |wayland-primary-selection| for an example.
- On Unix, filename completion for single-file Ex commands now treats embedded
whitespace as part of the filename, like on other platforms.
*added-9.3*
Added ~
@@ -52645,6 +52662,8 @@ Various syntax, indent and other plugins were added.
Functions: ~
|ch_listen()| listen on {address}
|tabpanel_getinfo()| get current state of the |tabpanel|
|tabpanel_scroll()| scroll the |tabpanel|
Autocommands: ~
@@ -52653,8 +52672,8 @@ Autocommands: ~
Options: ~
'modelinestrict' Only allow safe options to be set from a modeline.
'pumopt' Additional options for the popup menu
'scrolloffpad' Keep 'scrolloff' context at end of file
'pumopt' Additional options for the popup menu.
'scrolloffpad' Vertically center cursor at end of file.
'statuslineopt' Extra window-local options for the 'statusline', to
configure the height.
't_BS' Begin synchronized update.

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 9.2. Last change: 2026 Feb 14
*vim9.txt* For Vim version 9.2. Last change: 2026 May 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2355,11 +2355,6 @@ in Vim9 script.
let &laststatus=v:true
vim9cmd &laststatus = true
<
- Not using a string where an argument requires a string (|E1174|) >vim
echo substitute('Hallo', 'a', 'e', v:true)
vim9cmd echo substitute('Hallo', 'a', 'e', true) # E1174: String...
<
One consequence is that the item type of a list or dict given to |map()| must
not change when its type is either declared or inferred. For example, this

View File

@@ -1,4 +1,4 @@
*wayland.txt* For Vim version 9.2. Last change: 2026 Feb 14
*wayland.txt* For Vim version 9.2. Last change: 2026 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -54,15 +54,12 @@ try connecting again.
2. Wayland Selections *wayland-selections*
Vim supports the wlr-data-control-unstable-v1 and ext-data-control-v1
protocols, for accessing the current Wayland selection. These are the best
case scenario protocols, see |wayland-focus-steal|. Selection in this case
protocols, for accessing the current Wayland selection. Selection in this case
essentially means the "clipboard." You can check if your Wayland compositor
supports either of these protocols by running the wayland-info command, which
should be bundled with libwayland on your system: >
wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
<If grep finds a match, then you have either or both protocols on your system.
If you don't get any match, then please see |wayland-focus-steal| for more
information.
Some compositors that are known to support either or both protocols:
1. KWin (KDE)
@@ -90,39 +87,65 @@ Vim determines which one to use when accessing the clipboard using the
*wayland-primary-selection*
If you find X11 style primary selections useful, Wayland also implements this
behaviour in its own protocols:
feature using the protocols that Vim supports. This is unless you are using
version 1 (not the same as the 'v1' in the protocol name), of the
wlr-data-control protocol, then primary selection will not be supported. You
can check this using >
wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
If the "version:" entry for "zwlr_data_control_manager_v1" is "2" or greater,
then primary selection is supported. If you also get
"ext_data_control_manager_v1", then Vim will use that protocol instead, which
has primary selection support builtin into it.
- The primary selection protocol is the most widely supported, but requires
focus in order to be used, see |wayland-focus-steal|.
If your Wayland compositor does not support the wlr-data-control-v1 or the
ext-data-control-v1 protocol, Vim cannot access the clipboard directly through
the Wayland protocol. External tools such as wl-clipboard can be used instead
via a user-defined |clipboard-providers|.
- Data control protocol available on your system, such as the ext or wlr
protocols, then primary selection is also supported. This is unless you are
using version 1 (not the same as the 'v1' in the protocol name), of the
wlr-data-control protocol. Then the primary selection protocol will be used
as a fallback.
Example: define a provider that shells out to `wl-copy` and `wl-paste`: >vim9
*wayland-focus-steal* *wayland-gnome*
If you are using the GNOME desktop environment on Wayland, as of this writing,
there is no method of accessing/modifying the clipboard for external clients
such as Vim without being focused. Focused in this case means the client has
received some sort of input event, such as a window being focused. This is
what the wlr-data-control-unstable-v1 and ext-data-control-v1 protocols solve.
If your Wayland compositor does not support the above protocols, then the
above explanation applies.
vim9script
To solve this problem, Vim implements a way of gaining focus in order to
access the clipboard, by creating a temporary transparent top-level surface.
This is by default disabled and can be enabled via the 'wlsteal' option.
Moreover, a seat that has a keyboard is also required, see 'wlseat', and the
xdg-shell protocol must be available. Additionally, Vim must be compiled with
the |+wayland_focus_steal| feature.
def Available(): bool
return executable('wl-copy') && executable('wl-paste')
enddef
Note that this method can have several side effects from the result of focus
stealing. For example, if you have a taskbar that shows currently opened apps
in your desktop environment, then when Vim attempts to steal focus, it may
"flicker," as if a window was opened then immediately closed after.
Additionally, if you are in fullscreen mode, this focus stealing won't work,
because the created surface won't ever gain focus. If this happens, Vim will
seem to freeze temporarily, see 'wltimeoutlen' for more information.
def Copy(reg: string, type: string, str: list<string>)
var args = "wl-copy"
if reg == "*"
args ..= " -p"
endif
system(args, str)
enddef
def Paste(reg: string): tuple<string, list<string>>
var args = "wl-paste --type text/plain;charset=utf-8"
if reg == "*"
args ..= " -p"
endif
return ("", systemlist(args))
enddef
v:clipproviders["wl_clipboard"] = {
available: Available,
copy: {
"+": Copy,
"*": Copy
},
paste: {
"+": Paste,
"*": Paste
}
}
set clipmethod=wl_clipboard
This relies on the wl-clipboard package being installed
(https://github.com/bugaevc/wl-clipboard).
vim:tw=78:ts=8:noet:ft=help:norl

View File

@@ -1,4 +1,4 @@
*windows.txt* For Vim version 9.2. Last change: 2026 Mar 01
*windows.txt* For Vim version 9.2. Last change: 2026 May 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -960,6 +960,9 @@ settings. The option is a comma-separated list of values:
the value is "on", it must be set after border.
height maximum height of the popup
highlight highlight group of the popup (default is Pmenu)
opacity opacity percentage 0-100 (default 100, fully opaque).
When less than 100, content beneath the popup shows
through.
resize show resize handle: "on" (default) or "off"
shadow "off" (default) or "on" using |hl-PmenuShadow|
width maximum width of the popup
@@ -968,6 +971,7 @@ Example: >
:set previewpopup=height:10,width:60
:set previewpopup=border:single,borderhilight:PmenuBorder
:set previewpopup=border:custom:─;│;─;│;┌;┐;┘;└
:set previewpopup=border:round,opacity:80
A few peculiarities:
- If the file is in a buffer already, it will be re-used. This will allow for

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2026 Apr 08
" Last Change: 2026 Apr 20
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" If the filetype can be detected from extension or file name(the final path component),
@@ -1617,6 +1617,10 @@ au BufNewFile,BufRead *.txt
\| setf text
\| endif
" Ghostty configuration
au BufNewFile,BufRead */ghostty/config setf ghostty
au BufNewFile,BufRead */ghostty/themes/* call s:StarSetf('ghostty')
au BufNewFile,BufRead */com.mitchellh.ghostty/config setf ghostty
" Generic log file

View File

@@ -0,0 +1,47 @@
" Vim filetype plugin
" Language: Algol 68
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2026 Apr 23
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
" TODO: 'comments'
setlocal commentstring=#\ %s\ #
let &l:include='\c\%(^\|;\)\s*\%(PR\|PRAGMAT\)\s\+\%(read\|include\)'
let b:undo_ftplugin = "setl cms< inc<"
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words = '\<BEGIN\>:\<END\>,' ..
\ '\<IF\>:\<THEN\>:\<ELIF\>:\<ELSE\>:\<FI\>,' ..
\ '\<CASE\>:\<IN\>:\<OUSE\>:\<OUT\>:\<ESAC\>,' ..
"\ TODO: loops have overlapping start and intermediate keywords like
"\ `TO` which are difficult to match with patterns alone.
\ '\<DO\>:\<OD\>'
let b:match_skip = 's:Comment\|String\|PreProc'
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_skip b:match_words"
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Algol 68 Source Files (*.a68)\t*.a68\n"
if has("win32")
let b:browsefilter ..= "All Files (*.*)\t*\n"
else
let b:browsefilter ..= "All Files (*)\t*\n"
endif
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8

View File

@@ -0,0 +1,10 @@
" Vim filetype plugin file
" Language: ghostty
" Quit if a ftplugin file was already loaded
if exists("b:did_ftplugin")
finish
endif
" Use the cfg plugin, it's similar enough.
runtime! ftplugin/cfg.vim

View File

@@ -4,6 +4,7 @@
" Last Change: 2025 Apr 08
" 2025 Apr 08 by Vim project (set 'omnifunc' and 'iskeyword', #17073)
" 2025 Aug 08 by Vim project (unset comment options, #17889)
" 2026 Apr 26 by Vim project (make HelpComplete global, #20024)
if exists("b:did_ftplugin")
finish
@@ -17,14 +18,14 @@ let b:undo_ftplugin = "setl isk< fo< tw< cole< cocu< keywordprg< omnifunc< comme
setl comments= cms=
setlocal formatoptions+=tcroql textwidth=78 keywordprg=:help omnifunc=s:HelpComplete
setlocal formatoptions+=tcroql textwidth=78 keywordprg=:help omnifunc=HelpComplete
let &l:iskeyword='!-~,^*,^|,^",192-255'
if has("conceal")
setlocal cole=2 cocu=nc
endif
if !exists('*s:HelpComplete')
func s:HelpComplete(findstart, base)
if !exists('*HelpComplete')
func HelpComplete(findstart, base)
if a:findstart
let colnr = col('.') - 1 " Get the column number before the cursor
let line = getline('.')

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: Nvidia PTX (Parellel Thread Execution)
" Language: Nvidia PTX (Parallel Thread Execution)
" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
" Last Change: 2024-12-05
" 2026 May 04 by Vim Project: fix typo
if exists("b:did_ftplugin")
finish

View File

@@ -4,6 +4,7 @@
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Last Change: 2024 Sep 19 (simplify keywordprg #15696)
" 2024 Jul 22 by Vim project (use :hor term #17822)
" 2026 May 04 by Vim Project: fix typo
if exists("b:did_ftplugin")
finish
@@ -26,7 +27,7 @@ if exists("loaded_matchit") && !exists("b:match_words")
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Readline Intialization Files (inputrc, .inputrc)\tinputrc;*.inputrc\n"
let b:browsefilter = "Readline Initialization Files (inputrc, .inputrc)\tinputrc;*.inputrc\n"
if has("win32")
let b:browsefilter ..= "All Files (*.*)\t*\n"
else

View File

@@ -2,6 +2,7 @@
" Maintainer: Raul Segura Acevedo <raulseguraaceved@netscape.net> (Invalid email address)
" Doug Kearns <dougkearns@gmail.com>
" Last Change: 2022 Apr 06
" 2026 May 04 by Vim Project: fix typo
if exists("b:did_indent")
"finish
@@ -71,7 +72,7 @@ fun! CdlGetIndent(lnum)
" One 'closing' element at the beginning of the line has already reduced the
" indent, but 'else', 'elseif' & 'then' increment it for the next line.
" '=' at the beginning already has the right indent (increased for
" asignments).
" assignments).
let f = -1
let inicio = matchend(line, '^\c\s*\(else\a*\|then\|endif\|/[*/]\|[);={]\)')
if inicio > 0

View File

@@ -1,2 +1,2 @@
" Placeholder for backwards compatilibity: .jsx used to stand for JavaScript.
" Placeholder for backwards compatibility: .jsx used to stand for JavaScript.
runtime! indent/javascript.vim

View File

@@ -4,8 +4,9 @@
" Last Change: 2023-09-11
" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values #15138
" 2025 Dec 29 by Vim Project: clean up
" 2025 Dec 31 by Vim Project: correcly indent after nested array literal #19042
" 2025 Dec 31 by Vim Project: correctly indent after nested array literal #19042
" 2026 Jan 28 by Vim Project: fix indentation when a string literal contains 'if' #19265
" 2026 May 04 by Vim Project: fix typo
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
" Note: upstream seems umaintained: https://github.com/rust-lang/rust.vim/issues/502

View File

@@ -3,10 +3,11 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Original Author: Nikolai Weibull <now@bitwi.se>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Latest Revision: 2019-10-24
" Latest Revision: 20260504
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog:
" 20260504 - fix typo
" 20250906 - indent function closing properly on multiline commands
" 20250318 - Detect local arrays in functions
" 20241411 - Detect dash character in function keyword for
@@ -233,7 +234,7 @@ function! s:is_array(line)
endfunction
function! s:is_in_block(line)
" checks whether a:line is whithin a
" checks whether a:line is within a
" block e.g. a shell function
" foo() {
" ..

View File

@@ -2,6 +2,7 @@
" Language: Stylus
" Maintainer: Marc Harter
" Last Change: 2010 May 21
" 2026 May 04 by Vim Project: fix typo
" Based On: sass.vim from Tim Pope
"
if exists("b:did_indent")
@@ -97,7 +98,7 @@ function! GetStylusIndent()
let line = substitute(getline(lnum),'[\s()]\+$','','') " get last line strip ending whitespace
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') " get current line, trimmed
let lastcol = strlen(line) " get last col in prev line
let line = substitute(line,'^\s\+','','') " then remove preceeding whitespace
let line = substitute(line,'^\s\+','','') " then remove preceding whitespace
let indent = indent(lnum) " get indent on prev line
let cindent = indent(v:lnum) " get indent on current line
let increase = indent + &sw " increase indent by the shift width

View File

@@ -1,2 +1,2 @@
" Placeholder for backwards compatilibity: .tsx used to stand for TypeScript.
" Placeholder for backwards compatibility: .tsx used to stand for TypeScript.
runtime! indent/typescript.vim

View File

@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2026 Apr 15
" Last Change: 2026 Apr 21
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" If there already is an option window, jump to that one.
@@ -351,7 +351,7 @@ call append("$", "\t" .. s:local_to_window)
call <SID>BinOptionL("sms")
call <SID>AddOption("scrolloff", gettext("number of screen lines to show around the cursor"))
call append("$", " \tset so=" . &so)
call <SID>AddOption("scrolloffpad", gettext("keep 'scrolloff' context even at end of file"))
call <SID>AddOption("scrolloffpad", gettext("vertically center cursor even at end of file"))
call append("$", " \tset sop=" . &sop)
call <SID>AddOption("wrap", gettext("long lines wrap"))
call append("$", "\t" .. s:local_to_window)
@@ -835,10 +835,6 @@ if has('wayland')
call <SID>AddOption("wlseat", gettext("Wayland seat to use"))
call <SID>OptionG("wse", &wse)
endif
if has("wayland_focus_steal")
call <SID>AddOption("wlsteal", gettext("Enable wayland focus stealing functionality in order to access the clipboard"))
call <SID>BinOptionG("wst", &wst)
endif
call <SID>AddOption("keymodel", gettext("\"startsel\" and/or \"stopsel\"; what special keys can do"))
call <SID>OptionG("km", &km)

View File

@@ -1,30 +1,7 @@
" Creator: Charles E Campbell
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Maintainer: This runtime file is looking for a new maintainer.
" Last Change:
" 2025 Aug 07 by Vim Project (use correct "=~#" for netrw_stylesize option #17901)
" 2025 Aug 07 by Vim Project (netrw#BrowseX() distinguishes remote files #17794)
" 2025 Aug 22 by Vim Project netrw#Explore handle terminal correctly #18069
" 2025 Sep 05 by Vim Project ensure netrw#fs#Dirname() returns trailing slash #18199
" 2025 Sep 11 by Vim Project only keep cursor position in tree mode #18275
" 2025 Sep 17 by Vim Project tighten the regex to handle remote compressed archives #18318
" 2025 Sep 18 by Vim Project 'equalalways' not always respected #18358
" 2025 Oct 01 by Vim Project fix navigate to parent folder #18464
" 2025 Oct 26 by Vim Project fix parsing of remote user names #18611
" 2025 Oct 27 by Vim Project align comment after #18611
" 2025 Nov 01 by Vim Project fix NetrwChgPerm #18674
" 2025 Nov 13 by Vim Project don't wipe unnamed buffers #18740
" 2025 Nov 18 by Vim Project use UNC paths when using scp and Windows paths #18764
" 2025 Nov 28 by Vim Project fix undefined variable in *NetrwMenu #18829
" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015
" 2026 Jan 19 by Vim Project do not create swapfiles #18854
" 2026 Feb 15 by Vim Project fix global variable initialization for MS-Windows #19287
" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477
" 2026 Feb 27 by Vim Project Make the hostname validation more strict
" 2026 Mar 01 by Vim Project include portnumber in hostname checking #19533
" 2026 Apr 01 by Vim Project use fnameescape() with netrw#FileUrlEdit()
" 2026 Apr 05 by Vim Project Fix netrw#RFC2396() #19913
" 2026 Apr 15 by Vim Project Add missing escape()
" Last Change: 2026 May 10
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -399,7 +376,6 @@ else
call s:NetrwInit("g:netrw_glob_escape",'*[]?`{~$\')
endif
call s:NetrwInit("g:netrw_menu_escape",'.&? \')
call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4')
let s:treedepthstring= "│ "
@@ -530,8 +506,8 @@ function netrw#Explore(indx,dosplit,style,...)
NetrwKeepj norm! 0
if a:0 > 0
if a:1 =~ '^\~' && (has("unix") || g:netrw_cygwin)
let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),''))
if a:1 =~ '^\~' && (has("unix") || has("win32") || g:netrw_cygwin)
let dirname= simplify(substitute(a:1,'^\~',escape(expand("$HOME"),'\&~'),''))
elseif a:1 == '.'
let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd())
if dirname !~ '/$'
@@ -1820,14 +1796,14 @@ function netrw#NetRead(mode,...)
".........................................
" NetRead: (sftp) NetRead Method #9 {{{3
elseif b:netrw_method == 9
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1))
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
".........................................
" NetRead: (file) NetRead Method #10 {{{3
elseif b:netrw_method == 10 && exists("g:netrw_file_cmd")
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_file_cmd." ".netrw#os#Escape(b:netrw_fname,1)." ".tmpfile)
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_file_cmd." ".netrw#os#Escape(b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1))
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
@@ -6346,7 +6322,7 @@ function s:NetrwUnMarkFile(islocal)
endif
let ibuf= 1
while ibuf < bufnr("$")
while ibuf <= bufnr("$")
if exists("s:netrwmarkfilelist_".ibuf)
unlet s:netrwmarkfilelist_{ibuf}
unlet s:netrwmarkfilemtch_{ibuf}
@@ -8964,14 +8940,17 @@ function s:GetTempfile(fname)
endif
" use fname's suffix for the temporary file
" Restrict the suffix to word characters so shell metacharacters in a
" remote filename (e.g. sftp://host/foo.txt;id) cannot ride along into
" the tempfile name and out into a downstream shell command.
if a:fname != ""
if a:fname =~ '\.[^./]\+$'
if a:fname =~ '\.\w\+$'
if a:fname =~ '\.tar\.gz$' || a:fname =~ '\.tar\.bz2$' || a:fname =~ '\.tar\.xz$'
let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
let suffix = ".tar".substitute(a:fname,'^.*\(\.\w\+\)$','\1','e')
elseif a:fname =~ '.txz$'
let suffix = ".txz".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
let suffix = ".txz".substitute(a:fname,'^.*\(\.\w\+\)$','\1','e')
else
let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
let suffix = substitute(a:fname,'^.*\(\.\w\+\)$','\1','e')
endif
let tmpfile= substitute(tmpfile,'\.tmp$','','e')
let tmpfile .= suffix
@@ -9010,11 +8989,10 @@ function s:MakeBookmark(fname)
if index(g:netrw_bookmarklist,a:fname) == -1
" curdir not currently in g:netrw_bookmarklist, so include it
if isdirectory(s:NetrwFile(a:fname)) && a:fname !~ '/$'
call add(g:netrw_bookmarklist,a:fname.'/')
elseif a:fname !~ '/'
call add(g:netrw_bookmarklist,getcwd()."/".a:fname)
" Directory without a trailing slash
call add(g:netrw_bookmarklist, s:NetrwFile(a:fname) . '/')
else
call add(g:netrw_bookmarklist,a:fname)
call add(g:netrw_bookmarklist, s:NetrwFile(a:fname))
endif
call sort(g:netrw_bookmarklist)
endif

View File

@@ -2854,10 +2854,6 @@ your browsing preferences. (see also: |netrw-settings|)
such as listing, file removal, etc.
default: ssh
*g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files
to escape these characters.
*g:netrw_timefmt* specify format string to vim's strftime().
The default, "%c", is "the preferred date
and time representation for the current

470
runtime/syntax/algol68.vim Normal file
View File

@@ -0,0 +1,470 @@
" Vim syntax file
" Language: Algol 68
" Version: 0.4
" Maintainer: Janis Papanagnou
" Previous Maintainer: NevilleD.ALGOL_68@sgr-a.net
" Last Change: 2026 May 02
if exists("b:current_syntax")
finish
endif
syn sync minlines=250 maxlines=500
" Algol68 Final Report, unrevised
syn keyword algol68PreProc PRIORITY
syn keyword algol68Operator BTB CTB CONJ QUOTE CT CTAB EITHER SIGN
" Algol68 Revised Report
syn keyword algol68Boolean TRUE FALSE
syn keyword algol68Conditional IF THEN ELSE ELIF FI
syn keyword algol68Conditional CASE IN OUT OUSE ESAC
syn keyword algol68Constant NIL SKIP EMPTY
syn keyword algol68Statement MODE OP PRIO PROC
syn keyword algol68Label GOTO
syn match algol68Label "\<GO TO\>"
syn keyword algol68Operator ABS REPR ROUND ENTIER ARG BIN LENG SHORTEN ODD
syn keyword algol68Operator SHL SHR ROL ROR UP DOWN LEVEL LWB UPB I RE IM
syn keyword algol68Operator OVER MOD ELEM SET CLEAR
syn keyword algol68Operator LT LE GE GT
syn keyword algol68Operator EQ NE
syn keyword algol68Operator AND OR XOR NOT
" Genie short-circuit pseudo operators
syn keyword algol68Operator THEF ANDF ANDTH ELSF ORF OREL
syn keyword algol68Operator ANDTHEN ORELSE
syn keyword algol68Operator MINUSAB PLUSAB TIMESAB DIVAB OVERAB MODAB PLUSTO
syn keyword algol68Operator IS ISNT OF AT
syn keyword algol68Operator SORT ELEMS
syn keyword algol68Repeat FOR FROM BY UPTO DOWNTO TO WHILE DO UNTIL OD
syn keyword algol68Statement PAR BEGIN END EXIT
syn keyword algol68Struct STRUCT
syn keyword algol68PreProc VECTOR
syn keyword algol68Type FLEX HEAP LOC LONG REF SHORT
syn keyword algol68Type VOID BOOL INT REAL COMPL CHAR STRING COMPLEX
syn keyword algol68Type BITS BYTES FILE CHANNEL PIPE SEMA SOUND
syn keyword algol68Type FORMAT STRUCT UNION
" Genie extensions in addition to ROUND and ENTIER
syn keyword algol68Operator FLOOR CEIL NINT TRUNC FRAC FIX
" 20011222az: Added new items.
syn keyword algol68Todo contained TODO FIXME XXX DEBUG NOTE
" String
syn region algol68String matchgroup=algol68String start=+"+ end=+"+ contains=algol68StringEscape
syn match algol68StringEscape contained '""'
syn match algol68StringEscape contained "\\$"
syn match algol68Identifier "\<[a-z][a-z0-9_]*\>"
if exists("algol68_symbolic_operators")
syn match algol68SymbolOperator "\\"
syn match algol68SymbolOperator ":=\|="
syn match algol68SymbolOperator "[~^]"
syn match algol68SymbolOperator "[~^]="
syn match algol68SymbolOperator "[<>]"
syn match algol68SymbolOperator "[<>]="
syn match algol68SymbolOperator "\%([-+*%/]\|%\*\)"
syn match algol68SymbolOperator "\%([-+*%/]\|%\*\):="
syn match algol68SymbolOperator "+=:"
syn match algol68SymbolOperator "*\*\|&"
syn match algol68SymbolOperator ":/\==:"
endif
syn match algol68Number "\<\d\+\%(\s\+\d\+\)*\>"
syn match algol68Float "\c\.\d\+\%(\s\+\d\+\)*\%(\s*[e\\⏨]\s*[-+]\?\s*\d\+\%(\s\+\d\+\)*\)\?\>"
syn match algol68Float "\c\<\d\+\%(\s\+\d\+\)*\%(\s*[e\\⏨]\s*[-+]\?\s*\d\+\%(\s\+\d\+\)*\)\>"
syn match algol68Float "\c\<\d\+\%(\s\+\d\+\)*\s*\.\s*\d\+\%(\s\+\d\+\)*\%(\s*[e\\⏨]\s*[-+]\?\s*\d\+\%(\s\+\d\+\)*\)\?\>"
syn match algol68HexNumber "\c\<2r\s*[01]\+\%(\s\+[01]\+\)*\>"
syn match algol68HexNumber "\c\<4r\s*[0-3]\+\%(\s\+[0-3]\+\)*\>"
syn match algol68HexNumber "\c\<8r\s*[0-7]\+\%(\s\+[0-7]\+\)*\>"
syn match algol68HexNumber "\c\<16r\s*[0-9a-f]\+\%(\s\+[0-9a-f]\+\)*\>"
syn region algol68Special start="\$" end="\$" contains=algol68String
syn region algol68Comment start="¢" end="¢" contains=algol68Todo,algol68SpaceError
syn region algol68Comment start="£" end="£" contains=algol68Todo,algol68SpaceError
syn region algol68Comment start="#" end="#" contains=algol68Todo,algol68SpaceError
syn region algol68Comment start="\<CO\>" end="\<CO\>" contains=algol68Todo,algol68SpaceError
syn region algol68Comment start="\<COMMENT\>" end="\<COMMENT\>" contains=algol68Todo,algol68SpaceError
syn region algol68PreProc start="\<PR\>" end="\<PR\>" contains=algol68Todo,algol68SpaceError
syn region algol68PreProc start="\<PRAGMAT\>" end="\<PRAGMAT\>" contains=algol68Todo,algol68SpaceError
" algol68r
syn region algol68Comment start="{" end="}" contains=algol68Todo,algol68SpaceError
syn region algol68Comment start="{{{" end="}}}" contains=algol68Todo,algol68SpaceError
" ALGOL 68r
syn keyword algol68PreProc DECS CONTEXT configinfo A68CONFIG KEEP FINISH USE SYSPROCS IOSTATE FORALL
" ALGOL 68c
syn keyword algol68PreProc USING ENVIRON FOREACH ASSERT
if !exists("algol68_no_preludes")
" THE STANDARD ENVIRONMENT
" Enquiries
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(blank\|formfeed\|newline\|null\|tab\|eof\)\s*char\%(acter\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(max\s*abs\|exp\|error\)\s*char\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(long\s*\)\?long\s*\)\?max\s*\%(bits\|int\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(long\s*\)\?long\s*\)\?\%(max\|min\|small\)\s*real\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\?\%(bits\|bytes\|exp\|int\|real\)\s*width\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(bits\|bytes\|compl\|int\|real\)\s*\%(lengths\|shorths\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(blank\|flip\|flop\)\>\%(\s*[a-z0-9]\)\@!"
" Transput Files and Channels
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<stand\s*\%(in\|out\|back\|error\)\%(\s*channel\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<stand\s*draw\s*channel\>\%(\s*[a-z0-9]\)\@!"
" Transput Event Routines
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<on\s*\%(\%(line\|page\|\%(logical\s*\|physical\s*\)\?file\|format\)\s*\)end\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<on\s*\%(\%(format\|value\|open\|transput\)\s*\)error\>\%(\s*[a-z0-9]\)\@!"
" Connections to Files
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(open\|establish\|append\|create\|associate\|close\|lock\|erase\|scratch\)\>\%(\s*[a-z0-9]\)\@!"
" Positioning on Files
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<new\s*line\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<new\s*page\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<back\s*space\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(reset\|rewind\|rewrite\|set\|seek\|space\)\>\%(\s*[a-z0-9]\)\@!"
" I/O on Files (Standard)
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(get\|put\|print\|read\|write\)\%(f\|\s*bin\)\?\>\%(\s*[a-z0-9]\)\@!"
" I/O on Files (Algol68C)
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(print\|read\)\s*\%(\%(long\s*\)\?long\s*\)\?\%(int\|real\|complex\|bits\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(print\|read\)\s*\%(bool\|char\|string\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<read\s*line\>\%(\s*[a-z0-9]\)\@!"
" Enquiries on Files
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(get\|put\|bin\|set\|reset\|rewind\|reidf\|draw\)\s*possible\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<end\s*of\s*\%(file\|line\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(make\s*\)\?term\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(compressible\|eof\|eoln\)\>\%(\s*[a-z0-9]\)\@!"
" Keyboard Control
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cooked\|raw\)\>\%(\s*[a-z0-9]\)\@!"
" Math Constants
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(long\s*\)\?long\s*\)\?\%(min\s*real\|\%(minus\s*\)\?infinity\|\%(min\s*\)\?inf\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?pi\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<mp\s*radix\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<nan\>\%(\s*[a-z0-9]\)\@!"
" Math Basic Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\%([a-z0-9]\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?\%(sqrt\|cbrt\|curt\|exp\|ln\|log\)\>\%(\s*[a-z0-9]\)\@!\%(\s\{1,7}[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<ln\s*abs\>\%(\s*[a-z0-9]\)\@!"
" Math Trigonometric Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?\%(arc\s*\|a\)\?\%(sin\|cos\|tan\|cot\|sec\|csc\|cas\)\%(h\|\%(\s*dg\)\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?\%(arc\s*\|a\)\?tan2\%(\s*dg\)\?\>\%(\s*[a-z0-9]\)\@!"
" long-long-sinpi/cospi/tanpi/cotpi
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?\%(sin\|cos\|tan\|cot\)\s*pi\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<ln\s*\%(sinh\|cosh\)\>\%(\s*[a-z0-9]\)\@!"
" a special case in Genie?
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<atan\s*int\>\%(\s*[a-z0-9]\)\@!"
" Random Number Generator
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(long\s*\)\?long\s*\)\?\%(next\s*\)\?random\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<first\s*random\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<rnd\>\%(\s*[a-z0-9]\)\@!"
" Garbage Collection and Memory
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<collect\s*seconds\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<garbage\%(\s*\%(collections\|freed\|refused\|seconds\)\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<gc\s*heap\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<on\s*gc\s*event\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<preemptive\s*\%(gc\|sweep\%(\s*heap\)\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<sweep\s*heap\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<sweeps\%(\s*refused\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(system\s*\)\?\%(heap\|stack\)\s*pointer\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(actual\|system\)\s*stack\s*size\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(blocks\|collections\)\>\%(\s*[a-z0-9]\)\@!"
" I/O on Strings
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(puts\|gets\|string\)f\?\>\%(\s*[a-z0-9]\)\@!"
" Character Type Tests
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<is\s*\%(alnum\|alpha\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\)\>\%(\s*[a-z0-9]\)\@!"
" Operations on Characters
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<to\s*\%(upper\|lower\)\>\%(\s*[a-z0-9]\)\@!"
" Search in Strings
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(char\|last\s*char\|string\)\s*in\s*string\>\%(\s*[a-z0-9]\)\@!"
" Time and Date
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cpu\|wall\|utc\|local\)\s*time\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(wall\s*\)\?clock\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(wall\s*\)\?seconds\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<sleep\>\%(\s*[a-z0-9]\)\@!"
" Type Operations
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(long\s*\)\?\%(bits\|bytes\)\s*pack\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(long\s*long\s*\)\?bits\s*pack\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\%([a-z0-9]\s\+\)\@8<!\<\%(bits\|whole\|fixed\|float\|real\)\>\%(\s*[a-z0-9]\)\@!\%(\s*[a-z0-9]\)\@!"
" Runtime
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(program\s*\)\?idf\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(backtrace\|break\|debug\|monitor\|abend\|evaluate\|system\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(i32\|i64\|r64\|r128\)mach\>\%(\s*[a-z0-9]\)\@!"
" UNIX EXTENSIONS
" Environment Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(a68g\s*\)\?\%(argc\|argv\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<get\s*env\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<reset\s*errno\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<str\s*error\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(get\|set\)\s*pwd\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(rows\|columns\|abend\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<errno\>\%(\s*[a-z0-9]\)\@!"
" Processes
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<execve\%(\s*child\%(\s*pipe\)\?\|\s*output\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<exec\%(\s*sub\%(\s*pipeline\|\s*output\)\?\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<fork\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<wait\s*pid\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<create\s*pipe\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<peek\s*char\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<sig\s*segv\>\%(\s*[a-z0-9]\)\@!"
" File types and attributes
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<file\s*is\s*\%(block\s*device\|char\s*device\|directory\|regular\|fifo\|link\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<file\s*mode\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<get\s*directory\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<real\s*path\>\%(\s*[a-z0-9]\)\@!"
" Fetching web page contents and sending requests
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<https\?\s*\%(content\|timeout\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<tcp\s*request\>\%(\s*[a-z0-9]\)\@!"
" Regular expressions in string manipulation
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<grep\s*in\s*\%(sub\)\?string\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<sub\s*in\s*string\>\%(\s*[a-z0-9]\)\@!"
" Curses support
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<curses\s*\%(start\|end\|clear\|refresh\|get\s*char\|put\s*char\|move\|lines\|columns\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<curses\s*\%(green\|cyan\|red\|yellow\|magenta\|blue\|white\)\%(\s*inverse\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<curses\s*del\s*char\>\%(\s*[a-z0-9]\)\@!"
" POSTGRESQL CLIENT ROUTINES
" Connecting to a server
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<pq\s*\%(connect\s*db\|finish\|reset\|parameter\s*status\)\>\%(\s*[a-z0-9]\)\@!"
" Sending queries and retrieving results
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<pq\s*\%(exec\|ntuples\|nfields\|fname\|fnumber\|fformat\|get\s*is\s*null\|get\s*value\|cmd\s*status\|cmd\s*tuples\)\>\%(\s*[a-z0-9]\)\@!"
" Connection status information
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<pq\s*\%(\%(result\s*\)\?error\s*message\|db\|user\|pass\|host\|port\|tty\|options\|\%(protocol\|server\)\s*version\|socket\|backend\s*pid\)\>\%(\s*[a-z0-9]\)\@!"
" SOUND
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(new\|get\|set\)\s*sound\>\%(\s*[a-z0-9]\)\@!"
syn keyword algol68Operator RESOLUTION CHANNELS RATE SAMPLES
" DRAWING USING THE GNU PLOTTING UTILITIES
" Setting up a graphics device
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<draw\s*\%(device\|erase\|show\|move\|aspect\|fill\s*style\|line\s*style\|line\s*width\|clear\|flush\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<make\s*device\>\%(\s*[a-z0-9]\)\@!"
" Specifying colours
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<draw\s*\%(\%(background\s*\)\?colou\?r\%(\s*name\)\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<draw\s*get\s*colou\?r\s*name\>\%(\s*[a-z0-9]\)\@!"
" Drawing objects
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<draw\s*\%(point\|line\|rect\|circle\|ball\|star\)\>\%(\s*[a-z0-9]\)\@!"
" Drawing text
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<draw\s*\%(text\%(\s*angle\)\?\|font\s*\%(name\|size\)\)\>\%(\s*[a-z0-9]\)\@!"
" EXTRA NUMERICAL PROCEDURES
" COMPLEX Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?c\%(omplex\s*\)\?\%(sqrt\|exp\|ln\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(long\s*\)\?long\s*\)\?complex\s*\%(arc\s*\)\?\%(sin\|cos\|tan\)h\?\>\%(\s*[a-z0-9]\)\@!"
" cas casin casinh dcas dcasin dcasinh qcas qcasin qcasinh longcas longlongcas
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[dq]\?\)ca\?\%(sin\|cos\|tan\)h\?\>\%(\s*[a-z0-9]\)\@!"
" a special case in Genie?
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<long\s*complex\s*atanh\>\%(\s*[a-z0-9]\)\@!"
" REAL Airy Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<airy\s*[ab]i\%(\s*deriv\)\?\%(\s*scaled\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<airy\s*[ab]i\%(\s*derivative\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<airy\s*zero\s*[ab]i\%(\s*deriv\)\?\>\%(\s*[a-z0-9]\)\@!"
" REAL Bessel Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(jn\|yn\|in\|exp\s*in\|kn\|exp\s*kn\|jl\|yl\|exp\s*il\|exp\s*kl\|jnu\|ynu\|inu\|exp\s*inu\|knu\|exp\s*knu\)\>\%(\s*[a-z0-9]\)\@!"
" only a few could be sensibly merged; we keep them apart
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(il[012]\?\s*scaled\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(in[01]\%(\s*scaled\)\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(in\s*u\?\s*scaled\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(j\%(\l[012]\|n[01]\)\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(kl[012]\?\s*scaled\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(kn[01]\%(\s*scaled\)\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(kn\s*[u_]\?\s*scaled\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*ln\s*knu\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*\%(y\%(\l[012]\|n[01]\)\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<bessel\s*zero\s*j\%([01]\|nu\)\>\%(\s*[a-z0-9]\)\@!"
" REAL Elliptic Integrals
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<elliptic\s*integral\s*\%(k\|e\|rf\<rd\|rj\|rc\)\>\%(\s*[a-z0-9]\)\@!"
" REAL Error and Gamma Functions
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(ln\s*\)\?\%(fact\|choose\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<prime\s*factors\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(long\s*\)\?long\s*\)\|[qd]\)\?\%(inv\%(erse\)\?\s*\)\?erfc\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<mpfr\s*\%(\%(\%(long\s*\)\?long\s*\)\|q\)\?\%(inv\s*\)\?erfc\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(\%(mpfr\s*\)\?long\s*\)\?long\s*\)\|\%(d\|\%(mpfr\s*\)\?q\)\)\?\%(beta\|gamma\)\%(\s*inc\s*g\?f\?\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<beta\s*inc\s*gsl\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(\%(\%(\%(mpfr\s*\)\?long\s*\)\?long\s*\)\|\%(d\|\%(mpfr\s*\)\?q\)\)\?ln\s*\%(beta\|gamma\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<mpfr\s*mp\>\%(\s*[a-z0-9]\)\@!"
" is the following a special case in Genie?
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<mpfr\s*\%(long\s*\|d\)gamma\s*inc\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "gamma\s*\%(\%(inc\s*\%(gsl\|[pq]\)\)\|inv\|star\)\>\%(\s*\%([a-z_]\|\l\d\+\)\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<lj[ef]\s*126\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<ln1p\>\%(\s*[a-z0-9]\)\@!"
" Scaling Factors
" strangely missing some common factors (hecto, deca, deci, centi),
" also myria, and the more extreme factors (quetta, ronna, ronto, quecto)
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<num\s*\%(yotta\|zetta\|exa\|peta\|tera\|giga\|mega\|kilo\|milli\|micro\|nano\|pico\|femto\|atto\|zepto\|yocto\)\>\%(\s*[a-z0-9]\)\@!"
" Physical Constants
" Fundamental Constants
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(boltzmann\|faraday\|gauss\|hectare\|\%(kilometers\|miles\)\s*per\s*hour\|micron\|molar\s*gas\|planck\s*constant\%(\s*bar\)\?\|speed\s*of\s*light\|standard\s*gas\s*volume\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<mksa\s*vacuum\s*\%(permeability\|permittivity\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<num\s*avogadro\>\%(\s*[a-z0-9]\)\@!"
" Astronomy and Astrophysics
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(astronomical\s*unit\|grav\s*accel\|gravitational\s*constant\|light\s*year\|parsec\|solar\s*mass\)\>\%(\s*[a-z0-9]\)\@!"
" Atomic and Nuclear Physics
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(angstrom\|barn\|bohr\s*magneton\|bohr\s*radius\|electron\s*\%(charge\|magnetic\s*moment\|volt\)\|mass\s*\%(electron\|muon\|neutron\|proton\)\|nuclear\s*magneton\|proton\s*magnetic\s*moment\|rydberg\|unified\s*atomic\s*mass\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<num\s*fine\s*structure\>\%(\s*[a-z0-9]\)\@!"
" Time
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(day\|hour\|minute\|week\)\>\%(\s*[a-z0-9]\)\@!"
" Imperial units
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(foot\|inch\|mil\|mile\|yard\|\%(tex\)\?point\)\>\%(\s*[a-z0-9]\)\@!"
" Nautical units
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(fathom\|knot\|nautical\s*mile\)\>\%(\s*[a-z0-9]\)\@!"
" Volume
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(acre\|\%(canadian\|uk\|us\)\s*gallon\|liter\|pint\|quart\|cup\|fluid\s*ounce\|\%(table\|tea\)\s*spoon\)\>\%(\s*[a-z0-9]\)\@!"
" Mass and weight
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(carat\|\%(gram\|\%(kilo\s*\)\?pound\)\s*force\|\%(metric\s*\|uk\s*\)\?ton\|\%(ounce\|pound\)\s*mass\|poundal\|troy\s*ounce\)\>\%(\s*[a-z0-9]\)\@!"
" Thermal energy and power
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(btu\|calorie\|horsepower\|therm\)\>\%(\s*[a-z0-9]\)\@!"
" Pressure
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(bar\|inch\s*of\s*\%(mercury\|water\)\|meter\s*of\s*mercury\|psi\|std\s*atmosphere\|torr\)\>\%(\s*[a-z0-9]\)\@!"
" Viscosity
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(poise\|stokes\)\>\%(\s*[a-z0-9]\)\@!"
" Light and illumination
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(foot\s*candle\|foot\s*lambert\|lambert\|lumen\|lux\|phot\|stilb\)\>\%(\s*[a-z0-9]\)\@!"
" Radioactivity
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(curie\|rad\|roentgen\)\>\%(\s*[a-z0-9]\)\@!"
" Force and energy
syn match algol68Predefined "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(cgs\|mksa\)\s*\%(dyne\|erg\|joule\|newton\)\>\%(\s*[a-z0-9]\)\@!"
" Functions from GSL
syn keyword algol68Operator CV RV T INV PINV MEAN DET TRACE NORM DYAD BEFORE ABOVE
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<angle\s*restrict\s*\%(pos\|symm\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<conical\s*p\s*\%([01]\|cylreg\|m\?half\|sph\s*reg\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<cholesky\s*\%(decomp\|solve\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<debye\s*[1-6]\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<ellint\s*\%([defp]\|[ekp]\s*comp\|r[cdfj]\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(expint\s*\%(3\|e[12in]\)\|expm1\|exprel[2n]\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<fermi\s*dirac\s*\%([012]\|3\?half\|inc0\|int\|m1\|mhalf\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<fft\s*\%(complex\s*\)\?\%(forward\|backward\|inverse\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(gegenpoly\|laguerre\)\s*[123n]\s*real\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<lambert\s*\%(w0\|wm1\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<legendre\s*\%(h3d\%([01]\)\?\|p[123l]\|q[01l]\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<pseudo\s*inv\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<psi\s*\%(1\%(\s*int\|\s*piy\)\?\|int\|n\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<synchrotron\s*[12]\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<taylor\s*coeff\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<transport\s*[2-5]\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<zeta\%(\s*m1\)\?\%(\s*int\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(chi\|ci\|clausen\|dawson\|digamma\|dilog\|\%(ln\s*\)\?doublefact\|eta\|eta\s*int\|hermite\s*func\|hypot\|hzeta\|laplace\|shi\|si\|sinc\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<ln1\s*\%(plusx\%(mx\)\?\)\?\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(compl\s*\)\?\%(matrix\|vector\)\s*echo\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<print\s*\%(matrix\|vector\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(complex\s*\)\?lu\s*\%(decomp\|det\|inv\|solve\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<left\s*columns\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(ols\|tls\|pcacv\|pcasvd\|pcr\|pls[12]\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<\%(ln\s*poch\|poch\s*\%(rel\)\?\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<qr\s*\%(decomp\|\%(ls\s*\)\?solve\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<svd\s*\%(decomp\|solve\)\>\%(\s*[a-z0-9]\)\@!"
" Functions from R Mathlib
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpqr]n\?\s*binom\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*\%(di\|tri\|tetra\|penta\|psi\)\s*gamma\>\%(\s*[a-z0-9]\)\@!"
" note: Genie documents 'r rn chisq' but it's missing in the code?
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpqr]n\?\s*chisq\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpqr]\%(\s*n\)\?\s*f\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpq]\%(\s*n\)\?\s*t\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpqr]\s*\%(l\s*\)\?norm\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[dpqr]\s*\%(beta\|cauchy\|exp\|geom\|hyper\|logis\|pois\|sign\s*rank\|t\|unif\|weibull\|wilcox\)\>\%(\s*[a-z0-9]\)\@!"
syn match algol68Function "\%(\%([a-z_]\|\l\d\+\)\s\+\)\@8<!\<r\s*[pq]\s*tu\s*key\>\%(\s*[a-z0-9]\)\@!"
endif
" Define the default highlighting.
hi def link algol68Boolean Boolean
hi def link algol68Comment Comment
hi def link algol68Conditional Conditional
hi def link algol68Constant Constant
hi def link algol68Float Float
hi def link algol68Function Function
hi def link algol68Label Label
hi def link algol68MatrixDelimiter Identifier
hi def link algol68HexNumber Number
hi def link algol68Number Number
hi def link algol68Operator Operator
hi def link algol68Predefined Identifier
hi def link algol68PreProc PreProc
hi def link algol68Repeat Repeat
hi def link algol68SpaceError Error
hi def link algol68Statement Statement
hi def link algol68String String
hi def link algol68StringEscape Special
hi def link algol68Struct algol68Statement
hi def link algol68SymbolOperator algol68Operator
hi def link algol68Todo Todo
hi def link algol68Type Type
hi def link algol68ShowTab Error
let b:current_syntax = "algol68"
" vim: ts=8 sw=2

View File

@@ -3,6 +3,8 @@
" Maintainer: Michael Wong
" https://github.com/mmikeww/autohotkey.vim
" Latest Revision: 2022-07-25
" Last Change:
" 2026 Apr 20 by Vim project: remove wrong oneline keyword #20018
" Previous Maintainers: SungHyun Nam <goweol@gmail.com>
" Nikolai Weibull <now@bitwi.se>
@@ -35,7 +37,6 @@ syn region autohotkeyString
syn match autohotkeyVariable
\ display
\ oneline
\ contains=autohotkeyBuiltinVariable
\ keepend
\ '%\S\{-}%'
@@ -123,7 +124,7 @@ syn keyword autohotkeyCommand
syn keyword autohotkeyFunction
\ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
\ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage
\ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage
\ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
\ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
\ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen

View File

@@ -2,6 +2,7 @@
" Language: Debian autopkgtest control files
" Maintainer: Debian Vim Maintainers
" Last Change: 2025 Jul 05
" 2026 May 05 by Vim project: fix typos
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/autopkgtest.vim
"
" Specification of the autopkgtest format is available at:
@@ -31,10 +32,10 @@ syn match autopkgtestTests contained "[a-z0-9][a-z0-9+.-]\+\%(,\=\s*[a-z0-9][a-z
syn match autopkgtestArbitrary contained "[^#]*"
syn keyword autopkgtestRestrictions contained
\ allow-stderr
\ breaks-testbe
\ build-neede
\ breaks-testbed
\ build-needed
\ flaky
\ hint-testsuite-trigger
\ hint-testsuite-triggers
\ isolation-container
\ isolation-machine
\ needs-internet
@@ -43,10 +44,11 @@ syn keyword autopkgtestRestrictions contained
\ needs-sudo
\ rw-build-tree
\ skip-foreign-architecture
\ skip-not-installable
\ skippable
\ superficial
syn keyword autopkgtestDeprecatedRestrictions contained needs-recommends
syn keyword autopkgtestDeprecatedRestrictions contained
\ needs-recommends
\ skip-not-installable
syn match autopkgtestFeatures contained 'test-name=[^, ]*\%([, ]*[^, #]\)*,\='
syn match autopkgtestDepends contained '\%(@builddeps@\|@recommends@\|@\)'

View File

@@ -5,8 +5,12 @@
" Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
" File Types: .cabal
" Last Change: 22 Oct 2022
"
" 2026 Apr 29 by Léana: add missing haskell language editions
" 2026 Apr 20 by Vim project: remove wrong oneline keyword #20018
"
" v1.6: Added support for foreign-libraries
" Added highlighting for various fields
" Added highlighting for various fields
" v1.5: Incorporated changes from
" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
" Use `syn keyword` instead of `syn match`.
@@ -25,7 +29,7 @@
" Cabal known compiler are highlighted too.
"
" V1.2: Added cpp-options which was missing. Feature implemented
" by GHC, found with a GHC warning, but undocumented.
" by GHC, found with a GHC warning, but undocumented.
" Whatever...
"
" v1.1: Fixed operator problems and added ftdetect file
@@ -186,19 +190,20 @@ syn match cabalVersionRegionA
\ contains=cabalVersionOperator,cabalVersion
\ keepend
\ /\%(==\|\^\?>=\|<=\|<\|>\)\s*\d\+\%(\.\d\+\)*\%(\.\*\)\?\>/
" version inside `version: ...`
" version inside `version: ...`
syn match cabalVersionRegionB
\ contains=cabalStatementRegion,cabalVersionOperator,cabalVersion
\ /^\s*\%(cabal-\)\?version\s*:.*$/
syn keyword cabalLanguage Haskell98 Haskell2010
" See the following link for all Haskell language editions supported by Cabal.
" https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#pkg-field-default-language
syn keyword cabalLanguage Haskell98 Haskell2010 GHC2021 GHC2024
" title region
syn match cabalName contained /:\@<=.*/
syn match cabalNameRegion
\ contains=cabalStatementRegion,cabalName
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*name\s*:.*$/
" author region
@@ -206,7 +211,6 @@ syn match cabalAuthor contained /:\@<=.*/
syn match cabalAuthorRegion
\ contains=cabalStatementRegion,cabalStatement,cabalAuthor
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*author\s*:.*$/
" maintainer region
@@ -214,7 +218,6 @@ syn match cabalMaintainer contained /:\@<=.*/
syn match cabalMaintainerRegion
\ contains=cabalStatementRegion,cabalStatement,cabalMaintainer
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*maintainer\s*:.*$/
" license region
@@ -222,7 +225,6 @@ syn match cabalLicense contained /:\@<=.*/
syn match cabalLicenseRegion
\ contains=cabalStatementRegion,cabalStatement,cabalLicense
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*license\s*:.*$/
" license-file region
@@ -230,7 +232,6 @@ syn match cabalLicenseFile contained /:\@<=.*/
syn match cabalLicenseFileRegion
\ contains=cabalStatementRegion,cabalStatement,cabalLicenseFile
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*license-file\s*:.*$/
" tested-with region with compilers and versions
@@ -238,7 +239,6 @@ syn keyword cabalCompiler contained ghc nhc yhc hugs hbc helium jhc lhc
syn match cabalTestedWithRegion
\ contains=cabalStatementRegion,cabalStatement,cabalCompiler,cabalVersionRegionA
\ nextgroup=cabalStatementRegion
\ oneline
\ /^\c\s*tested-with\s*:.*$/
" build type keywords

View File

@@ -1,6 +1,7 @@
" dockerfile.vim - Syntax highlighting for Dockerfiles
" Maintainer: Honza Pokorny <https://honza.ca>
" Last Change: 2024 Dec 20
" 2026 Mar 26 by Vim Project: dockerfileShell comments (#19829)
" License: BSD
" https://docs.docker.com/engine/reference/builder/
@@ -31,7 +32,7 @@ syntax match dockerfileInstruction contained /\v<(SHELL|VOLUME)>/
syntax region dockerfileString contained start=/\v"/ skip=/\v\\./ end=/\v"/
syntax region dockerfileJSON contained keepend start=/\v\[/ skip=/\v\\\_./ end=/\v$/ contains=@JSON
syntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell
syntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_.|^\s*#.*/ end=/\v$/ contains=@Shell
syntax region dockerfileValue contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString
syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/ contains=@Spell

View File

@@ -1860,10 +1860,11 @@ syn keyword vimSynType contained include skipwhite nextgroup=vimSynIncludeClust
syn match vimSynIncludeCluster contained "@[_a-zA-Z0-9]\+\>"
" Syntax: keyword {{{2
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin,vimSynKeyError
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
syn match vimSynKeyError contained "\<oneline\>"
" Syntax: match {{{2
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
@@ -2431,6 +2432,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimSyncError vimError
hi def link vimSynConcealError vimError
hi def link vimSynError vimError
hi def link vimSynKeyError vimError
hi def link vimSynFoldlevelError vimError
hi def link vimSynIskeywordError vimError
hi def link vimSynSpellError vimError

View File

@@ -4,7 +4,7 @@
" Filenames: *.graphql *.graphqls *.gql
" URL: https://github.com/jparise/vim-graphql
" License: MIT <https://opensource.org/license/mit>
" Last Change: 2024 Dec 21
" Last Change: 2026 Apr 21
if !exists('main_syntax')
if exists('b:current_syntax')
@@ -26,8 +26,13 @@ syn match graphqlOperator "\M..." display
syn keyword graphqlBoolean true false
syn keyword graphqlNull null
syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" display
syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+
syn region graphqlString start=+"""+ skip=+\\"""+ end=+"""+
syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=graphqlEscape
syn region graphqlString start=+"""+ skip=+\\"""+ end=+"""+ contains=graphqlEscape
syn match graphqlEscape +\\["\\/bfnrt]+ contained display
syn match graphqlEscape +\\u\x\{4}+ contained display
syn match graphqlEscape +\\u{\x\+}+ contained display
syn match graphqlEscape +\\""\"+ contained display
syn keyword graphqlKeyword repeatable nextgroup=graphqlKeyword skipwhite
syn keyword graphqlKeyword on nextgroup=graphqlType,graphqlDirectiveLocation skipwhite
@@ -45,11 +50,11 @@ syn match graphqlVariable "\<\$\h\w*\>" display
syn match graphqlName "\<\h\w*\>" display
syn match graphqlType "\<_*\u\w*\>" display
" https://spec.graphql.org/October2021/#ExecutableDirectiveLocation
" https://spec.graphql.org/September2025/#ExecutableDirectiveLocation
syn keyword graphqlDirectiveLocation QUERY MUTATION SUBSCRIPTION FIELD
syn keyword graphqlDirectiveLocation FRAGMENT_DEFINITION FRAGMENT_SPREAD
syn keyword graphqlDirectiveLocation INLINE_FRAGMENT VARIABLE_DEFINITION
" https://spec.graphql.org/October2021/#TypeSystemDirectiveLocation
" https://spec.graphql.org/September2025/#TypeSystemDirectiveLocation
syn keyword graphqlDirectiveLocation SCHEMA SCALAR OBJECT FIELD_DEFINITION
syn keyword graphqlDirectiveLocation ARGUMENT_DEFINITION INTERFACE UNION
syn keyword graphqlDirectiveLocation ENUM ENUM_VALUE INPUT_OBJECT
@@ -73,6 +78,7 @@ hi def link graphqlBoolean Boolean
hi def link graphqlNull Keyword
hi def link graphqlNumber Number
hi def link graphqlString String
hi def link graphqlEscape Special
hi def link graphqlDirective PreProc
hi def link graphqlDirectiveLocation Special

View File

@@ -1,18 +1,12 @@
" Vim syntax file
" Language: JavaScript
" Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com>
" URL: http://www.fleiner.com/vim/syntax/javascript.vim
" Changes: (ss) added keywords, reserved words, and other identifiers
" (ss) repaired several quoting and grouping glitches
" (ss) fixed regex parsing issue with multiple qualifiers [gi]
" (ss) additional factoring of keywords, globals, and members
" Last Change: 2022 Jun 09
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
" 2024 Aug 14: fix a few stylistic issues (#15480)
" 2025 Aug 07: as is a reserved keyword (#17912)
" 2025 Sep 24: using is a reserved keyword (Devin Weaver)
" Language: JavaScript
" Maintainer: This runtime file is looking for a maintainer.
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Contributors: Scott Shattuck <ss@technicalpursuit.com>
" Kevin Locke
" LongJohnCoder
" Devin Weaver
" Last Change: 2026 Apr 26
" tuning parameters:
" unlet javaScript_fold
@@ -52,7 +46,14 @@ syn match javaScriptNumber "\<\d\+\(_\d\+\)*[eE][+-]\?\d\+\>"
syn match javaScriptNumber "\<[1-9]\d*\(_\d\+\)*\(\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\)\?\>"
syn match javaScriptNumber "\<\(\d\+\(_\d\+\)*\)\?\.\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\>"
syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\>"
syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
syn region javaScriptRegexpString
\ start=+\%([,(=+]\s*\)\@8<=/[^/*]+
\ skip=+\\\\\|\\/+
\ end=+/[dgimsuvy]\{0,7\}\ze\s*$+
\ end=+/[dgimsuvy]\{0,7\}\ze\s*[+;.,)\]}]+
\ end=+/[dgimsuvy]\{0,7\}\ze\s\+\/+
\ contains=@htmlPreproc,javaScriptComment
\ oneline
syn keyword javaScriptConditional if else switch
syn keyword javaScriptRepeat while for do in of

View File

@@ -2,6 +2,7 @@
" Language: Monk (See-Beyond Technologies)
" Maintainer: Mike Litherland <litherm@ccf.org>
" Last Change: 2012 Feb 03 by Thilo Six
" 2026 Apr 20 by Vim project: remove wrong oneline keyword #20018
" This syntax file is good enough for my needs, but others
" may desire more features. Suggestions and bug reports
@@ -33,8 +34,8 @@ syn case ignore
" Fascist highlighting: everything that doesn't fit the rules is an error...
syn match monkError oneline ![^ \t()";]*!
syn match monkError oneline ")"
syn match monkError ![^ \t()";]*!
syn match monkError ")"
" Quoted and backquoted stuff
@@ -131,51 +132,51 @@ syn keyword monkFunc valid-integer? verify-type
" using variables is a day's work for a trained secretary...
" This is a useful lax approximation:
syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*!
syn match monkNumber "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
syn match monkError ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*!
syn match monkOther oneline ![+-][ \t()";]!me=e-1
syn match monkOther oneline ![+-]$!
syn match monkOther ![+-][ \t()";]!me=e-1
syn match monkOther ![+-]$!
" ... so that a single + or -, inside a quoted context, would not be
" interpreted as a number (outside such contexts, it's a monkFunc)
syn match monkDelimiter oneline !\.[ \t()";]!me=e-1
syn match monkDelimiter oneline !\.$!
syn match monkDelimiter !\.[ \t()";]!me=e-1
syn match monkDelimiter !\.$!
" ... and a single dot is not a number but a delimiter
" Simple literals:
syn match monkBoolean oneline "#[tf]"
syn match monkError oneline !#[tf][^ \t()";]\+!
syn match monkBoolean "#[tf]"
syn match monkError !#[tf][^ \t()";]\+!
syn match monkChar oneline "#\\"
syn match monkChar oneline "#\\."
syn match monkError oneline !#\\.[^ \t()";]\+!
syn match monkChar oneline "#\\space"
syn match monkError oneline !#\\space[^ \t()";]\+!
syn match monkChar oneline "#\\newline"
syn match monkError oneline !#\\newline[^ \t()";]\+!
syn match monkChar "#\\"
syn match monkChar "#\\."
syn match monkError !#\\.[^ \t()";]\+!
syn match monkChar "#\\space"
syn match monkError !#\\space[^ \t()";]\+!
syn match monkChar "#\\newline"
syn match monkError !#\\newline[^ \t()";]\+!
" This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*,
syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
syn match monkOther ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*,
syn match monkError ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
syn match monkOther oneline "\.\.\."
syn match monkError oneline !\.\.\.[^ \t()";]\+!
syn match monkOther "\.\.\."
syn match monkError !\.\.\.[^ \t()";]\+!
" ... a special identifier
syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1
syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
syn match monkConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1
syn match monkConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
syn match monkError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1
syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
syn match monkConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1
syn match monkConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
syn match monkError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
" Monk input and output structures
syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*"
syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*"
syn match monkSyntax "\(\~input\|\[I\]->\)[^ \t]*"
syn match monkFunc "\(\~output\|\[O\]->\)[^ \t]*"
" Non-quoted lists, and strings:

View File

@@ -4,6 +4,7 @@
" Maintainer: Chase Knowlden <haroldknowlden@gmail.com>
" Changes: `git log` is your friend
" Last Change: 2023 Aug 16
" 2026 Apr 16 by Vim project: handle ?. optional chaining #19988
"
" This file is bassed on the original work done by Warwick Allison
" <warwick.allison@nokia.com> whose did about 99% of the work here.
@@ -44,6 +45,7 @@ syn match qmlObjectLiteralType "[A-Za-z][_A-Za-z0-9]*\s*\({\)\@="
syn region qmlTernaryColon start="?" end=":" contains=@qmlExpr,qmlBraces,qmlParens,qmlLineComment
syn match qmlBindingProperty "\<[A-Za-z][_A-Za-z.0-9]*\s*:"
syn match qmlNullishCoalescing "??"
syn match qmlOptionalChaining "?\."
syn keyword qmlConditional if else switch
syn keyword qmlRepeat while for do in

View File

@@ -24,6 +24,7 @@
" 2026 Feb 15 improve comment handling #19414
" 2026 Mar 23 improve matching of function definitions #19638
" 2026 Apr 02 improve matching of function definitions #19849
" 2026 Apr 19 improve detection of special variables #20016
" }}}
" Version: 208
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
@@ -751,13 +752,15 @@ endif
if exists("b:is_bash")
syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOffset
syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList
syn match shDerefSpecial contained "\({!\)\@<=[[:alnum:]*#@_]\+" nextgroup=@shDerefVarList,shDerefOp
endif
if (exists("b:is_kornshell") && !exists("b:is_ksh88"))
syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList
syn match shDerefSpecial contained "\({!\)\@<=[[:alnum:]*#@_]\+" nextgroup=@shDerefVarList,shDerefOp
endif
syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOffset,shDerefOpError
syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
syn match shDerefSpecial contained "\({[#]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList
syn match shDerefVar contained '\d' nextgroup=@shDerefVarList
if exists("b:is_kornshell") || exists("b:is_posix")

View File

@@ -306,13 +306,13 @@ syntax keyword typescriptRepeat do while for nextgroup=typescript
syntax keyword typescriptRepeat for nextgroup=typescriptLoopParen,typescriptAsyncFor skipwhite skipempty
syntax keyword typescriptBranch break continue containedin=typescriptBlock
syntax keyword typescriptCase case nextgroup=@typescriptPrimitive skipwhite containedin=typescriptBlock
syntax keyword typescriptDefault default containedin=typescriptBlock nextgroup=@typescriptValue,typescriptClassKeyword,typescriptInterfaceKeyword skipwhite oneline
syntax keyword typescriptDefault default containedin=typescriptBlock nextgroup=@typescriptValue,typescriptClassKeyword,typescriptInterfaceKeyword skipwhite
syntax keyword typescriptStatementKeyword with
syntax keyword typescriptStatementKeyword yield skipwhite nextgroup=@typescriptValue containedin=typescriptBlock
syntax keyword typescriptTry try
syntax keyword typescriptExceptions throw finally
syntax keyword typescriptExceptions catch nextgroup=typescriptCall skipwhite skipempty oneline
syntax keyword typescriptExceptions catch nextgroup=typescriptCall skipwhite skipempty
syntax keyword typescriptDebugger debugger
syntax keyword typescriptAsyncFor await nextgroup=typescriptLoopParen skipwhite skipempty contained
@@ -1766,9 +1766,9 @@ endif
" patch
" patch for generated code
syntax keyword typescriptGlobal Promise
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments
syntax keyword typescriptGlobal Map WeakMap
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments
syntax keyword typescriptConstructor contained constructor
\ nextgroup=@typescriptCallSignature

View File

@@ -0,0 +1,20 @@
>#+0#0000e05#ffffff0| +0#0000000&@73
| +0#0000e05&@3|V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|a|l|g|o|l|6|8|_|s|y|m|b|o|l|i|c|_|o|p|e|r|a|t|o|r|s| |=| |1| +0#0000000&@19
|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| +0#0000000&@73
| +0#0000e05&@3|A|l|g|o|l| |6|8| |p|r|e|l|u|d|e| |i|d|e|n|t|i|f|i|e|r| |f|r|o|m| |t|h|e| |G|e|n|i|e| |s|o|u|r|c|e| |c|o|d|e| |f|i|l|e|s|.| +0#0000000&@9
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|P|r|o|v|i|d|e|d| |a|s| |a| |b|a|s|e| |t|o| |v|e|r|i|f|y| |t|h|e| |c|o|r@1|e|c|t| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@10
| +0#0000e05&@3|o|f| |t|h|e| |a|l|g|o|l|6|8|.|v|i|m| |s|y|n|t|a|x| |f|i|l|e| |f|o|r| |t|h|e| |V|i|m| |e|d|i|t|o|r|.| +0#0000000&@20
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|T|h|e|r|e|'|s| |f|o|u|r| |s|e|c|t|i|o|n|s|,| |e|a|c|h| |r|e|p|r|e|s|e|n|t|i|n|g| |a|n| |o|r|i|g|i|n|a|l| |f|i|l|e|,| +0#0000000&@12
| +0#0000e05&@3|t|h|a|t| |a|r|e| |e|n|c|l|o|s|e|d| |i|n| |t|h|e| |U|n|i|x|-|'|m|o|r|e|'| |f|o|r|m| |t|o| |s|t|a|n|d| |o|u|t|.| +0#0000000&@15
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|S|o|m|e| |i|n|f|o|r|m|a|l| |c|o|m@1|e|n|t|s| |f|r|o|m| |t|h|e| |s|o|u|r|c|e| |c|o|d|e| |l|e|f|t| |i|n|t|a|c|t| |a|s| +0#0000000&@12
| +0#0000e05&@3|a| |c|o|m@1|e|n|t| |i|n| |A|l|g|o|l| |6|8| |s|y|n|t|a|x|.| +0#0000000&@41
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|D|e|p|e|n|d|i|n|g| |o|n| |t|h|e| |l|a|n|g|u|a|g|e| |c|o|n|t|e|x|t| |t|h|e|r|e|'|s| |d|u|p|l|i|c|a|t|e|s| |i|n| |t|h|e| +0#0000000&@11
| +0#0000e05&@3|l|i|s|t|,| |t|h|a|t| |a|r|e| |k|e|p|t| |f|o|r| |c|l|a|r|i|t|y| |g|i|v|e|n| |t|h|e| |a|s@1|o|c|i|a|t|e|d| |i|n|f|o|r|m|a|l| +0#0000000&@9
| +0#0000e05&@3|c|o|m@1|e|n|t| |a|s@1|o|c|i|a|t|e|d| |w|i|t|h| |t|h|e|m|.| +0#0000000&@41
| +0#0000e05&@3| +0#0000000&@70
@57|1|,|1| @10|T|o|p|

View File

@@ -0,0 +1,20 @@
| +0#0000e05#ffffff0@3|a| |c|o|m@1|e|n|t| |i|n| |A|l|g|o|l| |6|8| |s|y|n|t|a|x|.| +0#0000000&@41
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|D|e|p|e|n|d|i|n|g| |o|n| |t|h|e| |l|a|n|g|u|a|g|e| |c|o|n|t|e|x|t| |t|h|e|r|e|'|s| |d|u|p|l|i|c|a|t|e|s| |i|n| |t|h|e| +0#0000000&@11
| +0#0000e05&@3|l|i|s|t|,| |t|h|a|t| |a|r|e| |k|e|p|t| |f|o|r| |c|l|a|r|i|t|y| |g|i|v|e|n| |t|h|e| |a|s@1|o|c|i|a|t|e|d| |i|n|f|o|r|m|a|l| +0#0000000&@9
| +0#0000e05&@3|c|o|m@1|e|n|t| |a|s@1|o|c|i|a|t|e|d| |w|i|t|h| |t|h|e|m|.| +0#0000000&@41
| +0#0000e05&@2> | +0#0000000&@70
| +0#0000e05&@3|S|o|m|e| |e|n|t|r|i|e|s| |d|e|l|i|b|e|r|a|t|e|l|y| |c|o|n|t|a|i|n| |t|w|o| |i|d|e|n|t|i|f|i|e|r| |v|a|r|i|a|n|t|s| |t|h|a|t| +0#0000000&@8
| +0#0000e05&@3|m|a|y| |b|e| |u|s|e|d| |a|s| |a|l|t|e|r|n|a|t|i|v|e| |f|o|r|m| |i|n| |a|n| |A|l|g|o|l| |6|8| |G|e|n|i|e| |p|r|o|g|r|a|m|.| +0#0000000&@9
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|T|h|e| |i|d|e|n|t|i|f|i|e|r|s| |a|r|e| |p|r|e|s|e|n|t|e|d| |i|n| |t|w|o| |v|a|r|i|a|n|t|s| |s|e|p|a|r|a|t|e|d| |b|y| |a| +0#0000000&@10
| +0#0000e05&@3|t|a|b|u|l|a|t|o|r|;| |f|i|r|s|t| |w|i|t|h| |s|p|a|c|e|s|,| |t|h|e|n| |i|n| |c|a|n|o|n|i|c|a|l| |f|o|r|m| |w|i|t|h|o|u|t| +0#0000000&@10
| +0#0000e05&@3|s|p|a|c|e|s|.| |V|a|r|i|a|n|t|s| |w|i|t|h| |s|p|a|c|e|s| |a|r|e| |s|u|p@1|o|r|t|e|d| |b|y| |t|h|e| |V|i|m| |s|y|n|t|a|x| +0#0000000&@10
| +0#0000e05&@3|f|i|l|e| |a|s| |t|h|e| |A|l|g|o|l| |6|8| |l|a|n|g|u|a|g|e| |d|o|e|s|.| +0#0000000&@35
| +0#0000e05&@3|B|u|t| |n|o|t|e| |t|h|a|t| |w|h|i|l|e| |A|l|g|o|l| |6|8| |a|l@1|o|w|s| |a|r|b|i|t|r|a|r|y| |s|p|a|c|i|n|g| |w|i|t|h|i|n| +0#0000000&@10
| +0#0000e05&@3|i|d|e|n|t|i|f|i|e|r|s| |-| |e|v|e|n| |a|s| |e|x|t|r|e|m|e| |a|s| |w|r|i|t|i|n|g| |o|n|e| |c|h|a|r|a|c|t|e|r| |p|e|r| +0#0000000&@12
| +0#0000e05&@3|l|i|n|e|!| |-| |t|h|e| |V|i|m| |s|y|n|t|a|x| |f|i|l|e| |f|o|r| |A|l|g|o|l| |6|8| |h|a|d| |d|e|l|i|b|e|r|a|t|e|l|y| +0#0000000&@13
| +0#0000e05&@3|b|e@1|n| |d|e|f|i|n|e|d| |i|n| |a| |w|a|y| |r|e|s|t|r|i|c|t|i|n|g| |t|h|e| |h|i|g|h|l|i|g|h|t|e|d| |o|p|t|i|o|n|s|;| +0#0000000&@12
| +0#0000e05&@3|s|p|a|c|i|n|g| |c|a|n| |u|s|u|a|l@1|y| |b|e| |i|n|s|e|r|t|e|d| |w|h|e|r|e| |"|n|a|t|u|r|a|l| |w|o|r|d|s|"| |w|o|u|l|d| +0#0000000&@11
| +0#0000e05&@3|a|l@1|o|w| |a| |s|e|p|a|r|a|t|i|o|n| |(|s|a|y| |f|o|r| |'|i|n|t|w|i|d|t|h|'| |y|o|u| |m|a|y| |w|r|i|t|e|,| |e|.|g|.|,| +0#0000000&@11
@57|1|9|,|4| @10|0|%|

View File

@@ -0,0 +1,20 @@
| +0#0000e05#ffffff0@3|a|l@1|o|w| |a| |s|e|p|a|r|a|t|i|o|n| |(|s|a|y| |f|o|r| |'|i|n|t|w|i|d|t|h|'| |y|o|u| |m|a|y| |w|r|i|t|e|,| |e|.|g|.|,| +0#0000000&@11
| +0#0000e05&@3|'|i|n|t| |w|i|d|t|h|'| |b|u|t| |n|o|t| |'|i|n|t| |w|i|d| |t|h|'|;| |t|h|e| |l|a|t@1|e|r| |w|o|u|l|d| |n|o|t| |g|e|t| +0#0000000&@12
| +0#0000e05&@3|h|i|g|h|l|i|g|h|t|e|d|)|.| +0#0000000&@57
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|M|o|d|e|l|i|n|e|s| |a|r|e| |s|e|t| |t|o| |s|i|m|p|l|y| |i|n|s|p|e|c|t| |t|h|e| |c|o|r@1|e|c|t| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@10
| +0#0000e05&@3>i|n| |t|h|i|s| |f|i|l|e|.| +0#0000000&@57
| +0#0000e05&@3| +0#0000000&@70
| +0#0000e05&@3|J|a|n|i|s| |P|a|p|a|n|a|g|n|o|u|,| |2|0|2|6|-|0|4|-|2|3| +0#0000000&@42
|#+0#0000e05&| +0#0000000&@73
@75
|#+0#0000e05&|:@12| +0#0000000&@60
|p+0#0000e05&|r|e|l|u|d|e|.|c| +0#0000000&@65
|:+0#0000e05&@12|#| +0#0000000&@60
@75
|#+0#0000e05&| |P|r|i|m|i|t|i|v|e| |A|6|8| |m|o|i|d|s|.| |#| +0#0000000&@50
@2|V+0#00e0003&|O|I|D| +0#0000000&@41|V+0#00e0003&|O|I|D| +0#0000000&@22
|#+0#0000e05&| |S|t|a|n|d|a|r|d| |p|r|e|c|i|s|i|o|n|.| |#| +0#0000000&@51
@2|I+0#00e0003&|N|T| +0#0000000&@42|I+0#00e0003&|N|T| +0#0000000&@23
@2|R+0#00e0003&|E|A|L| +0#0000000&@41|R+0#00e0003&|E|A|L| +0#0000000&@22
@57|3|7|,|5| @10|1|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|R+0#00e0003&|E|A|L| +0#0000000&@41|R+0#00e0003&|E|A|L| +0#0000000&@22
@2|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@38|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@19
@2|C+0#00e0003&|O|M|P|L| +0#0000000&@40|C+0#00e0003&|O|M|P|L| +0#0000000&@21
@2|B+0#00e0003&|I|T|S| +0#0000000&@41|B+0#00e0003&|I|T|S| +0#0000000&@22
@2|B+0#00e0003&|Y|T|E|S| +0#0000000&@40|B+0#00e0003&|Y|T|E|S| +0#0000000&@21
>#+0#0000e05&| |M|u|l|t|i|p|l|e| |p|r|e|c|i|s|i|o|n|.| |#| +0#0000000&@51
@2|I+0#00e0003&|N|T| +0#0000000&@42|I+0#00e0003&|N|T| +0#0000000&@23
@2|R+0#00e0003&|E|A|L| +0#0000000&@41|R+0#00e0003&|E|A|L| +0#0000000&@22
@2|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@38|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@19
@2|C+0#00e0003&|O|M|P|L| +0#0000000&@40|C+0#00e0003&|O|M|P|L| +0#0000000&@21
@2|B+0#00e0003&|I|T|S| +0#0000000&@41|B+0#00e0003&|I|T|S| +0#0000000&@22
@2|B+0#00e0003&|Y|T|E|S| +0#0000000&@40|B+0#00e0003&|Y|T|E|S| +0#0000000&@21
@2|R+0#00e0003&|E|A|L| +0#0000000&@41|R+0#00e0003&|E|A|L| +0#0000000&@22
@2|I+0#00e0003&|N|T| +0#0000000&@42|I+0#00e0003&|N|T| +0#0000000&@23
@2|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@38|C+0#00e0003&|O|M|P|L|E|X| +0#0000000&@19
@2|C+0#00e0003&|O|M|P|L| +0#0000000&@40|C+0#00e0003&|O|M|P|L| +0#0000000&@21
@2|B+0#00e0003&|I|T|S| +0#0000000&@41|B+0#00e0003&|I|T|S| +0#0000000&@22
|#+0#0000e05&| |O|t|h|e|r|.| |#| +0#0000000&@64
@2|B+0#00e0003&|O@1|L| +0#0000000&@41|B+0#00e0003&|O@1|L| +0#0000000&@22
@57|5@1|,|1| @10|2|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|B+0#00e0003&|O@1|L| +0#0000000&@41|B+0#00e0003&|O@1|L| +0#0000000&@22
@2|C+0#00e0003&|H|A|R| +0#0000000&@41|C+0#00e0003&|H|A|R| +0#0000000&@22
@2|S+0#00e0003&|T|R|I|N|G| +0#0000000&@39|S+0#00e0003&|T|R|I|N|G| +0#0000000&@20
@2|F+0#00e0003&|I|L|E| +0#0000000&@41|F+0#00e0003&|I|L|E| +0#0000000&@22
@2|C+0#00e0003&|H|A|N@1|E|L| +0#0000000&@38|C+0#00e0003&|H|A|N@1|E|L| +0#0000000&@19
@2>P+0#00e0003&|I|P|E| +0#0000000&@41|P+0#00e0003&|I|P|E| +0#0000000&@22
@2|F+0#00e0003&|O|R|M|A|T| +0#0000000&@39|F+0#00e0003&|O|R|M|A|T| +0#0000000&@20
@2|S+0#00e0003&|E|M|A| +0#0000000&@41|S+0#00e0003&|E|M|A| +0#0000000&@22
@2|S+0#00e0003&|O|U|N|D| +0#0000000&@40|S+0#00e0003&|O|U|N|D| +0#0000000&@21
|#+0#0000e05&| |I|d|e|n|t|i|f|i|e|r|s|.| |#| +0#0000000&@58
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |p|i|;+0#0000000&| @1|q+0#00e0e07&|p|i|;+0#0000000&| @26|l+0#00e0e07&|o|n|g|l|o|n|g|p|i|;+0#0000000&| @1|q+0#00e0e07&|p|i| +0#0000000&@10
|#+0#0000e05&| |#| +0#0000000&@71
@2|b+0#00e0e07&|i|t|s| |l|e|n|g|t|h|s|;+0#0000000&| @32|b+0#00e0e07&|i|t|s|l|e|n|g|t|h|s| +0#0000000&@15
@2|b+0#00e0e07&|i|t|s| |s|h|o|r|t|h|s|;+0#0000000&| @32|b+0#00e0e07&|i|t|s@1|h|o|r|t|h|s| +0#0000000&@15
@2|b+0#00e0e07&|i|t|s| |w|i|d|t|h|;+0#0000000&| @34|b+0#00e0e07&|i|t|s|w|i|d|t|h| +0#0000000&@17
@2|b+0#00e0e07&|y|t|e|s| |l|e|n|g|t|h|s|;+0#0000000&| @31|b+0#00e0e07&|y|t|e|s|l|e|n|g|t|h|s| +0#0000000&@14
@2|b+0#00e0e07&|y|t|e|s| |s|h|o|r|t|h|s|;+0#0000000&| @31|b+0#00e0e07&|y|t|e|s@1|h|o|r|t|h|s| +0#0000000&@14
@2|b+0#00e0e07&|y|t|e|s| |w|i|d|t|h|;+0#0000000&| @33|b+0#00e0e07&|y|t|e|s|w|i|d|t|h| +0#0000000&@16
@2|c+0#00e0e07&|o|m|p|l| |l|e|n|g|t|h|s|;+0#0000000&| @31|c+0#00e0e07&|o|m|p|l@1|e|n|g|t|h|s| +0#0000000&@14
@57|7|3|,|3| @10|3|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|o|m|p|l| |l|e|n|g|t|h|s|;+0#0000000&| @31|c+0#00e0e07&|o|m|p|l@1|e|n|g|t|h|s| +0#0000000&@14
@2|c+0#00e0e07&|o|m|p|l| |s|h|o|r|t|h|s|;+0#0000000&| @31|c+0#00e0e07&|o|m|p|l|s|h|o|r|t|h|s| +0#0000000&@14
@2|e+0#00e0e07&|x|p| |w|i|d|t|h|;+0#0000000&| @35|e+0#00e0e07&|x|p|w|i|d|t|h| +0#0000000&@18
@2|i+0#00e0e07&|n|f|i|n|i|t|y|;+0#0000000&| @36|i+0#00e0e07&|n|f|i|n|i|t|y| +0#0000000&@18
@2|i+0#00e0e07&|n|f|;+0#0000000&| @41|i+0#00e0e07&|n|f| +0#0000000&@23
@2>i+0#00e0e07&|n|t| |l|e|n|g|t|h|s|;+0#0000000&| @33|i+0#00e0e07&|n|t|l|e|n|g|t|h|s| +0#0000000&@16
@2|i+0#00e0e07&|n|t| |s|h|o|r|t|h|s|;+0#0000000&| @33|i+0#00e0e07&|n|t|s|h|o|r|t|h|s| +0#0000000&@16
@2|i+0#00e0e07&|n|t| |w|i|d|t|h|;+0#0000000&| @35|i+0#00e0e07&|n|t|w|i|d|t|h| +0#0000000&@18
@2|l+0#00e0e07&|o|n|g| |b|i|t|s| |w|i|d|t|h|;+0#0000000&| @29|l+0#00e0e07&|o|n|g|b|i|t|s|w|i|d|t|h| +0#0000000&@13
@2|l+0#00e0e07&|o|n|g| |b|y|t|e|s| |w|i|d|t|h|;+0#0000000&| @28|l+0#00e0e07&|o|n|g|b|y|t|e|s|w|i|d|t|h| +0#0000000&@12
@2|l+0#00e0e07&|o|n|g| |e|x|p| |w|i|d|t|h|;+0#0000000&| @30|l+0#00e0e07&|o|n|g|e|x|p|w|i|d|t|h| +0#0000000&@14
@2|l+0#00e0e07&|o|n|g| |i|n|t| |w|i|d|t|h|;+0#0000000&| @30|l+0#00e0e07&|o|n|g|i|n|t|w|i|d|t|h| +0#0000000&@14
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |e|x|p|w|i|d|t|h|;+0#0000000&| @26|l+0#00e0e07&|o|n|g|l|o|n|g|e|x|p|w|i|d|t|h| +0#0000000&@10
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |i|n|f|i|n|i|t|y|;+0#0000000&| @26|l+0#00e0e07&|o|n|g|l|o|n|g|i|n|f|i|n|i|t|y| +0#0000000&@10
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |i|n|f|;+0#0000000&| @31|l+0#00e0e07&|o|n|g|l|o|n|g|i|n|f| +0#0000000&@15
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |i|n|t|w|i|d|t|h|;+0#0000000&| @26|l+0#00e0e07&|o|n|g|l|o|n|g|i|n|t|w|i|d|t|h| +0#0000000&@10
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|a|x|i|n|t|;+0#0000000&| @28|l+0#00e0e07&|o|n|g|l|o|n|g|m|a|x|i|n|t| +0#0000000&@12
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|a|x|r|e|a|l|;+0#0000000&| @27|l+0#00e0e07&|o|n|g|l|o|n|g|m|a|x|r|e|a|l| +0#0000000&@11
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|i|n|i|n|f|;+0#0000000&| @28|l+0#00e0e07&|o|n|g|l|o|n|g|m|i|n|i|n|f| +0#0000000&@12
@57|9|1|,|3| @10|4|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|i|n|i|n|f|;+0#0000000&| @28|l+0#00e0e07&|o|n|g|l|o|n|g|m|i|n|i|n|f| +0#0000000&@12
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|i|n|r|e|a|l|;+0#0000000&| @27|l+0#00e0e07&|o|n|g|l|o|n|g|m|i|n|r|e|a|l| +0#0000000&@11
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |m|i|n|u|s| |i|n|f|i|n|i|t|y|;+0#0000000&| @20|l+0#00e0e07&|o|n|g|l|o|n|g|m|i|n|u|s|i|n|f|i|n|i|t|y| +0#0000000&@5
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |r|e|a|l| |w|i|d|t|h|;+0#0000000&| @24|l+0#00e0e07&|o|n|g|l|o|n|g|r|e|a|l|w|i|d|t|h| +0#0000000&@9
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |s|m|a|l@1| |r|e|a|l|;+0#0000000&| @24|l+0#00e0e07&|o|n|g|l|o|n|g|s|m|a|l@1|r|e|a|l| +0#0000000&@9
@2>l+0#00e0e07&|o|n|g| |r|e|a|l| |w|i|d|t|h|;+0#0000000&| @29|l+0#00e0e07&|o|n|g|r|e|a|l|w|i|d|t|h| +0#0000000&@13
@2|m+0#00e0e07&|a|x| |a|b|s| |c|h|a|r|;+0#0000000&| @32|m+0#00e0e07&|a|x|a|b|s|c|h|a|r| +0#0000000&@16
@2|m+0#00e0e07&|a|x| |b|i|t|s|;+0#0000000&| @36|m+0#00e0e07&|a|x|b|i|t|s| +0#0000000&@19
@2|m+0#00e0e07&|a|x| |i|n|t|;+0#0000000&| @37|m+0#00e0e07&|a|x|i|n|t| +0#0000000&@20
@2|m+0#00e0e07&|a|x| |r|e|a|l|;+0#0000000&| @36|m+0#00e0e07&|a|x|r|e|a|l| +0#0000000&@19
@2|m+0#00e0e07&|i|n| |i|n|f|;+0#0000000&| @37|m+0#00e0e07&|i|n|i|n|f| +0#0000000&@20
@2|m+0#00e0e07&|i|n| |r|e|a|l|;+0#0000000&| @36|m+0#00e0e07&|i|n|r|e|a|l| +0#0000000&@19
@2|m+0#00e0e07&|i|n|u|s| |i|n|f|i|n|i|t|y|;+0#0000000&| @30|m+0#00e0e07&|i|n|u|s|i|n|f|i|n|i|t|y| +0#0000000&@13
@2|m+0#00e0e07&|p|r|a|d|i|x|;+0#0000000&| @37|m+0#00e0e07&|p|r|a|d|i|x| +0#0000000&@19
@2|n+0#00e0e07&|a|n|;+0#0000000&| @41|n+0#00e0e07&|a|n| +0#0000000&@23
@2|p+0#00e0e07&|i|;+0#0000000&| @42|p+0#00e0e07&|i| +0#0000000&@24
@2|r+0#00e0e07&|e|a|l| |l|e|n|g|t|h|s|;+0#0000000&| @32|r+0#00e0e07&|e|a|l@1|e|n|g|t|h|s| +0#0000000&@15
@2|r+0#00e0e07&|e|a|l| |s|h|o|r|t|h|s|;+0#0000000&| @32|r+0#00e0e07&|e|a|l|s|h|o|r|t|h|s| +0#0000000&@15
@2|r+0#00e0e07&|e|a|l| |w|i|d|t|h|;+0#0000000&| @34|r+0#00e0e07&|e|a|l|w|i|d|t|h| +0#0000000&@17
@57|1|0|9|,|3| @9|4|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|r+0#00e0e07&|e|a|l| |w|i|d|t|h|;+0#0000000&| @34|r+0#00e0e07&|e|a|l|w|i|d|t|h| +0#0000000&@17
@2|s+0#00e0e07&|m|a|l@1| |r|e|a|l|;+0#0000000&| @34|s+0#00e0e07&|m|a|l@1|r|e|a|l| +0#0000000&@17
@2|c+0#00e0e07&|l|o|c|k|;+0#0000000&| @39|c+0#00e0e07&|l|o|c|k| +0#0000000&@21
@2|c+0#00e0e07&|p|u| |t|i|m|e|;+0#0000000&| @36|c+0#00e0e07&|p|u|t|i|m|e| +0#0000000&@19
@2|s+0#00e0e07&|e|c|o|n|d|s|;+0#0000000&| @37|s+0#00e0e07&|e|c|o|n|d|s| +0#0000000&@19
@2>w+0#00e0e07&|a|l@1| |c|l|o|c|k|;+0#0000000&| @34|w+0#00e0e07&|a|l@1|c|l|o|c|k| +0#0000000&@17
@2|w+0#00e0e07&|a|l@1| |s|e|c|o|n|d|s|;+0#0000000&| @32|w+0#00e0e07&|a|l@1|s|e|c|o|n|d|s| +0#0000000&@15
@2|w+0#00e0e07&|a|l@1| |t|i|m|e|;+0#0000000&| @35|w+0#00e0e07&|a|l@1|t|i|m|e| +0#0000000&@18
@2|b+0#00e0e07&|l|o|c|k|s|;+0#0000000&| @38|b+0#00e0e07&|l|o|c|k|s| +0#0000000&@20
@2|c+0#00e0e07&|o|l@1|e|c|t|i|o|n|s|;+0#0000000&| @33|c+0#00e0e07&|o|l@1|e|c|t|i|o|n|s| +0#0000000&@15
@2|c+0#00e0e07&|o|l@1|e|c|t| |s|e|c|o|n|d|s|;+0#0000000&| @29|c+0#00e0e07&|o|l@1|e|c|t|s|e|c|o|n|d|s| +0#0000000&@12
@2|g+0#00e0e07&|a|r|b|a|g|e|;+0#0000000&| @37|g+0#00e0e07&|a|r|b|a|g|e| +0#0000000&@19
@2|g+0#00e0e07&|a|r|b|a|g|e| |c|o|l@1|e|c|t|i|o|n|s|;+0#0000000&| @25|g+0#00e0e07&|a|r|b|a|g|e|c|o|l@1|e|c|t|i|o|n|s| +0#0000000&@8
@2|g+0#00e0e07&|a|r|b|a|g|e| |f|r|e@1|d|;+0#0000000&| @31|g+0#00e0e07&|a|r|b|a|g|e|f|r|e@1|d| +0#0000000&@14
@2|g+0#00e0e07&|a|r|b|a|g|e| |r|e|f|u|s|e|d|;+0#0000000&| @29|g+0#00e0e07&|a|r|b|a|g|e|r|e|f|u|s|e|d| +0#0000000&@12
@2|g+0#00e0e07&|a|r|b|a|g|e| |s|e|c|o|n|d|s|;+0#0000000&| @29|g+0#00e0e07&|a|r|b|a|g|e|s|e|c|o|n|d|s| +0#0000000&@12
@2|o+0#00e0e07&|n| |g|c| |e|v|e|n|t|;+0#0000000&| @33|o+0#00e0e07&|n|g|c|e|v|e|n|t| +0#0000000&@17
@2|s+0#00e0e07&|w|e@1|p|s|;+0#0000000&| @38|s+0#00e0e07&|w|e@1|p|s| +0#0000000&@20
@2|s+0#00e0e07&|w|e@1|p|s| |r|e|f|u|s|e|d|;+0#0000000&| @30|s+0#00e0e07&|w|e@1|p|s|r|e|f|u|s|e|d| +0#0000000&@13
@57|1|2|7|,|3| @9|5|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|s+0#00e0e07&|w|e@1|p|s| |r|e|f|u|s|e|d|;+0#0000000&| @30|s+0#00e0e07&|w|e@1|p|s|r|e|f|u|s|e|d| +0#0000000&@13
@2|s+0#00e0e07&|t|a|c|k| |p|o|i|n|t|e|r|;+0#0000000&| @31|s+0#00e0e07&|t|a|c|k|p|o|i|n|t|e|r| +0#0000000&@14
@2|s+0#00e0e07&|y|s|t|e|m| |s|t|a|c|k| |p|o|i|n|t|e|r|;+0#0000000&| @24|s+0#00e0e07&|y|s|t|e|m|s|t|a|c|k|p|o|i|n|t|e|r| +0#0000000&@8
@2|s+0#00e0e07&|y|s|t|e|m| |s|t|a|c|k| |s|i|z|e|;+0#0000000&| @27|s+0#00e0e07&|y|s|t|e|m|s|t|a|c|k|s|i|z|e| +0#0000000&@11
@2|a+0#00e0e07&|c|t|u|a|l| |s|t|a|c|k| |s|i|z|e|;+0#0000000&| @27|a+0#00e0e07&|c|t|u|a|l|s|t|a|c|k|s|i|z|e| +0#0000000&@11
@2>h+0#00e0e07&|e|a|p| |p|o|i|n|t|e|r|;+0#0000000&| @32|h+0#00e0e07&|e|a|p@1|o|i|n|t|e|r| +0#0000000&@15
@2|s+0#00e0e07&|y|s|t|e|m| |h|e|a|p| |p|o|i|n|t|e|r|;+0#0000000&| @25|s+0#00e0e07&|y|s|t|e|m|h|e|a|p@1|o|i|n|t|e|r| +0#0000000&@9
@2|g+0#00e0e07&|c| |h|e|a|p|;+0#0000000&| @37|g+0#00e0e07&|c|h|e|a|p| +0#0000000&@20
@2|s+0#00e0e07&|w|e@1|p| |h|e|a|p|;+0#0000000&| @34|s+0#00e0e07&|w|e@1|p|h|e|a|p| +0#0000000&@17
@2|p+0#00e0e07&|r|e@1|m|p|t|i|v|e| |g|c|;+0#0000000&| @31|p+0#00e0e07&|r|e@1|m|p|t|i|v|e|g|c| +0#0000000&@14
@2|p+0#00e0e07&|r|e@1|m|p|t|i|v|e| |s|w|e@1|p|;+0#0000000&| @28|p+0#00e0e07&|r|e@1|m|p|t|i|v|e|s|w|e@1|p| +0#0000000&@11
@2|p+0#00e0e07&|r|e@1|m|p|t|i|v|e| |s|w|e@1|p|h|e|a|p|;+0#0000000&| @24|p+0#00e0e07&|r|e@1|m|p|t|i|v|e|s|w|e@1|p|h|e|a|p| +0#0000000&@7
@2|b+0#00e0e07&|a|c|k|t|r|a|c|e|;+0#0000000&| @35|b+0#00e0e07&|a|c|k|t|r|a|c|e| +0#0000000&@17
@2|b+0#00e0e07&|r|e|a|k|;+0#0000000&| @39|b+0#00e0e07&|r|e|a|k| +0#0000000&@21
@2|d+0#00e0e07&|e|b|u|g|;+0#0000000&| @39|d+0#00e0e07&|e|b|u|g| +0#0000000&@21
@2|m+0#00e0e07&|o|n|i|t|o|r|;+0#0000000&| @37|m+0#00e0e07&|o|n|i|t|o|r| +0#0000000&@19
@2|a+0#00e0e07&|b|e|n|d|;+0#0000000&| @39|a+0#00e0e07&|b|e|n|d| +0#0000000&@21
@2|e+0#00e0e07&|v|a|l|u|a|t|e|;+0#0000000&| @36|e+0#00e0e07&|v|a|l|u|a|t|e| +0#0000000&@18
@2|s+0#00e0e07&|y|s|t|e|m|;+0#0000000&| @38|s+0#00e0e07&|y|s|t|e|m| +0#0000000&@20
@57|1|4|5|,|3| @9|6|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|s+0#00e0e07&|y|s|t|e|m|;+0#0000000&| @38|s+0#00e0e07&|y|s|t|e|m| +0#0000000&@20
@2|s+0#00e0e07&|l|e@1|p|;+0#0000000&| @39|s+0#00e0e07&|l|e@1|p| +0#0000000&@21
|#+0#0000e05&| |M|a|c|h|i|n|e| |e|n|v|i|r|o|n| |p|a|r|a|m|e|t|e|r|s|.| |#| +0#0000000&@43
@2|i+0#00e0e07&|3|2|m|a|c|h|;+0#0000000&| @37|i+0#00e0e07&|3|2|m|a|c|h| +0#0000000&@19
@2|r+0#00e0e07&|6|4|m|a|c|h|;+0#0000000&| @37|r+0#00e0e07&|6|4|m|a|c|h| +0#0000000&@19
@2>i+0#00e0e07&|6|4|m|a|c|h|;+0#0000000&| @37|i+0#00e0e07&|6|4|m|a|c|h| +0#0000000&@19
@2|r+0#00e0e07&|1|2|8|m|a|c|h|;+0#0000000&| @36|r+0#00e0e07&|1|2|8|m|a|c|h| +0#0000000&@18
|#+0#0000e05&| |B|I|T|S| |p|r|o|c|e|d|u|r|e|s|.| |#| +0#0000000&@54
@2|b+0#00e0e07&|i|t|s| |p|a|c|k|;+0#0000000&| @35|b+0#00e0e07&|i|t|s|p|a|c|k| +0#0000000&@18
|#+0#0000e05&| |R|N|G| |p|r|o|c|e|d|u|r|e|s|.| |#| +0#0000000&@55
@2|f+0#00e0e07&|i|r|s|t| |r|a|n|d|o|m|;+0#0000000&| @32|f+0#00e0e07&|i|r|s|t|r|a|n|d|o|m| +0#0000000&@15
@2|n+0#00e0e07&|e|x|t| |r|a|n|d|o|m|;+0#0000000&| @33|n+0#00e0e07&|e|x|t|r|a|n|d|o|m| +0#0000000&@16
@2|r+0#00e0e07&|a|n|d|o|m|;+0#0000000&| @38|r+0#00e0e07&|a|n|d|o|m| +0#0000000&@20
@2|r+0#00e0e07&|n|d|;+0#0000000&| @41|r+0#00e0e07&|n|d| +0#0000000&@23
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |n|e|x|t|r|a|n|d|o|m|;+0#0000000&| @24|l+0#00e0e07&|o|n|g|l|o|n|g|n|e|x|t|r|a|n|d|o|m| +0#0000000&@8
@2|l+0#00e0e07&|o|n|g| |l|o|n|g| |r|a|n|d|o|m|;+0#0000000&| @28|l+0#00e0e07&|o|n|g|l|o|n|g|r|a|n|d|o|m| +0#0000000&@12
|#+0#0000e05&| |P|r|i|o|r|i|t|i|e|s|.| |#| +0#0000000&@59
|#+0#0000e05&| |I|N|T| |o|p|s|.| |#| +0#0000000&@62
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@57|1|6|3|,|3| @9|7|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|A+0#af5f00255&|B|S| +0#0000000&@42|A+0#af5f00255&|B|S| +0#0000000&@23
@2|S+0#af5f00255&|I|G|N| +0#0000000&@41|S+0#af5f00255&|I|G|N| +0#0000000&@22
@2|O+0#af5f00255&|D@1| +0#0000000&@42|O+0#af5f00255&|D@1| +0#0000000&@23
@2>=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|~+0#af5f00255&|=| +0#0000000&@43|~+0#af5f00255&|=| +0#0000000&@24
@2|^+0#af5f00255&|=| +0#0000000&@43|^+0#af5f00255&|=| +0#0000000&@24
@2|<+0#af5f00255&| +0#0000000&@44|<+0#af5f00255&| +0#0000000&@25
@2|<+0#af5f00255&|=| +0#0000000&@43|<+0#af5f00255&|=| +0#0000000&@24
@2|>+0#af5f00255&| +0#0000000&@44|>+0#af5f00255&| +0#0000000&@25
@2|>+0#af5f00255&|=| +0#0000000&@43|>+0#af5f00255&|=| +0#0000000&@24
@2|E+0#af5f00255&|Q| +0#0000000&@43|E+0#af5f00255&|Q| +0#0000000&@24
@2|N+0#af5f00255&|E| +0#0000000&@43|N+0#af5f00255&|E| +0#0000000&@24
@2|L+0#af5f00255&|T| +0#0000000&@43|L+0#af5f00255&|T| +0#0000000&@24
@2|L+0#af5f00255&|E| +0#0000000&@43|L+0#af5f00255&|E| +0#0000000&@24
@2|G+0#af5f00255&|T| +0#0000000&@43|G+0#af5f00255&|T| +0#0000000&@24
@2|G+0#af5f00255&|E| +0#0000000&@43|G+0#af5f00255&|E| +0#0000000&@24
@57|1|8|1|,|3| @9|8|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|s+0#00e0e07&|y|n|c|h|r|o|t|r|o|n| |2|;+0#0000000&| @31|s+0#00e0e07&|y|n|c|h|r|o|t|r|o|n|2| +0#0000000&@14
@2|t+0#00e0e07&|a|y|l|o|r| |c|o|e|f@1|;+0#0000000&| @32|t+0#00e0e07&|a|y|l|o|r|c|o|e|f@1| +0#0000000&@15
@2|t+0#00e0e07&|r|a|n|s|p|o|r|t| |2|;+0#0000000&| @33|t+0#00e0e07&|r|a|n|s|p|o|r|t|2| +0#0000000&@16
@2|t+0#00e0e07&|r|a|n|s|p|o|r|t| |3|;+0#0000000&| @33|t+0#00e0e07&|r|a|n|s|p|o|r|t|3| +0#0000000&@16
@2|t+0#00e0e07&|r|a|n|s|p|o|r|t| |4|;+0#0000000&| @33|t+0#00e0e07&|r|a|n|s|p|o|r|t|4| +0#0000000&@16
@2>t+0#00e0e07&|r|a|n|s|p|o|r|t| |5|;+0#0000000&| @33|t+0#00e0e07&|r|a|n|s|p|o|r|t|5| +0#0000000&@16
@2|z+0#00e0e07&|e|t|a| |i|n|t|;+0#0000000&| @36|z+0#00e0e07&|e|t|a|i|n|t| +0#0000000&@19
@2|z+0#00e0e07&|e|t|a| |m|1| |i|n|t|;+0#0000000&| @33|z+0#00e0e07&|e|t|a|m|1|i|n|t| +0#0000000&@17
@2|z+0#00e0e07&|e|t|a| |m|1|;+0#0000000&| @37|z+0#00e0e07&|e|t|a|m|1| +0#0000000&@20
@2|z+0#00e0e07&|e|t|a|;+0#0000000&| @40|z+0#00e0e07&|e|t|a| +0#0000000&@22
|#+0#0000e05&| |V|e|c|t|o|r| |a|n|d| |m|a|t|r|i|x| |p|r|e|t@1|y| |p|r|i|n|t|.| |#| +0#0000000&@39
@2|p+0#00e0e07&|r|i|n|t| |v|e|c|t|o|r|;+0#0000000&| @32|p+0#00e0e07&|r|i|n|t|v|e|c|t|o|r| +0#0000000&@15
@2|p+0#00e0e07&|r|i|n|t| |m|a|t|r|i|x|;+0#0000000&| @32|p+0#00e0e07&|r|i|n|t|m|a|t|r|i|x| +0#0000000&@15
|#+0#0000e05&| |V|e|c|t|o|r| |a|n|d| |m|a|t|r|i|x| |m|o|n|a|d|i|c|.| |#| +0#0000000&@44
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|C+0#af5f00255&|V| +0#0000000&@43|C+0#af5f00255&|V| +0#0000000&@24
@2|R+0#af5f00255&|V| +0#0000000&@43|R+0#af5f00255&|V| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@57|1|7|6@1|,|3| @7|8|3|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|T+0#af5f00255&| +0#0000000&@44|T+0#af5f00255&| +0#0000000&@25
@2|I+0#af5f00255&|N|V| +0#0000000&@42|I+0#af5f00255&|N|V| +0#0000000&@23
@2|P+0#af5f00255&|I|N|V| +0#0000000&@41|P+0#af5f00255&|I|N|V| +0#0000000&@22
@2>M+0#af5f00255&|E|A|N| +0#0000000&@41|M+0#af5f00255&|E|A|N| +0#0000000&@22
@2|D+0#af5f00255&|E|T| +0#0000000&@42|D+0#af5f00255&|E|T| +0#0000000&@23
@2|T+0#af5f00255&|R|A|C|E| +0#0000000&@40|T+0#af5f00255&|R|A|C|E| +0#0000000&@21
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|T+0#af5f00255&| +0#0000000&@44|T+0#af5f00255&| +0#0000000&@25
@2|I+0#af5f00255&|N|V| +0#0000000&@42|I+0#af5f00255&|N|V| +0#0000000&@23
@2|D+0#af5f00255&|E|T| +0#0000000&@42|D+0#af5f00255&|E|T| +0#0000000&@23
@2|T+0#af5f00255&|R|A|C|E| +0#0000000&@40|T+0#af5f00255&|R|A|C|E| +0#0000000&@21
|#+0#0000e05&| |V|e|c|t|o|r| |a|n|d| |m|a|t|r|i|x| |d|y|a|d|i|c|.| |#| +0#0000000&@45
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@57|1|7|8|4|,|3| @7|8|4|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2>-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|-| +0#0000000&@43|/+0#af5f00255&|-| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|B+0#af5f00255&|E|F|O|R|E| +0#0000000&@39|B+0#af5f00255&|E|F|O|R|E| +0#0000000&@20
@2|A+0#af5f00255&|B|O|V|E| +0#0000000&@40|A+0#af5f00255&|B|O|V|E| +0#0000000&@21
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2|-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@57|1|8|0|2|,|3| @7|8|5|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2>-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2|-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
|#+0#0000e05&| |V|e|c|t|o|r| |a|n|d| |m|a|t|r|i|x| |s|c|a|l|i|n|g|.| |#| +0#0000000&@44
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@57|1|8|2|0|,|3| @7|8|6|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2>/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
|#+0#0000e05&| |M|a|t|r|i|x| |t|i|m|e|s| |v|e|c|t|o|r| |o|r| |m|a|t|r|i|x|.| |#| +0#0000000&@40
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
|#+0#0000e05&| |V|e|c|t|o|r| |a|n|d| |m|a|t|r|i|x| |m|i|s|c|e|l@1|a|n|e|o|u|s|.| |#| +0#0000000&@38
@2|v+0#00e0e07&|e|c|t|o|r| |e|c|h|o|;+0#0000000&| @33|v+0#00e0e07&|e|c|t|o|r|e|c|h|o| +0#0000000&@16
@57|1|8|3|8|,|3| @7|8|7|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|v+0#00e0e07&|e|c|t|o|r| |e|c|h|o|;+0#0000000&| @33|v+0#00e0e07&|e|c|t|o|r|e|c|h|o| +0#0000000&@16
@2|m+0#00e0e07&|a|t|r|i|x| |e|c|h|o|;+0#0000000&| @33|m+0#00e0e07&|a|t|r|i|x|e|c|h|o| +0#0000000&@16
@2|c+0#00e0e07&|o|m|p|l| |v|e|c|t|o|r| |e|c|h|o|;+0#0000000&| @27|c+0#00e0e07&|o|m|p|l|v|e|c|t|o|r|e|c|h|o| +0#0000000&@11
@2|c+0#00e0e07&|o|m|p|l| |m|a|t|r|i|x| |e|c|h|o|;+0#0000000&| @27|c+0#00e0e07&|o|m|p|l|m|a|t|r|i|x|e|c|h|o| +0#0000000&@11
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2>N+0#af5f00255&|O|R|M| +0#0000000&@41|N+0#af5f00255&|O|R|M| +0#0000000&@22
@2|D+0#af5f00255&|Y|A|D| +0#0000000&@41|D+0#af5f00255&|Y|A|D| +0#0000000&@22
|#+0#0000e05&| |P|r|i|n|c|i|p|l|e| |C|o|m|p|o|n|e|n|t| |A|n|a|l|y|s|i|s|.| |#| +0#0000000&@41
@2|p+0#00e0e07&|c|a|c|v|;+0#0000000&| @39|p+0#00e0e07&|c|a|c|v| +0#0000000&@21
@2|p+0#00e0e07&|c|a|s|v|d|;+0#0000000&| @38|p+0#00e0e07&|c|a|s|v|d| +0#0000000&@20
|#+0#0000e05&| |T|o|t|a|l| |L|e|a|s|t| |S|q|u|a|r|e| |r|e|g|r|e|s@1|i|o|n|.| |#| +0#0000000&@40
@2|o+0#00e0e07&|l|s|;+0#0000000&| @41|o+0#00e0e07&|l|s| +0#0000000&@23
@2|t+0#00e0e07&|l|s|;+0#0000000&| @41|t+0#00e0e07&|l|s| +0#0000000&@23
|#+0#0000e05&| |P|a|r|t|i|a|l| |L|e|a|s|t| |S|q|u|a|r|e|s| |r|e|g|r|e|s@1|i|o|n|.| |#| +0#0000000&@37
@2|p+0#00e0e07&|c|r|;+0#0000000&| @41|p+0#00e0e07&|c|r| +0#0000000&@23
@2|p+0#00e0e07&|l|s|1|;+0#0000000&| @40|p+0#00e0e07&|l|s|1| +0#0000000&@22
@2|p+0#00e0e07&|l|s|2|;+0#0000000&| @40|p+0#00e0e07&|l|s|2| +0#0000000&@22
|#+0#0000e05&| |R|o|u|t|i|n|e| |l|e|f|t| |c|o|l|u|m|n|s|,| |a| |G|S|L| |a|l|t|e|r|n|a|t|i|v|e| |t|o| |t|r|i|m@1|i|n|g| |c|o|l|u|m|n|s|.| |#| +0#0000000&@10
@2|l+0#00e0e07&|e|f|t| |c|o|l|u|m|n|s|;+0#0000000&| @32|l+0#00e0e07&|e|f|t|c|o|l|u|m|n|s| +0#0000000&@15
@57|1|8|5|6|,|3| @7|8@1|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|l+0#00e0e07&|e|f|t| |c|o|l|u|m|n|s|;+0#0000000&| @32|l+0#00e0e07&|e|f|t|c|o|l|u|m|n|s| +0#0000000&@15
|#+0#0000e05&| |M|o@1|r|e|-|P|e|n|r|o|s|e| |p|s|e|u|d|o| |i|n|v|e|r|s|e|.| |#| +0#0000000&@41
@2|p+0#00e0e07&|s|e|u|d|o| |i|n|v|;+0#0000000&| @34|p+0#00e0e07&|s|e|u|d|o|i|n|v| +0#0000000&@17
|#+0#0000e05&| |L|U| |d|e|c|o|m|p|o|s|i|t|i|o|n|.| |#| +0#0000000&@53
@2|l+0#00e0e07&|u| |d|e|c|o|m|p|;+0#0000000&| @35|l+0#00e0e07&|u|d|e|c|o|m|p| +0#0000000&@18
@2>l+0#00e0e07&|u| |d|e|t|;+0#0000000&| @38|l+0#00e0e07&|u|d|e|t| +0#0000000&@21
@2|l+0#00e0e07&|u| |i|n|v|;+0#0000000&| @38|l+0#00e0e07&|u|i|n|v| +0#0000000&@21
@2|l+0#00e0e07&|u| |s|o|l|v|e|;+0#0000000&| @36|l+0#00e0e07&|u|s|o|l|v|e| +0#0000000&@19
@2|c+0#00e0e07&|o|m|p|l|e|x| |l|u| |d|e|c|o|m|p|;+0#0000000&| @27|c+0#00e0e07&|o|m|p|l|e|x|l|u|d|e|c|o|m|p| +0#0000000&@11
@2|c+0#00e0e07&|o|m|p|l|e|x| |l|u| |d|e|t|;+0#0000000&| @30|c+0#00e0e07&|o|m|p|l|e|x|l|u|d|e|t| +0#0000000&@14
@2|c+0#00e0e07&|o|m|p|l|e|x| |l|u| |i|n|v|;+0#0000000&| @30|c+0#00e0e07&|o|m|p|l|e|x|l|u|i|n|v| +0#0000000&@14
@2|c+0#00e0e07&|o|m|p|l|e|x| |l|u| |s|o|l|v|e|;+0#0000000&| @28|c+0#00e0e07&|o|m|p|l|e|x|l|u|s|o|l|v|e| +0#0000000&@12
|#+0#0000e05&| |S|V|D| |d|e|c|o|m|p|o|s|i|t|i|o|n|.| |#| +0#0000000&@52
@2|s+0#00e0e07&|v|d| |d|e|c|o|m|p|;+0#0000000&| @34|s+0#00e0e07&|v|d@1|e|c|o|m|p| +0#0000000&@17
@2|s+0#00e0e07&|v|d| |s|o|l|v|e|;+0#0000000&| @35|s+0#00e0e07&|v|d|s|o|l|v|e| +0#0000000&@18
|#+0#0000e05&| |Q|R| |d|e|c|o|m|p|o|s|i|t|i|o|n|.| |#| +0#0000000&@53
@2|q+0#00e0e07&|r| |d|e|c|o|m|p|;+0#0000000&| @35|q+0#00e0e07&|r|d|e|c|o|m|p| +0#0000000&@18
@2|q+0#00e0e07&|r| |s|o|l|v|e|;+0#0000000&| @36|q+0#00e0e07&|r|s|o|l|v|e| +0#0000000&@19
@2|q+0#00e0e07&|r| |l|s@1|o|l|v|e|;+0#0000000&| @34|q+0#00e0e07&|r|l|s@1|o|l|v|e| +0#0000000&@17
@57|1|8|7|4|,|3| @7|8|9|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|q+0#00e0e07&|r| |l|s@1|o|l|v|e|;+0#0000000&| @34|q+0#00e0e07&|r|l|s@1|o|l|v|e| +0#0000000&@17
|#+0#0000e05&| |C|h|o|l|e|s|k|y| |d|e|c|o|m|p|o|s|i|t|i|o|n|.| |#| +0#0000000&@47
@2|c+0#00e0e07&|h|o|l|e|s|k|y| |d|e|c|o|m|p|;+0#0000000&| @29|c+0#00e0e07&|h|o|l|e|s|k|y|d|e|c|o|m|p| +0#0000000&@12
@2|c+0#00e0e07&|h|o|l|e|s|k|y| |s|o|l|v|e|;+0#0000000&| @30|c+0#00e0e07&|h|o|l|e|s|k|y|s|o|l|v|e| +0#0000000&@13
|#+0#0000e05&| |C|o|n|s|t|a|n|t|s| |e|x| |G|S|L|.| |#| +0#0000000&@53
@2>c+0#00e0e07&|g|s| |s|p|e@1|d| |o|f| |l|i|g|h|t|;+0#0000000&| @26|c+0#00e0e07&|g|s@1|p|e@1|d|o|f|l|i|g|h|t| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |g|r|a|v|i|t|a|t|i|o|n|a|l| |c|o|n|s|t|a|n|t|;+0#0000000&| @18|c+0#00e0e07&|g|s|g|r|a|v|i|t|a|t|i|o|n|a|l|c|o|n|s|t|a|n|t| +0#0000000&@2
@2|c+0#00e0e07&|g|s| |p|l|a|n|c|k| |c|o|n|s|t|a|n|t|;+0#0000000&| @25|c+0#00e0e07&|g|s|p|l|a|n|c|k|c|o|n|s|t|a|n|t| +0#0000000&@9
@2|c+0#00e0e07&|g|s| |p|l|a|n|c|k| |c|o|n|s|t|a|n|t| |b|a|r|;+0#0000000&| @21|c+0#00e0e07&|g|s|p|l|a|n|c|k|c|o|n|s|t|a|n|t|b|a|r| +0#0000000&@6
@2|c+0#00e0e07&|g|s| |a|s|t|r|o|n|o|m|i|c|a|l| |u|n|i|t|;+0#0000000&| @23|c+0#00e0e07&|g|s|a|s|t|r|o|n|o|m|i|c|a|l|u|n|i|t| +0#0000000&@7
@2|c+0#00e0e07&|g|s| |l|i|g|h|t| |y|e|a|r|;+0#0000000&| @30|c+0#00e0e07&|g|s|l|i|g|h|t|y|e|a|r| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |p|a|r|s|e|c|;+0#0000000&| @34|c+0#00e0e07&|g|s|p|a|r|s|e|c| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |g|r|a|v| |a|c@1|e|l|;+0#0000000&| @30|c+0#00e0e07&|g|s|g|r|a|v|a|c@1|e|l| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |e|l|e|c|t|r|o|n| |v|o|l|t|;+0#0000000&| @27|c+0#00e0e07&|g|s|e|l|e|c|t|r|o|n|v|o|l|t| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |m|a|s@1| |e|l|e|c|t|r|o|n|;+0#0000000&| @27|c+0#00e0e07&|g|s|m|a|s@1|e|l|e|c|t|r|o|n| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |m|a|s@1| |m|u|o|n|;+0#0000000&| @31|c+0#00e0e07&|g|s|m|a|s@1|m|u|o|n| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |m|a|s@1| |p|r|o|t|o|n|;+0#0000000&| @29|c+0#00e0e07&|g|s|m|a|s@1|p|r|o|t|o|n| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |m|a|s@1| |n|e|u|t|r|o|n|;+0#0000000&| @28|c+0#00e0e07&|g|s|m|a|s@1|n|e|u|t|r|o|n| +0#0000000&@12
@2|c+0#00e0e07&|g|s| |r|y|d|b|e|r|g|;+0#0000000&| @33|c+0#00e0e07&|g|s|r|y|d|b|e|r|g| +0#0000000&@16
@57|1|8|9|2|,|3| @7|8|9|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|g|s| |r|y|d|b|e|r|g|;+0#0000000&| @33|c+0#00e0e07&|g|s|r|y|d|b|e|r|g| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |b|o|l|t|z|m|a|n@1|;+0#0000000&| @31|c+0#00e0e07&|g|s|b|o|l|t|z|m|a|n@1| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |b|o|h|r| |m|a|g|n|e|t|o|n|;+0#0000000&| @27|c+0#00e0e07&|g|s|b|o|h|r|m|a|g|n|e|t|o|n| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |n|u|c|l|e|a|r| |m|a|g|n|e|t|o|n|;+0#0000000&| @24|c+0#00e0e07&|g|s|n|u|c|l|e|a|r|m|a|g|n|e|t|o|n| +0#0000000&@8
@2|c+0#00e0e07&|g|s| |e|l|e|c|t|r|o|n| |m|a|g|n|e|t|i|c| |m|o|m|e|n|t|;+0#0000000&| @16|c+0#00e0e07&|g|s|e|l|e|c|t|r|o|n|m|a|g|n|e|t|i|c|m|o|m|e|n|t| +0#0000000&@1
@2>c+0#00e0e07&|g|s| |p|r|o|t|o|n| |m|a|g|n|e|t|i|c| |m|o|m|e|n|t|;+0#0000000&| @18|c+0#00e0e07&|g|s|p|r|o|t|o|n|m|a|g|n|e|t|i|c|m|o|m|e|n|t| +0#0000000&@3
@2|c+0#00e0e07&|g|s| |m|o|l|a|r| |g|a|s|;+0#0000000&| @31|c+0#00e0e07&|g|s|m|o|l|a|r|g|a|s| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |s|t|a|n|d|a|r|d| |g|a|s| |v|o|l|u|m|e|;+0#0000000&| @21|c+0#00e0e07&|g|s@1|t|a|n|d|a|r|d|g|a|s|v|o|l|u|m|e| +0#0000000&@6
@2|c+0#00e0e07&|g|s| |m|i|n|u|t|e|;+0#0000000&| @34|c+0#00e0e07&|g|s|m|i|n|u|t|e| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |h|o|u|r|;+0#0000000&| @36|c+0#00e0e07&|g|s|h|o|u|r| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |d|a|y|;+0#0000000&| @37|c+0#00e0e07&|g|s|d|a|y| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |w|e@1|k|;+0#0000000&| @36|c+0#00e0e07&|g|s|w|e@1|k| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |i|n|c|h|;+0#0000000&| @36|c+0#00e0e07&|g|s|i|n|c|h| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |f|o@1|t|;+0#0000000&| @36|c+0#00e0e07&|g|s|f|o@1|t| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |y|a|r|d|;+0#0000000&| @36|c+0#00e0e07&|g|s|y|a|r|d| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |m|i|l|e|;+0#0000000&| @36|c+0#00e0e07&|g|s|m|i|l|e| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |n|a|u|t|i|c|a|l| |m|i|l|e|;+0#0000000&| @27|c+0#00e0e07&|g|s|n|a|u|t|i|c|a|l|m|i|l|e| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |f|a|t|h|o|m|;+0#0000000&| @34|c+0#00e0e07&|g|s|f|a|t|h|o|m| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |m|i|l|;+0#0000000&| @37|c+0#00e0e07&|g|s|m|i|l| +0#0000000&@20
@57|1|9|1|0|,|3| @7|9|0|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|g|s| |m|i|l|;+0#0000000&| @37|c+0#00e0e07&|g|s|m|i|l| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |p|o|i|n|t|;+0#0000000&| @35|c+0#00e0e07&|g|s|p|o|i|n|t| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |t|e|x|p|o|i|n|t|;+0#0000000&| @32|c+0#00e0e07&|g|s|t|e|x|p|o|i|n|t| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |m|i|c|r|o|n|;+0#0000000&| @34|c+0#00e0e07&|g|s|m|i|c|r|o|n| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |a|n|g|s|t|r|o|m|;+0#0000000&| @32|c+0#00e0e07&|g|s|a|n|g|s|t|r|o|m| +0#0000000&@15
@2>c+0#00e0e07&|g|s| |h|e|c|t|a|r|e|;+0#0000000&| @33|c+0#00e0e07&|g|s|h|e|c|t|a|r|e| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |a|c|r|e|;+0#0000000&| @36|c+0#00e0e07&|g|s|a|c|r|e| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |b|a|r|n|;+0#0000000&| @36|c+0#00e0e07&|g|s|b|a|r|n| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |l|i|t|e|r|;+0#0000000&| @35|c+0#00e0e07&|g|s|l|i|t|e|r| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |u|s| |g|a|l@1|o|n|;+0#0000000&| @31|c+0#00e0e07&|g|s|u|s|g|a|l@1|o|n| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |q|u|a|r|t|;+0#0000000&| @35|c+0#00e0e07&|g|s|q|u|a|r|t| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |p|i|n|t|;+0#0000000&| @36|c+0#00e0e07&|g|s|p|i|n|t| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |c|u|p|;+0#0000000&| @37|c+0#00e0e07&|g|s|c|u|p| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |f|l|u|i|d| |o|u|n|c|e|;+0#0000000&| @29|c+0#00e0e07&|g|s|f|l|u|i|d|o|u|n|c|e| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |t|a|b|l|e| |s|p|o@1|n|;+0#0000000&| @29|c+0#00e0e07&|g|s|t|a|b|l|e|s|p|o@1|n| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |t|e|a| |s|p|o@1|n|;+0#0000000&| @31|c+0#00e0e07&|g|s|t|e|a|s|p|o@1|n| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |c|a|n|a|d|i|a|n| |g|a|l@1|o|n|;+0#0000000&| @25|c+0#00e0e07&|g|s|c|a|n|a|d|i|a|n|g|a|l@1|o|n| +0#0000000&@9
@2|c+0#00e0e07&|g|s| |u|k| |g|a|l@1|o|n|;+0#0000000&| @31|c+0#00e0e07&|g|s|u|k|g|a|l@1|o|n| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |m|i|l|e|s| |p|e|r| |h|o|u|r|;+0#0000000&| @26|c+0#00e0e07&|g|s|m|i|l|e|s|p|e|r|h|o|u|r| +0#0000000&@11
@57|1|9|2|8|,|3| @7|9|1|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|G+0#af5f00255&|E| +0#0000000&@43|G+0#af5f00255&|E| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|O+0#af5f00255&|V|E|R| +0#0000000&@41|O+0#af5f00255&|V|E|R| +0#0000000&@22
@2>%+0#af5f00255&| +0#0000000&@44|%+0#af5f00255&| +0#0000000&@25
@2|M+0#af5f00255&|O|D| +0#0000000&@42|M+0#af5f00255&|O|D| +0#0000000&@23
@2|%+0#af5f00255&|*| +0#0000000&@43|%+0#af5f00255&|*| +0#0000000&@24
@2|*+0#af5f00255&@1| +0#0000000&@43|*+0#af5f00255&@1| +0#0000000&@24
@2|U+0#af5f00255&|P| +0#0000000&@43|U+0#af5f00255&|P| +0#0000000&@24
@2|^+0#af5f00255&| +0#0000000&@44|^+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|%+0#af5f00255&|:|=| +0#0000000&@42|%+0#af5f00255&|:|=| +0#0000000&@23
@2|%+0#af5f00255&|*|:|=| +0#0000000&@41|%+0#af5f00255&|*|:|=| +0#0000000&@22
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@57|1|9@1|,|3| @9|9|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|g|s| |m|i|l|e|s| |p|e|r| |h|o|u|r|;+0#0000000&| @26|c+0#00e0e07&|g|s|m|i|l|e|s|p|e|r|h|o|u|r| +0#0000000&@11
@2|c+0#00e0e07&|g|s| |k|i|l|o|m|e|t|e|r|s| |p|e|r| |h|o|u|r|;+0#0000000&| @21|c+0#00e0e07&|g|s|k|i|l|o|m|e|t|e|r|s|p|e|r|h|o|u|r| +0#0000000&@6
@2|c+0#00e0e07&|g|s| |k|n|o|t|;+0#0000000&| @36|c+0#00e0e07&|g|s|k|n|o|t| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |p|o|u|n|d| |m|a|s@1|;+0#0000000&| @30|c+0#00e0e07&|g|s|p|o|u|n|d|m|a|s@1| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |o|u|n|c|e| |m|a|s@1|;+0#0000000&| @30|c+0#00e0e07&|g|s|o|u|n|c|e|m|a|s@1| +0#0000000&@14
@2>c+0#00e0e07&|g|s| |t|o|n|;+0#0000000&| @37|c+0#00e0e07&|g|s|t|o|n| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |m|e|t|r|i|c|t|o|n|;+0#0000000&| @31|c+0#00e0e07&|g|s|m|e|t|r|i|c|t|o|n| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |u|k|t|o|n|;+0#0000000&| @35|c+0#00e0e07&|g|s|u|k|t|o|n| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |t|r|o|y| |o|u|n|c|e|;+0#0000000&| @30|c+0#00e0e07&|g|s|t|r|o|y|o|u|n|c|e| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |c|a|r|a|t|;+0#0000000&| @35|c+0#00e0e07&|g|s|c|a|r|a|t| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |u|n|i|f|i|e|d| |a|t|o|m|i|c| |m|a|s@1|;+0#0000000&| @21|c+0#00e0e07&|g|s|u|n|i|f|i|e|d|a|t|o|m|i|c|m|a|s@1| +0#0000000&@6
@2|c+0#00e0e07&|g|s| |g|r|a|m| |f|o|r|c|e|;+0#0000000&| @30|c+0#00e0e07&|g|s|g|r|a|m|f|o|r|c|e| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |p|o|u|n|d| |f|o|r|c|e|;+0#0000000&| @29|c+0#00e0e07&|g|s|p|o|u|n|d|f|o|r|c|e| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |k|i|l|o| |p|o|u|n|d| |f|o|r|c|e|;+0#0000000&| @24|c+0#00e0e07&|g|s|k|i|l|o|p|o|u|n|d|f|o|r|c|e| +0#0000000&@9
@2|c+0#00e0e07&|g|s| |p|o|u|n|d|a|l|;+0#0000000&| @33|c+0#00e0e07&|g|s|p|o|u|n|d|a|l| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |c|a|l|o|r|i|e|;+0#0000000&| @33|c+0#00e0e07&|g|s|c|a|l|o|r|i|e| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |b|t|u|;+0#0000000&| @37|c+0#00e0e07&|g|s|b|t|u| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |t|h|e|r|m|;+0#0000000&| @35|c+0#00e0e07&|g|s|t|h|e|r|m| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |h|o|r|s|e|p|o|w|e|r|;+0#0000000&| @30|c+0#00e0e07&|g|s|h|o|r|s|e|p|o|w|e|r| +0#0000000&@13
@57|1|9|4|6|,|3| @7|9|2|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|g|s| |h|o|r|s|e|p|o|w|e|r|;+0#0000000&| @30|c+0#00e0e07&|g|s|h|o|r|s|e|p|o|w|e|r| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |b|a|r|;+0#0000000&| @37|c+0#00e0e07&|g|s|b|a|r| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |s|t|d| |a|t|m|o|s|p|h|e|r|e|;+0#0000000&| @26|c+0#00e0e07&|g|s@1|t|d|a|t|m|o|s|p|h|e|r|e| +0#0000000&@10
@2|c+0#00e0e07&|g|s| |t|o|r@1|;+0#0000000&| @36|c+0#00e0e07&|g|s|t|o|r@1| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |m|e|t|e|r| |o|f| |m|e|r|c|u|r|y|;+0#0000000&| @24|c+0#00e0e07&|g|s|m|e|t|e|r|o|f|m|e|r|c|u|r|y| +0#0000000&@9
@2>c+0#00e0e07&|g|s| |i|n|c|h| |o|f| |m|e|r|c|u|r|y|;+0#0000000&| @25|c+0#00e0e07&|g|s|i|n|c|h|o|f|m|e|r|c|u|r|y| +0#0000000&@10
@2|c+0#00e0e07&|g|s| |i|n|c|h| |o|f| |w|a|t|e|r|;+0#0000000&| @27|c+0#00e0e07&|g|s|i|n|c|h|o|f|w|a|t|e|r| +0#0000000&@12
@2|c+0#00e0e07&|g|s| |p|s|i|;+0#0000000&| @37|c+0#00e0e07&|g|s|p|s|i| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |p|o|i|s|e|;+0#0000000&| @35|c+0#00e0e07&|g|s|p|o|i|s|e| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |s|t|o|k|e|s|;+0#0000000&| @34|c+0#00e0e07&|g|s@1|t|o|k|e|s| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |f|a|r|a|d|a|y|;+0#0000000&| @33|c+0#00e0e07&|g|s|f|a|r|a|d|a|y| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |e|l|e|c|t|r|o|n| |c|h|a|r|g|e|;+0#0000000&| @25|c+0#00e0e07&|g|s|e|l|e|c|t|r|o|n|c|h|a|r|g|e| +0#0000000&@9
@2|c+0#00e0e07&|g|s| |g|a|u|s@1|;+0#0000000&| @35|c+0#00e0e07&|g|s|g|a|u|s@1| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |s|t|i|l|b|;+0#0000000&| @35|c+0#00e0e07&|g|s@1|t|i|l|b| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |l|u|m|e|n|;+0#0000000&| @35|c+0#00e0e07&|g|s|l|u|m|e|n| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |l|u|x|;+0#0000000&| @37|c+0#00e0e07&|g|s|l|u|x| +0#0000000&@20
@2|c+0#00e0e07&|g|s| |p|h|o|t|;+0#0000000&| @36|c+0#00e0e07&|g|s|p|h|o|t| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |f|o@1|t| |c|a|n|d|l|e|;+0#0000000&| @29|c+0#00e0e07&|g|s|f|o@1|t|c|a|n|d|l|e| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |l|a|m|b|e|r|t|;+0#0000000&| @33|c+0#00e0e07&|g|s|l|a|m|b|e|r|t| +0#0000000&@16
@57|1|9|6|4|,|3| @7|9|3|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|g|s| |l|a|m|b|e|r|t|;+0#0000000&| @33|c+0#00e0e07&|g|s|l|a|m|b|e|r|t| +0#0000000&@16
@2|c+0#00e0e07&|g|s| |f|o@1|t| |l|a|m|b|e|r|t|;+0#0000000&| @28|c+0#00e0e07&|g|s|f|o@1|t|l|a|m|b|e|r|t| +0#0000000&@12
@2|c+0#00e0e07&|g|s| |c|u|r|i|e|;+0#0000000&| @35|c+0#00e0e07&|g|s|c|u|r|i|e| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |r|o|e|n|t|g|e|n|;+0#0000000&| @32|c+0#00e0e07&|g|s|r|o|e|n|t|g|e|n| +0#0000000&@15
@2|c+0#00e0e07&|g|s| |r|a|d|;+0#0000000&| @37|c+0#00e0e07&|g|s|r|a|d| +0#0000000&@20
@2>c+0#00e0e07&|g|s| |s|o|l|a|r| |m|a|s@1|;+0#0000000&| @30|c+0#00e0e07&|g|s@1|o|l|a|r|m|a|s@1| +0#0000000&@14
@2|c+0#00e0e07&|g|s| |b|o|h|r| |r|a|d|i|u|s|;+0#0000000&| @29|c+0#00e0e07&|g|s|b|o|h|r@1|a|d|i|u|s| +0#0000000&@13
@2|c+0#00e0e07&|g|s| |n|e|w|t|o|n|;+0#0000000&| @34|c+0#00e0e07&|g|s|n|e|w|t|o|n| +0#0000000&@17
@2|c+0#00e0e07&|g|s| |d|y|n|e|;+0#0000000&| @36|c+0#00e0e07&|g|s|d|y|n|e| +0#0000000&@19
@2|c+0#00e0e07&|g|s| |j|o|u|l|e|;+0#0000000&| @35|c+0#00e0e07&|g|s|j|o|u|l|e| +0#0000000&@18
@2|c+0#00e0e07&|g|s| |e|r|g|;+0#0000000&| @37|c+0#00e0e07&|g|s|e|r|g| +0#0000000&@20
@2|m+0#00e0e07&|k|s|a| |s|p|e@1|d| |o|f| |l|i|g|h|t|;+0#0000000&| @25|m+0#00e0e07&|k|s|a|s|p|e@1|d|o|f|l|i|g|h|t| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |g|r|a|v|i|t|a|t|i|o|n|a|l| |c|o|n|s|t|a|n|t|;+0#0000000&| @17|m+0#00e0e07&|k|s|a|g|r|a|v|i|t|a|t|i|o|n|a|l|c|o|n|s|t|a|n|t| +0#0000000&@1
@2|m+0#00e0e07&|k|s|a| |p|l|a|n|c|k| |c|o|n|s|t|a|n|t|;+0#0000000&| @24|m+0#00e0e07&|k|s|a|p|l|a|n|c|k|c|o|n|s|t|a|n|t| +0#0000000&@8
@2|m+0#00e0e07&|k|s|a| |p|l|a|n|c|k| |c|o|n|s|t|a|n|t| |b|a|r|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|p|l|a|n|c|k|c|o|n|s|t|a|n|t|b|a|r| +0#0000000&@5
@2|m+0#00e0e07&|k|s|a| |v|a|c|u@1|m| |p|e|r|m|e|a|b|i|l|i|t|y|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|v|a|c|u@1|m|p|e|r|m|e|a|b|i|l|i|t|y| +0#0000000&@4
@2|m+0#00e0e07&|k|s|a| |a|s|t|r|o|n|o|m|i|c|a|l| |u|n|i|t|;+0#0000000&| @22|m+0#00e0e07&|k|s|a@1|s|t|r|o|n|o|m|i|c|a|l|u|n|i|t| +0#0000000&@6
@2|m+0#00e0e07&|k|s|a| |l|i|g|h|t| |y|e|a|r|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|l|i|g|h|t|y|e|a|r| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |p|a|r|s|e|c|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|p|a|r|s|e|c| +0#0000000&@16
@57|1|9|8|2|,|3| @7|9|4|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |p|a|r|s|e|c|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|p|a|r|s|e|c| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |g|r|a|v| |a|c@1|e|l|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|g|r|a|v|a|c@1|e|l| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |e|l|e|c|t|r|o|n| |v|o|l|t|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|e|l|e|c|t|r|o|n|v|o|l|t| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |m|a|s@1| |e|l|e|c|t|r|o|n|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|m|a|s@1|e|l|e|c|t|r|o|n| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |m|a|s@1| |m|u|o|n|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|m|a|s@1|m|u|o|n| +0#0000000&@14
@2>m+0#00e0e07&|k|s|a| |m|a|s@1| |p|r|o|t|o|n|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|m|a|s@1|p|r|o|t|o|n| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |m|a|s@1| |n|e|u|t|r|o|n|;+0#0000000&| @27|m+0#00e0e07&|k|s|a|m|a|s@1|n|e|u|t|r|o|n| +0#0000000&@11
@2|m+0#00e0e07&|k|s|a| |r|y|d|b|e|r|g|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|r|y|d|b|e|r|g| +0#0000000&@15
@2|m+0#00e0e07&|k|s|a| |b|o|l|t|z|m|a|n@1|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|b|o|l|t|z|m|a|n@1| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |b|o|h|r| |m|a|g|n|e|t|o|n|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|b|o|h|r|m|a|g|n|e|t|o|n| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |n|u|c|l|e|a|r| |m|a|g|n|e|t|o|n|;+0#0000000&| @23|m+0#00e0e07&|k|s|a|n|u|c|l|e|a|r|m|a|g|n|e|t|o|n| +0#0000000&@7
@2|m+0#00e0e07&|k|s|a| |e|l|e|c|t|r|o|n| |m|a|g|n|e|t|i|c| |m|o|m|e|n|t|;+0#0000000&| @15|m+0#00e0e07&|k|s|a|e|l|e|c|t|r|o|n|m|a|g|n|e|t|i|c|m|o|m|e|n|t| +0#0000000&
@2|m+0#00e0e07&|k|s|a| |p|r|o|t|o|n| |m|a|g|n|e|t|i|c| |m|o|m|e|n|t|;+0#0000000&| @17|m+0#00e0e07&|k|s|a|p|r|o|t|o|n|m|a|g|n|e|t|i|c|m|o|m|e|n|t| +0#0000000&@2
@2|m+0#00e0e07&|k|s|a| |m|o|l|a|r| |g|a|s|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|m|o|l|a|r|g|a|s| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |s|t|a|n|d|a|r|d| |g|a|s| |v|o|l|u|m|e|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|s|t|a|n|d|a|r|d|g|a|s|v|o|l|u|m|e| +0#0000000&@5
@2|m+0#00e0e07&|k|s|a| |m|i|n|u|t|e|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|m|i|n|u|t|e| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |h|o|u|r|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|h|o|u|r| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |d|a|y|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|d|a|y| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |w|e@1|k|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|w|e@1|k| +0#0000000&@18
@57|2|0@2|,|3| @7|9|5|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |w|e@1|k|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|w|e@1|k| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |i|n|c|h|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|i|n|c|h| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |f|o@1|t|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|f|o@1|t| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |y|a|r|d|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|y|a|r|d| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |m|i|l|e|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|m|i|l|e| +0#0000000&@18
@2>m+0#00e0e07&|k|s|a| |n|a|u|t|i|c|a|l| |m|i|l|e|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|n|a|u|t|i|c|a|l|m|i|l|e| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |f|a|t|h|o|m|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|f|a|t|h|o|m| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |m|i|l|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|m|i|l| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |p|o|i|n|t|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|p|o|i|n|t| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |t|e|x|p|o|i|n|t|;+0#0000000&| @31|m+0#00e0e07&|k|s|a|t|e|x|p|o|i|n|t| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |m|i|c|r|o|n|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|m|i|c|r|o|n| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |a|n|g|s|t|r|o|m|;+0#0000000&| @31|m+0#00e0e07&|k|s|a@1|n|g|s|t|r|o|m| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |h|e|c|t|a|r|e|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|h|e|c|t|a|r|e| +0#0000000&@15
@2|m+0#00e0e07&|k|s|a| |a|c|r|e|;+0#0000000&| @35|m+0#00e0e07&|k|s|a@1|c|r|e| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |b|a|r|n|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|b|a|r|n| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |l|i|t|e|r|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|l|i|t|e|r| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |u|s| |g|a|l@1|o|n|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|u|s|g|a|l@1|o|n| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |q|u|a|r|t|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|q|u|a|r|t| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |p|i|n|t|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|p|i|n|t| +0#0000000&@18
@57|2|0|1|8|,|3| @7|9|5|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |p|i|n|t|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|p|i|n|t| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |c|u|p|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|c|u|p| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |f|l|u|i|d| |o|u|n|c|e|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|f|l|u|i|d|o|u|n|c|e| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |t|a|b|l|e| |s|p|o@1|n|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|t|a|b|l|e|s|p|o@1|n| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |t|e|a| |s|p|o@1|n|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|t|e|a|s|p|o@1|n| +0#0000000&@14
@2>m+0#00e0e07&|k|s|a| |c|a|n|a|d|i|a|n| |g|a|l@1|o|n|;+0#0000000&| @24|m+0#00e0e07&|k|s|a|c|a|n|a|d|i|a|n|g|a|l@1|o|n| +0#0000000&@8
@2|m+0#00e0e07&|k|s|a| |u|k| |g|a|l@1|o|n|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|u|k|g|a|l@1|o|n| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |m|i|l|e|s| |p|e|r| |h|o|u|r|;+0#0000000&| @25|m+0#00e0e07&|k|s|a|m|i|l|e|s|p|e|r|h|o|u|r| +0#0000000&@10
@2|m+0#00e0e07&|k|s|a| |k|i|l|o|m|e|t|e|r|s| |p|e|r| |h|o|u|r|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|k|i|l|o|m|e|t|e|r|s|p|e|r|h|o|u|r| +0#0000000&@5
@2|m+0#00e0e07&|k|s|a| |k|n|o|t|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|k|n|o|t| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |p|o|u|n|d| |m|a|s@1|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|p|o|u|n|d|m|a|s@1| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |o|u|n|c|e| |m|a|s@1|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|o|u|n|c|e|m|a|s@1| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |t|o|n|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|t|o|n| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |m|e|t|r|i|c|t|o|n|;+0#0000000&| @30|m+0#00e0e07&|k|s|a|m|e|t|r|i|c|t|o|n| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |u|k|t|o|n|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|u|k|t|o|n| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |t|r|o|y| |o|u|n|c|e|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|t|r|o|y|o|u|n|c|e| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |c|a|r|a|t|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|c|a|r|a|t| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |u|n|i|f|i|e|d| |a|t|o|m|i|c| |m|a|s@1|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|u|n|i|f|i|e|d|a|t|o|m|i|c|m|a|s@1| +0#0000000&@5
@2|m+0#00e0e07&|k|s|a| |g|r|a|m| |f|o|r|c|e|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|g|r|a|m|f|o|r|c|e| +0#0000000&@13
@57|2|0|3|6|,|3| @7|9|6|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |g|r|a|m| |f|o|r|c|e|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|g|r|a|m|f|o|r|c|e| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |p|o|u|n|d| |f|o|r|c|e|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|p|o|u|n|d|f|o|r|c|e| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |k|i|l|o| |p|o|u|n|d| |f|o|r|c|e|;+0#0000000&| @23|m+0#00e0e07&|k|s|a|k|i|l|o|p|o|u|n|d|f|o|r|c|e| +0#0000000&@8
@2|m+0#00e0e07&|k|s|a| |p|o|u|n|d|a|l|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|p|o|u|n|d|a|l| +0#0000000&@15
@2|m+0#00e0e07&|k|s|a| |c|a|l|o|r|i|e|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|c|a|l|o|r|i|e| +0#0000000&@15
@2>m+0#00e0e07&|k|s|a| |b|t|u|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|b|t|u| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |t|h|e|r|m|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|t|h|e|r|m| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |h|o|r|s|e|p|o|w|e|r|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|h|o|r|s|e|p|o|w|e|r| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |b|a|r|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|b|a|r| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |s|t|d|a|t|m|o|s|p|h|e|r|e|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|s|t|d|a|t|m|o|s|p|h|e|r|e| +0#0000000&@9
@2|m+0#00e0e07&|k|s|a| |t|o|r@1|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|t|o|r@1| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |m|e|t|e|r| |o|f| |m|e|r|c|u|r|y|;+0#0000000&| @23|m+0#00e0e07&|k|s|a|m|e|t|e|r|o|f|m|e|r|c|u|r|y| +0#0000000&@8
@2|m+0#00e0e07&|k|s|a| |i|n|c|h| |o|f| |m|e|r|c|u|r|y|;+0#0000000&| @24|m+0#00e0e07&|k|s|a|i|n|c|h|o|f|m|e|r|c|u|r|y| +0#0000000&@9
@2|m+0#00e0e07&|k|s|a| |i|n|c|h| |o|f| |w|a|t|e|r|;+0#0000000&| @26|m+0#00e0e07&|k|s|a|i|n|c|h|o|f|w|a|t|e|r| +0#0000000&@11
@2|m+0#00e0e07&|k|s|a| |p|s|i|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|p|s|i| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |p|o|i|s|e|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|p|o|i|s|e| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |s|t|o|k|e|s|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|s|t|o|k|e|s| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |f|a|r|a|d|a|y|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|f|a|r|a|d|a|y| +0#0000000&@15
@2|m+0#00e0e07&|k|s|a| |e|l|e|c|t|r|o|n| |c|h|a|r|g|e|;+0#0000000&| @24|m+0#00e0e07&|k|s|a|e|l|e|c|t|r|o|n|c|h|a|r|g|e| +0#0000000&@8
@57|2|0|5|4|,|3| @7|9|7|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |e|l|e|c|t|r|o|n| |c|h|a|r|g|e|;+0#0000000&| @24|m+0#00e0e07&|k|s|a|e|l|e|c|t|r|o|n|c|h|a|r|g|e| +0#0000000&@8
@2|m+0#00e0e07&|k|s|a| |g|a|u|s@1|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|g|a|u|s@1| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |s|t|i|l|b|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|s|t|i|l|b| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |l|u|m|e|n|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|l|u|m|e|n| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |l|u|x|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|l|u|x| +0#0000000&@19
@2>m+0#00e0e07&|k|s|a| |p|h|o|t|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|p|h|o|t| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |f|o@1|t| |c|a|n|d|l|e|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|f|o@1|t|c|a|n|d|l|e| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |l|a|m|b|e|r|t|;+0#0000000&| @32|m+0#00e0e07&|k|s|a|l|a|m|b|e|r|t| +0#0000000&@15
@2|m+0#00e0e07&|k|s|a| |f|o@1|t| |l|a|m|b|e|r|t|;+0#0000000&| @27|m+0#00e0e07&|k|s|a|f|o@1|t|l|a|m|b|e|r|t| +0#0000000&@11
@2|m+0#00e0e07&|k|s|a| |c|u|r|i|e|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|c|u|r|i|e| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |r|o|e|n|t|g|e|n|;+0#0000000&| @31|m+0#00e0e07&|k|s|a|r|o|e|n|t|g|e|n| +0#0000000&@14
@2|m+0#00e0e07&|k|s|a| |r|a|d|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|r|a|d| +0#0000000&@19
@2|m+0#00e0e07&|k|s|a| |s|o|l|a|r| |m|a|s@1|;+0#0000000&| @29|m+0#00e0e07&|k|s|a|s|o|l|a|r|m|a|s@1| +0#0000000&@13
@2|m+0#00e0e07&|k|s|a| |b|o|h|r| |r|a|d|i|u|s|;+0#0000000&| @28|m+0#00e0e07&|k|s|a|b|o|h|r@1|a|d|i|u|s| +0#0000000&@12
@2|m+0#00e0e07&|k|s|a| |v|a|c|u@1|m| |p|e|r|m|i|t@1|i|v|i|t|y|;+0#0000000&| @20|m+0#00e0e07&|k|s|a|v|a|c|u@1|m|p|e|r|m|i|t@1|i|v|i|t|y| +0#0000000&@4
@2|m+0#00e0e07&|k|s|a| |n|e|w|t|o|n|;+0#0000000&| @33|m+0#00e0e07&|k|s|a|n|e|w|t|o|n| +0#0000000&@16
@2|m+0#00e0e07&|k|s|a| |d|y|n|e|;+0#0000000&| @35|m+0#00e0e07&|k|s|a|d|y|n|e| +0#0000000&@18
@2|m+0#00e0e07&|k|s|a| |j|o|u|l|e|;+0#0000000&| @34|m+0#00e0e07&|k|s|a|j|o|u|l|e| +0#0000000&@17
@2|m+0#00e0e07&|k|s|a| |e|r|g|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|e|r|g| +0#0000000&@19
@57|2|0|7|2|,|3| @7|9|8|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|m+0#00e0e07&|k|s|a| |e|r|g|;+0#0000000&| @36|m+0#00e0e07&|k|s|a|e|r|g| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |f|i|n|e| |s|t|r|u|c|t|u|r|e|;+0#0000000&| @26|n+0#00e0e07&|u|m|f|i|n|e|s|t|r|u|c|t|u|r|e| +0#0000000&@10
@2|n+0#00e0e07&|u|m| |a|v|o|g|a|d|r|o|;+0#0000000&| @32|n+0#00e0e07&|u|m|a|v|o|g|a|d|r|o| +0#0000000&@15
@2|n+0#00e0e07&|u|m| |y|o|t@1|a|;+0#0000000&| @35|n+0#00e0e07&|u|m|y|o|t@1|a| +0#0000000&@18
@2|n+0#00e0e07&|u|m| |z|e|t@1|a|;+0#0000000&| @35|n+0#00e0e07&|u|m|z|e|t@1|a| +0#0000000&@18
@2>n+0#00e0e07&|u|m| |e|x|a|;+0#0000000&| @37|n+0#00e0e07&|u|m|e|x|a| +0#0000000&@20
@2|n+0#00e0e07&|u|m| |p|e|t|a|;+0#0000000&| @36|n+0#00e0e07&|u|m|p|e|t|a| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |t|e|r|a|;+0#0000000&| @36|n+0#00e0e07&|u|m|t|e|r|a| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |g|i|g|a|;+0#0000000&| @36|n+0#00e0e07&|u|m|g|i|g|a| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |m|e|g|a|;+0#0000000&| @36|n+0#00e0e07&|u|m@1|e|g|a| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |k|i|l|o|;+0#0000000&| @36|n+0#00e0e07&|u|m|k|i|l|o| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |m|i|l@1|i|;+0#0000000&| @35|n+0#00e0e07&|u|m@1|i|l@1|i| +0#0000000&@18
@2|n+0#00e0e07&|u|m| |m|i|c|r|o|;+0#0000000&| @35|n+0#00e0e07&|u|m@1|i|c|r|o| +0#0000000&@18
@2|n+0#00e0e07&|u|m| |n|a|n|o|;+0#0000000&| @36|n+0#00e0e07&|u|m|n|a|n|o| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |p|i|c|o|;+0#0000000&| @36|n+0#00e0e07&|u|m|p|i|c|o| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |f|e|m|t|o|;+0#0000000&| @35|n+0#00e0e07&|u|m|f|e|m|t|o| +0#0000000&@18
@2|n+0#00e0e07&|u|m| |a|t@1|o|;+0#0000000&| @36|n+0#00e0e07&|u|m|a|t@1|o| +0#0000000&@19
@2|n+0#00e0e07&|u|m| |z|e|p|t|o|;+0#0000000&| @35|n+0#00e0e07&|u|m|z|e|p|t|o| +0#0000000&@18
@2|n+0#00e0e07&|u|m| |y|o|c|t|o|;+0#0000000&| @35|n+0#00e0e07&|u|m|y|o|c|t|o| +0#0000000&@18
@57|2|0|9|0|,|3| @7|9@1|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|n+0#00e0e07&|u|m| |y|o|c|t|o|;+0#0000000&| @35|n+0#00e0e07&|u|m|y|o|c|t|o| +0#0000000&@18
|#+0#0000e05&| |F@1|T|.| |#| +0#0000000&@66
@2|p+0#00e0e07&|r|i|m|e|f|a|c|t|o|r|s|;+0#0000000&| @32|p+0#00e0e07&|r|i|m|e|f|a|c|t|o|r|s| +0#0000000&@14
@2|f+0#00e0e07&@1|t| |c|o|m|p|l|e|x| |f|o|r|w|a|r|d|;+0#0000000&| @25|f+0#00e0e07&@1|t|c|o|m|p|l|e|x|f|o|r|w|a|r|d| +0#0000000&@9
@2|f+0#00e0e07&@1|t| |c|o|m|p|l|e|x| |b|a|c|k|w|a|r|d|;+0#0000000&| @24|f+0#00e0e07&@1|t|c|o|m|p|l|e|x|b|a|c|k|w|a|r|d| +0#0000000&@8
@2>f+0#00e0e07&@1|t| |c|o|m|p|l|e|x| |i|n|v|e|r|s|e|;+0#0000000&| @25|f+0#00e0e07&@1|t|c|o|m|p|l|e|x|i|n|v|e|r|s|e| +0#0000000&@9
@2|f+0#00e0e07&@1|t| |f|o|r|w|a|r|d|;+0#0000000&| @33|f+0#00e0e07&@1|t|f|o|r|w|a|r|d| +0#0000000&@16
@2|f+0#00e0e07&@1|t| |b|a|c|k|w|a|r|d|;+0#0000000&| @32|f+0#00e0e07&@1|t|b|a|c|k|w|a|r|d| +0#0000000&@15
@2|f+0#00e0e07&@1|t| |i|n|v|e|r|s|e|;+0#0000000&| @33|f+0#00e0e07&@1|t|i|n|v|e|r|s|e| +0#0000000&@16
|#+0#0000e05&| |L|a|p|l|a|c|e|.| |#| +0#0000000&@62
@2|l+0#00e0e07&|a|p|l|a|c|e|;+0#0000000&| @37|l+0#00e0e07&|a|p|l|a|c|e| +0#0000000&@19
@75
@75
|#+0#0000e05&| |v|i|m|:| |s|y|n|t|a|x|=|a|l|g|o|l|6|8| |t|s|=|4|8| +0#0000000&@47
|#+0#0000e05&| +0#0000000&@73
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
| +0#0000000&@56|2|1|0|8|,|3| @7|B|o|t|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@2|T+0#af5f00255&|I|M|E|S|A|B| +0#0000000&@38|T+0#af5f00255&|I|M|E|S|A|B| +0#0000000&@19
@2|O+0#af5f00255&|V|E|R|A|B| +0#0000000&@39|O+0#af5f00255&|V|E|R|A|B| +0#0000000&@20
@2|M+0#af5f00255&|O|D|A|B| +0#0000000&@40|M+0#af5f00255&|O|D|A|B| +0#0000000&@21
|#+0#0000e05&| |R|E|A|L| |o|p|s|.| |#| +0#0000000&@61
@2>++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|A+0#af5f00255&|B|S| +0#0000000&@42|A+0#af5f00255&|B|S| +0#0000000&@23
@2|S+0#af5f00255&|I|G|N| +0#0000000&@41|S+0#af5f00255&|I|G|N| +0#0000000&@22
@2|R+0#af5f00255&|O|U|N|D| +0#0000000&@40|R+0#af5f00255&|O|U|N|D| +0#0000000&@21
@2|E+0#af5f00255&|N|T|I|E|R| +0#0000000&@39|E+0#af5f00255&|N|T|I|E|R| +0#0000000&@20
@2|F+0#af5f00255&|L|O@1|R| +0#0000000&@40|F+0#af5f00255&|L|O@1|R| +0#0000000&@21
@2|C+0#af5f00255&|E|I|L| +0#0000000&@41|C+0#af5f00255&|E|I|L| +0#0000000&@22
@2|N+0#af5f00255&|I|N|T| +0#0000000&@41|N+0#af5f00255&|I|N|T| +0#0000000&@22
@2|T+0#af5f00255&|R|U|N|C| +0#0000000&@40|T+0#af5f00255&|R|U|N|C| +0#0000000&@21
@2|F+0#af5f00255&|R|A|C| +0#0000000&@41|F+0#af5f00255&|R|A|C| +0#0000000&@22
@2|F+0#af5f00255&|I|X| +0#0000000&@42|F+0#af5f00255&|I|X| +0#0000000&@23
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@57|2|1|7|,|3| @8|1|0|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|~+0#af5f00255&|=| +0#0000000&@43|~+0#af5f00255&|=| +0#0000000&@24
@2|^+0#af5f00255&|=| +0#0000000&@43|^+0#af5f00255&|=| +0#0000000&@24
@2|<+0#af5f00255&| +0#0000000&@44|<+0#af5f00255&| +0#0000000&@25
@2|<+0#af5f00255&|=| +0#0000000&@43|<+0#af5f00255&|=| +0#0000000&@24
@2>>+0#af5f00255&| +0#0000000&@44|>+0#af5f00255&| +0#0000000&@25
@2|>+0#af5f00255&|=| +0#0000000&@43|>+0#af5f00255&|=| +0#0000000&@24
@2|E+0#af5f00255&|Q| +0#0000000&@43|E+0#af5f00255&|Q| +0#0000000&@24
@2|N+0#af5f00255&|E| +0#0000000&@43|N+0#af5f00255&|E| +0#0000000&@24
@2|L+0#af5f00255&|T| +0#0000000&@43|L+0#af5f00255&|T| +0#0000000&@24
@2|L+0#af5f00255&|E| +0#0000000&@43|L+0#af5f00255&|E| +0#0000000&@24
@2|G+0#af5f00255&|T| +0#0000000&@43|G+0#af5f00255&|T| +0#0000000&@24
@2|G+0#af5f00255&|E| +0#0000000&@43|G+0#af5f00255&|E| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&@1| +0#0000000&@43|*+0#af5f00255&@1| +0#0000000&@24
@2|U+0#af5f00255&|P| +0#0000000&@43|U+0#af5f00255&|P| +0#0000000&@24
@57|2|3|5|,|3| @8|1|0|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|U+0#af5f00255&|P| +0#0000000&@43|U+0#af5f00255&|P| +0#0000000&@24
@2|^+0#af5f00255&| +0#0000000&@44|^+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&@1| +0#0000000&@43|*+0#af5f00255&@1| +0#0000000&@24
@2|U+0#af5f00255&|P| +0#0000000&@43|U+0#af5f00255&|P| +0#0000000&@24
@2|^+0#af5f00255&| +0#0000000&@44|^+0#af5f00255&| +0#0000000&@25
@2>++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@2|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@39|P+0#af5f00255&|L|U|S|A|B| +0#0000000&@20
@2|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@38|M+0#af5f00255&|I|N|U|S|A|B| +0#0000000&@19
@2|T+0#af5f00255&|I|M|E|S|A|B| +0#0000000&@38|T+0#af5f00255&|I|M|E|S|A|B| +0#0000000&@19
@2|D+0#af5f00255&|I|V|A|B| +0#0000000&@40|D+0#af5f00255&|I|V|A|B| +0#0000000&@21
|#+0#0000e05&| |P|r|o|c|e|d|u|r|e|s| |#| +0#0000000&@60
@2|a+0#00e0e07&|r|c| |c|o|s| |d|g|;+0#0000000&| @1|a+0#00e0e07&|c|o|s| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c@1|o|s|d|g|;+0#0000000&| @1|a+0#00e0e07&|c|o|s|d|g| +0#0000000&@9
@2|a+0#00e0e07&|r|c| |c|o|s|h|;+0#0000000&| @1|a+0#00e0e07&|c|o|s|h|;+0#0000000&| @28|a+0#00e0e07&|r|c@1|o|s|h|;+0#0000000&| @1|a+0#00e0e07&|c|o|s|h| +0#0000000&@11
@2|a+0#00e0e07&|r|c| |c|o|t|;+0#0000000&| @1|a+0#00e0e07&|c|o|t|;+0#0000000&| @30|a+0#00e0e07&|r|c@1|o|t|;+0#0000000&| @1|a+0#00e0e07&|c|o|t| +0#0000000&@13
@2|a+0#00e0e07&|r|c| |c|o|t| |d|g|;+0#0000000&| @1|a+0#00e0e07&|c|o|t| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c@1|o|t|d|g|;+0#0000000&| @1|a+0#00e0e07&|c|o|t|d|g| +0#0000000&@9
@2|a+0#00e0e07&|r|c| |c|s|c|;+0#0000000&| @1|a+0#00e0e07&|c|s|c|;+0#0000000&| @30|a+0#00e0e07&|r|c@1|s|c|;+0#0000000&| @1|a+0#00e0e07&|c|s|c| +0#0000000&@13
@57|2|5|3|,|3| @8|1@1|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|a+0#00e0e07&|r|c| |c|s|c|;+0#0000000&| @1|a+0#00e0e07&|c|s|c|;+0#0000000&| @30|a+0#00e0e07&|r|c@1|s|c|;+0#0000000&| @1|a+0#00e0e07&|c|s|c| +0#0000000&@13
@2|a+0#00e0e07&|r|c| |c|s|c| |d|g|;+0#0000000&| @1|a+0#00e0e07&|c|s|c| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c@1|s|c|d|g|;+0#0000000&| @1|a+0#00e0e07&|c|s|c|d|g| +0#0000000&@9
@2|a+0#00e0e07&|r|c| |s|e|c|;+0#0000000&| @1|a+0#00e0e07&|s|e|c|;+0#0000000&| @30|a+0#00e0e07&|r|c|s|e|c|;+0#0000000&| @1|a+0#00e0e07&|s|e|c| +0#0000000&@13
@2|a+0#00e0e07&|r|c| |s|e|c| |d|g|;+0#0000000&| @1|a+0#00e0e07&|s|e|c| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c|s|e|c|d|g|;+0#0000000&| @1|a+0#00e0e07&|s|e|c|d|g| +0#0000000&@9
@2|a+0#00e0e07&|r|c| |s|i|n| |d|g|;+0#0000000&| @1|a+0#00e0e07&|s|i|n| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c|s|i|n|d|g|;+0#0000000&| @1|a+0#00e0e07&|s|i|n|d|g| +0#0000000&@9
@2>a+0#00e0e07&|r|c| |s|i|n|h|;+0#0000000&| @1|a+0#00e0e07&|s|i|n|h|;+0#0000000&| @28|a+0#00e0e07&|r|c|s|i|n|h|;+0#0000000&| @1|a+0#00e0e07&|s|i|n|h| +0#0000000&@11
@2|a+0#00e0e07&|r|c| |t|a|n| |d|g|;+0#0000000&| @1|a+0#00e0e07&|t|a|n| |d|g|;+0#0000000&| @24|a+0#00e0e07&|r|c|t|a|n|d|g|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|d|g| +0#0000000&@9
@2|a+0#00e0e07&|r|c| |t|a|n|h|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|h|;+0#0000000&| @28|a+0#00e0e07&|r|c|t|a|n|h|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|h| +0#0000000&@11
@2|a+0#00e0e07&|r|c| |c|o|s|;+0#0000000&| @1|a+0#00e0e07&|c|o|s|;+0#0000000&| @30|a+0#00e0e07&|r|c@1|o|s|;+0#0000000&| @1|a+0#00e0e07&|c|o|s| +0#0000000&@13
@2|a+0#00e0e07&|r|c| |s|i|n|;+0#0000000&| @1|a+0#00e0e07&|s|i|n|;+0#0000000&| @30|a+0#00e0e07&|r|c|s|i|n|;+0#0000000&| @1|a+0#00e0e07&|s|i|n| +0#0000000&@13
@2|a+0#00e0e07&|r|c| |t|a|n|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|;+0#0000000&| @30|a+0#00e0e07&|r|c|t|a|n|;+0#0000000&| @1|a+0#00e0e07&|t|a|n| +0#0000000&@13
@2|c+0#00e0e07&|a|s|;+0#0000000&| @41|c+0#00e0e07&|a|s| +0#0000000&@23
@2|c+0#00e0e07&|b|r|t|;+0#0000000&| @40|c+0#00e0e07&|b|r|t| +0#0000000&@22
@2|c+0#00e0e07&|o|s| |d|g|;+0#0000000&| @38|c+0#00e0e07&|o|s|d|g| +0#0000000&@21
@2|c+0#00e0e07&|o|s|h|;+0#0000000&| @40|c+0#00e0e07&|o|s|h| +0#0000000&@22
@2|c+0#00e0e07&|o|s| |p|i|;+0#0000000&| @38|c+0#00e0e07&|o|s|p|i| +0#0000000&@21
@2|c+0#00e0e07&|o|t| |d|g|;+0#0000000&| @38|c+0#00e0e07&|o|t|d|g| +0#0000000&@21
@2|c+0#00e0e07&|o|t|;+0#0000000&| @41|c+0#00e0e07&|o|t| +0#0000000&@23
@2|c+0#00e0e07&|o|t| |p|i|;+0#0000000&| @38|c+0#00e0e07&|o|t|p|i| +0#0000000&@21
@57|2|7|1|,|3| @8|1|2|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|c+0#00e0e07&|o|t| |p|i|;+0#0000000&| @38|c+0#00e0e07&|o|t|p|i| +0#0000000&@21
@2|c+0#00e0e07&|s|c| |d|g|;+0#0000000&| @38|c+0#00e0e07&|s|c|d|g| +0#0000000&@21
@2|c+0#00e0e07&|s|c|;+0#0000000&| @41|c+0#00e0e07&|s|c| +0#0000000&@23
@2|c+0#00e0e07&|u|r|t|;+0#0000000&| @40|c+0#00e0e07&|u|r|t| +0#0000000&@22
@2|e+0#00e0e07&|r|f|c|;+0#0000000&| @40|e+0#00e0e07&|r|f|c| +0#0000000&@22
@2>e+0#00e0e07&|r|f|;+0#0000000&| @41|e+0#00e0e07&|r|f| +0#0000000&@23
@2|g+0#00e0e07&|a|m@1|a|;+0#0000000&| @39|g+0#00e0e07&|a|m@1|a| +0#0000000&@21
@2|i+0#00e0e07&|n|v| |e|r|f|c|;+0#0000000&| @36|i+0#00e0e07&|n|v|e|r|f|c| +0#0000000&@19
@2|i+0#00e0e07&|n|v| |e|r|f|;+0#0000000&| @37|i+0#00e0e07&|n|v|e|r|f| +0#0000000&@20
@2|i+0#00e0e07&|n|v|e|r|s|e| |e|r|f|c|;+0#0000000&| @32|i+0#00e0e07&|n|v|e|r|s|e@1|r|f|c| +0#0000000&@15
@2|i+0#00e0e07&|n|v|e|r|s|e| |e|r|f|;+0#0000000&| @33|i+0#00e0e07&|n|v|e|r|s|e@1|r|f| +0#0000000&@16
@2|l+0#00e0e07&|n|1|p|;+0#0000000&| @40|l+0#00e0e07&|n|1|p| +0#0000000&@22
@2|l+0#00e0e07&|n| |g|a|m@1|a|;+0#0000000&| @36|l+0#00e0e07&|n|g|a|m@1|a| +0#0000000&@19
@2|s+0#00e0e07&|e|c| |d|g|;+0#0000000&| @38|s+0#00e0e07&|e|c|d|g| +0#0000000&@21
@2|s+0#00e0e07&|e|c|;+0#0000000&| @41|s+0#00e0e07&|e|c| +0#0000000&@23
@2|s+0#00e0e07&|i|n| |d|g|;+0#0000000&| @38|s+0#00e0e07&|i|n|d|g| +0#0000000&@21
@2|s+0#00e0e07&|i|n|h|;+0#0000000&| @40|s+0#00e0e07&|i|n|h| +0#0000000&@22
@2|s+0#00e0e07&|i|n| |p|i|;+0#0000000&| @38|s+0#00e0e07&|i|n|p|i| +0#0000000&@21
@2|t+0#00e0e07&|a|n| |d|g|;+0#0000000&| @38|t+0#00e0e07&|a|n|d|g| +0#0000000&@21
@57|2|8|9|,|3| @8|1|3|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|t+0#00e0e07&|a|n| |d|g|;+0#0000000&| @38|t+0#00e0e07&|a|n|d|g| +0#0000000&@21
@2|t+0#00e0e07&|a|n|h|;+0#0000000&| @40|t+0#00e0e07&|a|n|h| +0#0000000&@22
@2|t+0#00e0e07&|a|n| |p|i|;+0#0000000&| @38|t+0#00e0e07&|a|n|p|i| +0#0000000&@21
@2|c+0#00e0e07&|o|s|;+0#0000000&| @41|c+0#00e0e07&|o|s| +0#0000000&@23
@2|e+0#00e0e07&|x|p|;+0#0000000&| @41|e+0#00e0e07&|x|p| +0#0000000&@23
@2>l+0#00e0e07&|n|;+0#0000000&| @42|l+0#00e0e07&|n| +0#0000000&@24
@2|l+0#00e0e07&|o|g|;+0#0000000&| @41|l+0#00e0e07&|o|g| +0#0000000&@23
@2|s+0#00e0e07&|i|n|;+0#0000000&| @41|s+0#00e0e07&|i|n| +0#0000000&@23
@2|s+0#00e0e07&|q|r|t|;+0#0000000&| @40|s+0#00e0e07&|q|r|t| +0#0000000&@22
@2|t+0#00e0e07&|a|n|;+0#0000000&| @41|t+0#00e0e07&|a|n| +0#0000000&@23
|#+0#0000e05&| |M|i|s|c|e|l@1|a|n|e|o|u|s|.| |#| +0#0000000&@56
@2|a+0#00e0e07&|r|c| |t|a|n|2|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|2|;+0#0000000&| @28|a+0#00e0e07&|r|c|t|a|n|2|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|2| +0#0000000&@11
@2|a+0#00e0e07&|r|c| |t|a|n|2| |d|g|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|2| |d|g|;+0#0000000&| @22|a+0#00e0e07&|r|c|t|a|n|2|d|g|;+0#0000000&| @1|a+0#00e0e07&|t|a|n|2|d|g| +0#0000000&@7
@2|b+0#00e0e07&|e|t|a|;+0#0000000&| @40|b+0#00e0e07&|e|t|a| +0#0000000&@22
@2|b+0#00e0e07&|e|t|a|i|n|c|;+0#0000000&| @37|b+0#00e0e07&|e|t|a|i|n|c| +0#0000000&@19
@2|c+0#00e0e07&|h|o@1|s|e|;+0#0000000&| @38|c+0#00e0e07&|h|o@1|s|e| +0#0000000&@20
@2|f+0#00e0e07&|a|c|t|;+0#0000000&| @40|f+0#00e0e07&|a|c|t| +0#0000000&@22
@2|g+0#00e0e07&|a|m@1|a| |i|n|c|;+0#0000000&| @35|g+0#00e0e07&|a|m@1|a|i|n|c| +0#0000000&@18
@2|g+0#00e0e07&|a|m@1|a| |i|n|c|f|;+0#0000000&| @34|g+0#00e0e07&|a|m@1|a|i|n|c|f| +0#0000000&@17
@57|3|0|7|,|3| @8|1|4|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|g+0#00e0e07&|a|m@1|a| |i|n|c|f|;+0#0000000&| @34|g+0#00e0e07&|a|m@1|a|i|n|c|f| +0#0000000&@17
@2|g+0#00e0e07&|a|m@1|a| |i|n|c|g|;+0#0000000&| @34|g+0#00e0e07&|a|m@1|a|i|n|c|g| +0#0000000&@17
@2|g+0#00e0e07&|a|m@1|a| |i|n|c|g|f|;+0#0000000&| @33|g+0#00e0e07&|a|m@1|a|i|n|c|g|f| +0#0000000&@16
@2|l+0#00e0e07&|j|e|1|2|6|;+0#0000000&| @38|l+0#00e0e07&|j|e|1|2|6| +0#0000000&@20
@2|l+0#00e0e07&|j|f|1|2|6|;+0#0000000&| @38|l+0#00e0e07&|j|f|1|2|6| +0#0000000&@20
@2>l+0#00e0e07&|n| |b|e|t|a|;+0#0000000&| @37|l+0#00e0e07&|n|b|e|t|a| +0#0000000&@20
@2|l+0#00e0e07&|n| |c|h|o@1|s|e|;+0#0000000&| @35|l+0#00e0e07&|n|c|h|o@1|s|e| +0#0000000&@18
@2|l+0#00e0e07&|n| |f|a|c|t|;+0#0000000&| @37|l+0#00e0e07&|n|f|a|c|t| +0#0000000&@20
|#+0#0000e05&| |C|O|M|P|L|E|X| |o|p|s|.| |#| +0#0000000&@58
@2|I+0#af5f00255&| +0#0000000&@44|I+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|*| +0#0000000&@43|++0#af5f00255&|*| +0#0000000&@24
@2|I+0#af5f00255&| +0#0000000&@44|I+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|*| +0#0000000&@43|++0#af5f00255&|*| +0#0000000&@24
@2|R+0#af5f00255&|E| +0#0000000&@43|R+0#af5f00255&|E| +0#0000000&@24
@2|I+0#af5f00255&|M| +0#0000000&@43|I+0#af5f00255&|M| +0#0000000&@24
@2|A+0#af5f00255&|B|S| +0#0000000&@42|A+0#af5f00255&|B|S| +0#0000000&@23
@2|A+0#af5f00255&|R|G| +0#0000000&@42|A+0#af5f00255&|R|G| +0#0000000&@23
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@57|3|2|5|,|3| @8|1|5|%|

View File

@@ -0,0 +1,20 @@
| +0&#ffffff0@1|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|C+0#af5f00255&|O|N|J| +0#0000000&@41|C+0#af5f00255&|O|N|J| +0#0000000&@22
@2|=+0#af5f00255&| +0#0000000&@44|=+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&|=| +0#0000000&@43|/+0#af5f00255&|=| +0#0000000&@24
@2|~+0#af5f00255&|=| +0#0000000&@43|~+0#af5f00255&|=| +0#0000000&@24
@2>^+0#af5f00255&|=| +0#0000000&@43|^+0#af5f00255&|=| +0#0000000&@24
@2|E+0#af5f00255&|Q| +0#0000000&@43|E+0#af5f00255&|Q| +0#0000000&@24
@2|N+0#af5f00255&|E| +0#0000000&@43|N+0#af5f00255&|E| +0#0000000&@24
@2|++0#af5f00255&| +0#0000000&@44|++0#af5f00255&| +0#0000000&@25
@2|-+0#af5f00255&| +0#0000000&@44|-+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&| +0#0000000&@44|*+0#af5f00255&| +0#0000000&@25
@2|/+0#af5f00255&| +0#0000000&@44|/+0#af5f00255&| +0#0000000&@25
@2|*+0#af5f00255&@1| +0#0000000&@43|*+0#af5f00255&@1| +0#0000000&@24
@2|U+0#af5f00255&|P| +0#0000000&@43|U+0#af5f00255&|P| +0#0000000&@24
@2|^+0#af5f00255&| +0#0000000&@44|^+0#af5f00255&| +0#0000000&@25
@2|++0#af5f00255&|:|=| +0#0000000&@42|++0#af5f00255&|:|=| +0#0000000&@23
@2|-+0#af5f00255&|:|=| +0#0000000&@42|-+0#af5f00255&|:|=| +0#0000000&@23
@2|*+0#af5f00255&|:|=| +0#0000000&@42|*+0#af5f00255&|:|=| +0#0000000&@23
@2|/+0#af5f00255&|:|=| +0#0000000&@42|/+0#af5f00255&|:|=| +0#0000000&@23
@57|3|4|3|,|3| @8|1|6|%|

Some files were not shown because too many files have changed in this diff Show More