-*version9.txt* For Vim version 9.0. Last change: 2023 Dec 21
+*version9.txt* For Vim version 9.0. Last change: 2023 Dec 24
VIM REFERENCE MANUAL by Bram Moolenaar
Files: src/getchar.c, src/misc2.c, src/testdir/test_termcodes.vim
Patch 8.2.4830
-Problem: Possible endless loop if there is unused typahead.
+Problem: Possible endless loop if there is unused typeahead.
Solution: Only loop when the typeahead changed.
Files: src/channel.c
Vim9 classes
------------
-Support for classes and objects in a Vim9 script are added. The following
-features are supported:
+Support for classes and objects in a Vim9 script are added. This is described
+in |vim9-class|. The following features are supported:
- Defining classes and instantiating objects
- Multiple constructors
- Class variables and methods
Virtual text
------------
+Support for adding |virtual-text| to a buffer is added. This is useful for
+language server features (e.g. inlay hints)
Smooth Scroll
-------------
+Support for scrolling text using screen lines instead of file lines is added.
+Refer to the 'smoothscroll' option.
+
+EditorConfig and JSON formatting plugins are included.
+
+OpenVMS x86_64 platform port.
Other improvements *new-other-9.1*
------------------
+- Support for undercurl (|t_Ce|), double underline (|t_Us|), dotted underline
+ (|t_ds|) and dashed underline (|t_Ds|) termcap entries.
+- The 'fillchars' option is now a global-local option.
+- The |vertical| and |horizontal| modifiers can be used with ":wincmd ="
+ command to equalize windows vertically or horizontally.
+- |:defer| command to defer the execution of a function till the end of a
+ function.
+- Support for closing a tab page using the middle mouse button.
+- Sound support in MacOS.
+- The |prop_remove()| function can now remove multiple text properties.
+- The |items()| function now supports a List or a String argument.
+- Command line completion support for |:runtime| command.
+- Support for multiple "%=" items in 'statusline'
+- Support for the PmenuKind, PmenuKindSel, PmenuExtra and PmenuExtraSel
+ highlight groups.
+- xxd: support for using colors in the hex dump output
+- xxd: reversing a bit dump
+- Text properties can override 'cursorline' highlight.
+- Support for echoing messages in a popup window |:echowindow|.
+- Control scroll behavior when spliting windows 'splitkeep'.
+- Specify the character used for the last window line 'fillchars'
+- Support for mouse scrolling in the MS-Windows console.
+- Support for using different keyboard protocols 'keyprotocol'
+- Support for UTF-16 string index.
+- Quickfix list items can have associated custom user data.
+- |reverse()| supports reversing a string
+- 'switchbuf' is used by more commands.
+- |undotree()| can be used with any buffer.
+- |printf()| supports positional arguments
+- Support for custom completion using |getcompletion()|
+- Support for Python3 stable ABI
+- Use |jumplist| like a stack
+- Command-line completion support for option values
+- Support for writing extended attributes in Linux
+- 'errorformat' supports parsing a buffer number (|%b|)
+- Termdebug: Support for variables window, moving up/down the stack frames and
+ setting temporary breakpoints
Changed *changed-9.1*
-------
+- The features |++builtin_terms|, |+cmdline_info|, |+cmdwin|, |+file_in_path|,
+ |+float|, |+path_extra|, |+textobjects|, |+wildignore| and |+wildmenu| are
+ available in all the builds.
+- Support for Windows-XP is dropped.
+- The "small" and "big" builds are dropped in favor of "tiny" and "huge"
+ builds.
+- Support for VisVim is removed.
+- The optional Content-Type header is removed from the LSP messages.
+- |charidx()| returns the character length when the index is one more than the
+ last byte index.
+- Ctrl-Q works like Ctrl-V in replace mode.
+- |popup_filter_menu()| now wraps around.
+- |g<End>| now jumps to the last non-blank character
+- dot and hypen are supported in highlight group names
+- |executable()| resolves symlinks on MS-Windows.
Added *added-9.1*
-----
Options: ~
+'endoffile' write CTRL-Z at end of the file
'jumpoptions' specifies how jumping is done
'keyprotocol' what keyboard protocol to use for what terminal
'lispoptions' changes how Lisp indenting is done
features, but does not include runtime file changes (syntax, indent, ftplugin,
documentation, etc.)
+Note: authorship and the list of changed files is left out and only visible
+through `git log` for each commit.
+
Patch 9.0.0001
Problem: Travis CI is no longer used.
Solution: Delete the Travis CI configuration. (Hugo Osvaldo Barrera,
Solution: Stop Visual mode when closing a window.
Patch 9.0.0018
-Problem: Going over the end of the typahead.
+Problem: Going over the end of the typeahead.
Solution: Put a NUL after the typeahead.
Patch 9.0.0019
Solution: Use AC_CACHE_CHECK(). (Richard Purdie, closes #10777)
Patch 9.0.0066
-Problem: Switching window uneccarily when getting buffer options.
+Problem: Switching window unnecessarily when getting buffer options.
Solution: Do not switch window when getting buffer options. (closes #10767)
Patch 9.0.0067
Patch 9.0.0098
Problem: missing include file in timer_create configure check.
-Solution: Inlucde stdlib.h.
+Solution: Include stdlib.h.
Patch 9.0.0099
Problem: Scrollback can be wrong after redrawing the command line.
Patch 9.0.0166
Problem: When using text properties the line text length is computed twice.
-Solution: If the text lenght was already computed don't do it again.
+Solution: If the text length was already computed don't do it again.
Patch 9.0.0167
Problem: Checking for text properties could be a bit more efficient.
Solution: Recompute the length of attributes.
Patch 9.0.0185
-Problem: Virtual text does not show if tehre is a text prop at same
+Problem: Virtual text does not show if there is a text prop at same
position. (Ben Jackson)
Solution: Fix the sorting of properties. (closes #10879)
Solution: Invalidate the cursor position. (closes #10898)
Patch 9.0.0195
-Problem: Metafun files are not recogized.
+Problem: Metafun files are not recognized.
Solution: Add filetype detection patterns.
Patch 9.0.0196
Solution: Add the padding for right-alignment. (issue #10906)
Patch 9.0.0200
-Problem: cursor in a wrong positoin if 'wrap' is off and using two right
+Problem: cursor in a wrong position if 'wrap' is off and using two right
aligned text props in one line.
Solution: Count an extra line for a right aligned text property after a
below or right aligned text property. (issue #10909)
Patch 9.0.0303
Problem: It is not easy to get information about a script.
-Solution: Make getscriptinf() return the version. When selecting a specific
+Solution: Make getscriptinfo() return the version. When selecting a specific
script return functions and variables. (Yegappan Lakshmanan,
closes #10991)
Solution: Check index in w_lines is smaller than Rows.
Patch 9.0.0310
-Problem: Output of :messages dissappears when cmdheight is zero.
+Problem: Output of :messages disappears when cmdheight is zero.
Solution: Do not use the messages window for :messages. Make Esc close the
messages window.
Patch 9.0.0361
Problem: Removing a listener may result in a memory leak and remove
- subsequent listerns.
+ subsequent listeners.
Solution: Init the "prev" pointer only once. (Yegappan Lakshmanan,
closes #11039)
Solution: Switch from clang 14 to 15. (closes #11066)
Patch 9.0.0402
-Problem: Javascript module files are not recoginzed.
+Problem: Javascript module files are not recognized.
Solution: Recognize "*.jsm" files as Javascript. (Brett Holman,
closes #11069)
Solution: Do not wait for the ruler to show up. (issue #11106)
Patch 9.0.0442
-Problem: Virtual text "above" doesn't handel line numbers.
+Problem: Virtual text "above" doesn't handle line numbers.
Solution: Take the left column offset into account. (issue #11084)
Also make padding work.
Solution: Add missing change.
Patch 9.0.0468
-Problem: Exectution stack underflow without the +eval feature. (Dominique
+Problem: Execution stack underflow without the +eval feature. (Dominique
Pellé)
Solution: Add to execution stack without FEAT_EVAL. (closes #11135)
Solution: Remove remaining FEAT_EVAL.
Patch 9.0.0494
-Problem: Small build misses float function declaraitons.
+Problem: Small build misses float function declarations.
Solution: Adjust #ifdefs.
Patch 9.0.0495
Patch 9.0.0601
Problem: Too much indent.
-Solution: Return out early from a funtion. (Yegappan Lakshmanan,
+Solution: Return out early from a function. (Yegappan Lakshmanan,
close #11238)
Patch 9.0.0602
Solution: Add tests, fix uncovered problem.
Patch 9.0.0653
-Problem: BS and DEL do not work properly in an interacive shell. (Gary
+Problem: BS and DEL do not work properly in an interactive shell. (Gary
Johnson)
Solution: Adjust the length for replaced codes.
Solution: Add TextChangedT. (Shougo Matsushita, closes #11366)
Patch 9.0.0757
-Problem: Line number not visisble with 'smoothscroll', 'nu' and 'rnu'.
+Problem: Line number not visible with 'smoothscroll', 'nu' and 'rnu'.
Solution: Put the ">>>" after the line number instead of on top.
Patch 9.0.0758
closes #11379)
Patch 9.0.0771
-Problem: Cannot always tell the difference beween tex and rexx files.
+Problem: Cannot always tell the difference between tex and rexx files.
Solution: Recognize tex by a leading backslash. (Martin Tournoij,
closes #11380)
Solution: Include libvterm changes from revision 790 to 801.
Patch 9.0.0773
-Problem: Huge build on macos uses dynamic Perl.
+Problem: Huge build on MacOS uses dynamic Perl.
Solution: Use built-in Perl, uninstall the brew one. (closes #11382)
Patch 9.0.0774
Patch 9.0.0838
Problem: Compiler warnings for unused variables.
-Solution: Addjust #ifdef and remove unused variables. (John Marriott)
+Solution: Adjust #ifdef and remove unused variables. (John Marriott)
Patch 9.0.0839
Problem: Test may fail depending on sequence of events.
Patch 9.0.0927
Problem: Coverity warns for using a NULL pointer.
-Solution: Check for memory allocaion failure.
+Solution: Check for memory allocation failure.
Patch 9.0.0928
Problem: Using Ruby LDFLAGS may cause build problems.
Patch 9.0.1251
Problem: Checking returned value of ga_grow() is inconsistent.
-Solution: Check for FAIL instaed of "not OK". (Yegappan Lakshmanan,
+Solution: Check for FAIL instead of "not OK". (Yegappan Lakshmanan,
closes #11897)
Patch 9.0.1252
Patch 9.0.1453
Problem: Typos in source code and tests.
-Solution: Fi the typos. (Dominique Pellé, closes #12217)
+Solution: Fix the typos. (Dominique Pellé, closes #12217)
Patch 9.0.1454
Problem: Code indenting is confused by macros.
Patch 9.0.1550
Problem: In cmdline window S-Tab does not select previous completion.
(Maxim Kim)
-Solution: Add a mappint for S-Tab. (closes #12116)
+Solution: Add a mapping for S-Tab. (closes #12116)
Patch 9.0.1551
Problem: Position of marker for 'smoothscroll' not computed correctly.
Patch 9.0.1617
Problem: charidx() and utf16idx() result is not consistent with byteidx().
Solution: When the index is equal to the length of the text return the
- lenght of the text instead of -1. (Yegappan Lakshmanan,
+ length of the text instead of -1. (Yegappan Lakshmanan,
closes #12503)
Patch 9.0.1618
Solution: Allow to wrap around by default
Patch 9.0.1708
-Problem: getcompletion() failes for user-defined commands
+Problem: getcompletion() fails for user-defined commands
Solution: set context for completion function
Patch 9.0.1709
Patch 9.0.1779
Problem: Need more state() tests
-Solution: Add a few more tests for operater pending mode and register
+Solution: Add a few more tests for operator pending mode and register
yank command
Patch 9.0.1780
the default value anyway.
Patch 9.0.1791
-Problem: No tests for the termdebug plugin
-Solution: Add some simple tests for the termdebug plugin
+Problem: No tests for the Termdebug plugin
+Solution: Add some simple tests for the Termdebug plugin
Patch 9.0.1792
Problem: Normal mode "gM", "gj", "gk" commands behave incorrectly with
Solution: Filetype detect Crystal scripts by shebang line
Patch 9.0.1808
-Problem: termdebug: Typo in termdebug test
+Problem: Termdebug: Typo in Termdebug test
Solution: fix the typos
Patch 9.0.1809
-Problem: termdebug test flayk
+Problem: Termdebug test flaky
Solution: wait slightly longer
Patch 9.0.1810
Solution: give even more time to complete
Patch 9.0.1869
-Problem: Coverity warns about unitialized var
+Problem: Coverity warns about uninitialized var
Solution: initialize it
Patch 9.0.1870
Solution: Fix tests, make CI happy ;)
Patch 9.0.1890
-Problem: Vim9: lookup code for class/object repaeated
+Problem: Vim9: lookup code for class/object repeated
Solution: Refactor and make use of lookup functions
Patch 9.0.1891
Patch 9.0.1898
Problem: Vim9: restrict access to static vars and methods
-Solution: Class members are accesible only from the class where they are
+Solution: Class members are accessible only from the class where they are
defined.
Patch 9.0.1899
Solution: Make the test check the channel feature
Patch 9.0.2043
-Problem: Vim9: issue with funcref assignmentand varargs
+Problem: Vim9: issue with funcref assignment and varargs
Solution: Fix funcref type checking
Patch 9.0.2044
Problem: Vim9: exceptions confuse defered functions
-Solution: save and restore exception state when calling defered
+Solution: save and restore exception state when calling deferred
functions
Patch 9.0.2045
Solution: Block any terminal codes when silent mode is on
Patch 9.0.2100
-Problem: CI: test_termdebug fails
+Problem: CI: test_Termdebug fails
Solution: only test for a changed winlayout, if the window
width actually changed
Patch 9.0.2110
Problem: [security]: overflow in ex address parsing
-Solution: Verify that lnum is positive, before substracting from
+Solution: Verify that lnum is positive, before subtracting from
LONG_MAX
Patch 9.0.2111
Patch 9.0.2141
Problem: [security]: buffer-overflow in suggest_trie_walk
-Solution: Check n before using it as index into byts array
+Solution: Check n before using it as index into bytes array
Patch 9.0.2142
Problem: [security]: stack-buffer-overflow in option callback functions
Patch 9.0.2161
Problem: Vim9: not able to use imported interfaces and classes
-Solution: Detect imported class/interfaces names correclty
+Solution: Detect imported class/interfaces names correctly
Patch 9.0.2162
Problem: Vim9: type documentation out-dated