Vim/src
Bram Moolenaar f6a44f714a patch 8.2.1753: Vim9: crash when using import at script level
Problem:    Vim9: crash when using import at script level.
Solution:   Give a "not implemented yet" error. (closes #7026)
2020-09-27 13:51:14 +02:00
..
GvimExt patch 8.2.0249: MS-Windows: various warnings 2020-02-12 21:52:32 +01:00
VisVim
auto patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
if_perl_msvc
libvterm patch 8.2.1547: various comment problems 2020-08-30 19:26:45 +02:00
os_mac_rsrc
po Update runtime files. 2020-09-07 22:18:52 +02:00
proto patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set 2020-09-26 22:03:00 +02:00
tee patch 8.2.1173: tee doesn't build on some systems 2020-07-10 20:45:31 +02:00
testdir patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?> 2020-09-27 13:16:46 +02:00
xdiff patch 8.1.2389: using old C style comments 2019-12-04 22:16:54 +01:00
xpm
xxd patch 8.2.0854: xxd cannot show offset as a decimal number 2020-05-30 20:50:25 +02:00
INSTALL patch 8.2.1215: Atari MiNT support is outdated 2020-07-14 23:02:44 +02:00
INSTALLami.txt patch 8.2.1648: Amiga: no common build file for Amiga (-like) systems 2020-09-09 20:41:40 +02:00
INSTALLmac.txt patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
INSTALLpc.txt Update runtime files. 2020-01-21 22:33:58 +01:00
INSTALLvms.txt patch 8.2.0156: various typos in source files and tests 2020-01-26 22:00:26 +01:00
INSTALLx.txt
Make_all.mak patch 8.2.0630: "make tags" does not cover Haiku GUI file 2020-04-24 21:21:06 +02:00
Make_ami.mak patch 8.2.1648: Amiga: no common build file for Amiga (-like) systems 2020-09-09 20:41:40 +02:00
Make_cyg.mak
Make_cyg_ming.mak patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
Make_ming.mak
Make_mvc.mak patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
Make_vms.mms patch 8.2.1444: error messages are spread out and names can be confusing 2020-08-13 22:47:35 +02:00
Makefile patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
README.md patch 8.2.1269: language and locale code spread out 2020-07-22 19:11:19 +02:00
alloc.h
arabic.c
arglist.c patch 8.2.1547: various comment problems 2020-08-30 19:26:45 +02:00
ascii.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
autocmd.c patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment 2020-08-20 15:02:42 +02:00
beval.c patch 8.2.1049: Vim9: leaking memory when using continuation line 2020-06-24 20:34:03 +02:00
beval.h patch 8.2.0622: Haiku: GUI does not compile 2020-04-23 15:41:49 +02:00
bigvim.bat
bigvim64.bat
blob.c patch 8.2.0149: maintaining a Vim9 branch separately is more work 2020-01-26 15:56:19 +01:00
blowfish.c patch 8.2.0559: clearing a struct is verbose 2020-04-12 19:37:17 +02:00
buffer.c patch 8.2.1280: Ex command error cannot contain an argument 2020-07-23 16:37:03 +02:00
bufwrite.c patch 8.2.0966: 'shortmess' flag "n" not used in two places 2020-06-12 22:31:00 +02:00
change.c patch 8.2.1690: text properties not adjusted for "I" in Visual block mode 2020-09-15 21:34:18 +02:00
channel.c patch 8.2.1661: cannot connect to 127.0.0.1 for host with only IPv6 addresses 2020-09-11 19:28:19 +02:00
charset.c patch 8.2.0943: displaying ^M or ^J depends on current buffer 2020-06-10 14:16:49 +02:00
cindent.c patch 8.2.0864: pragmas are indented all the way to the left 2020-05-31 17:49:30 +02:00
clientserver.c patch 8.2.1411: when splitting a window localdir is copied but prevdir is not 2020-08-09 21:45:52 +02:00
clipboard.c patch 8.2.0907: when using :global clipboard isn't set correctly 2020-06-05 20:03:16 +02:00
cmdexpand.c patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
cmdhist.c patch 8.2.1281: the "trailing characters" error can be hard to understand 2020-07-23 17:16:18 +02:00
config.h.in patch 8.2.0988: getting directory contents is always case sorted 2020-06-16 20:03:43 +02:00
config.mk.dist
config.mk.in patch 8.2.0910: Vim is not reproducibly buildable 2020-06-05 23:16:29 +02:00
configure
configure.ac patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
create_cmdidxs.vim
crypt.c patch 8.1.2368: using old C style comments 2019-11-30 20:52:27 +01:00
crypt_zip.c patch 8.1.2368: using old C style comments 2019-11-30 20:52:27 +01:00
debugger.c patch 8.2.1653: expand('<stack>') does not include the final line number 2020-09-10 19:25:05 +02:00
dehqx.py
dict.c patch 8.2.1698: cannot lock a variable in legacy Vim script like in Vim9 2020-09-16 21:08:28 +02:00
diff.c patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case 2020-06-09 19:34:54 +02:00
digraph.c patch 8.2.1635: no digraph for 0x2022 BULLET 2020-09-08 19:06:30 +02:00
dimm.idl
dlldata.c
dosinst.c patch 8.2.0437: MS-Windows installer contains old stuff 2020-03-23 22:17:11 +01:00
dosinst.h patch 8.2.0273: MS-Windows uninstall may delete wrong batch file 2020-02-17 22:53:14 +01:00
drawline.c patch 8.2.1689: 'colorcolumn' doesn't show in indent 2020-09-15 20:52:26 +02:00
drawscreen.c patch 8.2.1488: text does not scroll when inserting above first line 2020-08-19 20:19:48 +02:00
edit.c patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function 2020-09-08 22:45:35 +02:00
errors.h patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
eval.c patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
evalbuffer.c patch 8.2.1602: Vim9: cannot use 'true" with getbufinfo() 2020-09-05 17:37:07 +02:00
evalfunc.c patch 8.2.1751: using 2 where bool is expected may throw an error 2020-09-26 22:39:24 +02:00
evalvars.c patch 8.2.1753: Vim9: crash when using import at script level 2020-09-27 13:51:14 +02:00
evalwindow.c patch 8.2.1727: a popup created with "cursorline" will ignore "firstline" 2020-09-22 21:55:41 +02:00
ex_cmdidxs.h patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
ex_cmds.c patch 8.2.1460: error messages are spread out 2020-08-15 16:33:28 +02:00
ex_cmds.h patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
ex_cmds2.c patch 8.2.1269: language and locale code spread out 2020-07-22 19:11:19 +02:00
ex_docmd.c patch 8.2.1746: Vim9: cannot use "fina" for "finally" 2020-09-26 17:20:53 +02:00
ex_eval.c patch 8.2.1653: expand('<stack>') does not include the final line number 2020-09-10 19:25:05 +02:00
ex_getln.c patch 8.2.1679: Vim9: ":*" is not recognized as a range 2020-09-14 16:37:34 +02:00
feature.h patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
fileio.c patch 8.2.1570: configure check for dirfd() does not work on HPUX 2020-09-02 21:21:35 +02:00
filepath.c patch 8.2.1743: cannot build without the eval feature 2020-09-25 23:49:01 +02:00
findfile.c patch 8.2.1684: "gF" does not use line number after file in Visual mode 2020-09-14 19:11:45 +02:00
fold.c patch 8.2.1702: crash when using undo after deleting folded lines 2020-09-17 19:36:04 +02:00
getchar.c patch 8.2.1729: endless loop when ":normal" feeds popup window filter 2020-09-23 12:29:11 +02:00
glbl_ime.cpp
glbl_ime.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
globals.h patch 8.2.1729: endless loop when ":normal" feeds popup window filter 2020-09-23 12:29:11 +02:00
gui.c patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
gui.h patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
gui_at_fs.c patch 8.1.2380: using old C style comments 2019-12-01 22:11:18 +01:00
gui_at_sb.c patch 8.1.2380: using old C style comments 2019-12-01 22:11:18 +01:00
gui_at_sb.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
gui_athena.c patch 8.2.1228: scrollbars not flush against the window edges when maximised 2020-07-17 20:43:43 +02:00
gui_beval.c patch 8.2.0943: displaying ^M or ^J depends on current buffer 2020-06-10 14:16:49 +02:00
gui_dwrite.cpp
gui_dwrite.h
gui_gtk.c patch 8.2.1649: GTK3: using old file chooser 2020-09-09 20:58:55 +02:00
gui_gtk_f.c patch 8.2.0559: clearing a struct is verbose 2020-04-12 19:37:17 +02:00
gui_gtk_f.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
gui_gtk_res.xml
gui_gtk_vms.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
gui_gtk_x11.c patch 8.2.1645: GTK3: icons become broken images when resized 2020-09-09 19:05:13 +02:00
gui_haiku.cc patch 8.2.1442: outdated references to the Mac Carbon GUI 2020-08-13 21:05:39 +02:00
gui_haiku.h patch 8.2.0320: no Haiku support 2020-02-26 16:16:53 +01:00
gui_motif.c patch 8.2.1715: Motif GUI: commented out code missed {} 2020-09-20 21:13:27 +02:00
gui_photon.c patch 8.2.1335: CTRL-C in the GUI doesn't interrupt 2020-08-01 13:10:14 +02:00
gui_w32.c patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?> 2020-09-27 13:16:46 +02:00
gui_w32_rc.h
gui_x11.c patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?> 2020-09-27 13:16:46 +02:00
gui_x11_pm.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
gui_xim.c patch 8.2.1107: 'imactivatefunc' and 'imstatusfunc' are not used in the GUI 2020-07-01 15:12:44 +02:00
gui_xmdlg.c patch 8.1.2383: using old C style comments 2019-12-02 22:49:38 +01:00
gui_xmebw.c patch 8.1.2383: using old C style comments 2019-12-02 22:49:38 +01:00
gui_xmebw.h
gui_xmebwp.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
gvim.exe.mnf patch 8.2.0053: windowsversion() does not always return the right value 2019-12-29 13:43:54 +01:00
gvimtutor
hardcopy.c patch 8.2.0559: clearing a struct is verbose 2020-04-12 19:37:17 +02:00
hashtab.c patch 8.2.1662: :mksession does not restore shared terminal buffer properly 2020-09-11 20:36:36 +02:00
help.c patch 8.2.1262: src/ex_cmds.c file is too big 2020-07-21 21:07:20 +02:00
highlight.c patch 8.2.1705: "verbose hi Name" reports incorrect info after ":hi clear" 2020-09-18 19:40:45 +02:00
if_cscope.c patch 8.2.1513: cannot interrupt shell used for filename expansion 2020-08-23 14:28:37 +02:00
if_cscope.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
if_lua.c patch 8.2.1234: Lua build problem with old compiler 2020-07-18 12:50:35 +02:00
if_mzsch.c patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
if_mzsch.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
if_ole.cpp patch 8.2.1049: Vim9: leaking memory when using continuation line 2020-06-24 20:34:03 +02:00
if_ole.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
if_ole.idl
if_perl.xs patch 8.2.1655: cannot build with Strawberry Perl 5.32.0 2020-09-10 21:36:11 +02:00
if_perlsfio.c patch 8.1.2387: using old C style comments 2019-12-04 21:24:53 +01:00
if_py_both.h patch 8.2.1538: Python: iteration over vim objects fails to keep reference 2020-08-29 12:57:16 +02:00
if_python.c patch 8.2.0479: unloading shared libraries on exit has no purpose 2020-03-29 20:51:07 +02:00
if_python3.c patch 8.2.1381: MS-Windows: crash with Python 3.5 when stdin is redirected 2020-08-06 21:47:11 +02:00
if_ruby.c patch 8.2.0967: unnecessary type casts for vim_strnsave() 2020-06-12 22:59:11 +02:00
if_tcl.c patch 8.2.1049: Vim9: leaking memory when using continuation line 2020-06-24 20:34:03 +02:00
if_xcmdsrv.c patch 8.1.2387: using old C style comments 2019-12-04 21:24:53 +01:00
iid_ole.c patch 8.2.0027: still some /* */ comments 2019-12-21 18:47:26 +01:00
indent.c patch 8.2.1086: possibly using freed memory when text properties used 2020-06-29 20:40:37 +02:00
infplist.xml
insexpand.c patch 8.2.1673: complete_info() selected index has an invalid value 2020-09-12 22:52:57 +02:00
install-sh
installman.sh
installml.sh
iscygpty.c patch 8.2.0027: still some /* */ comments 2019-12-21 18:47:26 +01:00
iscygpty.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
job.c patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start 2020-09-06 18:22:53 +02:00
json.c patch 8.2.1281: the "trailing characters" error can be hard to understand 2020-07-23 17:16:18 +02:00
json_test.c patch 8.1.2388: using old C style comments 2019-12-04 21:57:43 +01:00
keymap.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
kword_test.c patch 8.2.0559: clearing a struct is verbose 2020-04-12 19:37:17 +02:00
link.390
link.sh
list.c patch 8.2.1701: Vim9: sort("i") does not work 2020-09-16 23:23:36 +02:00
locale.c patch 8.2.1269: language and locale code spread out 2020-07-22 19:11:19 +02:00
macros.h patch 8.2.1370: MS-Windows: warning for using fstat() with stat_T 2020-08-05 12:10:50 +02:00
main.c patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
map.c patch 8.2.1577: Vim9: hasmapto()/mapcheck()/maparg() do nottake "true" arg 2020-09-02 22:25:35 +02:00
mark.c patch 8.2.1252: ":marks" may show '< and '> mixed up 2020-07-19 22:09:06 +02:00
match.c patch 8.2.1460: error messages are spread out 2020-08-15 16:33:28 +02:00
mbyte.c patch 8.2.1547: various comment problems 2020-08-30 19:26:45 +02:00
memfile.c patch 8.2.1215: Atari MiNT support is outdated 2020-07-14 23:02:44 +02:00
memfile_test.c patch 8.1.2388: using old C style comments 2019-12-04 21:57:43 +01:00
memline.c patch 8.2.1670: a couple of gcc compiler warnings 2020-09-12 21:04:23 +02:00
menu.c patch 8.2.1729: endless loop when ":normal" feeds popup window filter 2020-09-23 12:29:11 +02:00
message.c patch 8.2.1653: expand('<stack>') does not include the final line number 2020-09-10 19:25:05 +02:00
message_test.c patch 8.2.0608: warning from clang when building message test 2020-04-20 16:12:09 +02:00
misc1.c patch 8.2.0967: unnecessary type casts for vim_strnsave() 2020-06-12 22:59:11 +02:00
misc2.c patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?> 2020-09-27 13:16:46 +02:00
mouse.c patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function 2020-09-08 22:45:35 +02:00
move.c patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set 2020-09-26 22:03:00 +02:00
msvc2008.bat
msvc2010.bat
msvc2015.bat
msvcsetup.bat
msys32.bat
msys64.bat
mysign
nbdebug.c patch 8.1.2392: using old C style comments 2019-12-05 20:12:41 +01:00
nbdebug.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
netbeans.c patch 8.2.0599: Netbeans interface insufficiently tested 2020-04-19 14:02:26 +02:00
normal.c patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function 2020-09-08 22:45:35 +02:00
ops.c patch 8.2.1694: compiler warning for loss if data 2020-09-16 15:46:08 +02:00
option.c patch 8.2.1670: a couple of gcc compiler warnings 2020-09-12 21:04:23 +02:00
option.h patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
optiondefs.h patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
optionstr.c patch 8.2.1595: cannot easily see what Vim sends to the terminal 2020-09-05 14:27:24 +02:00
os_amiga.c patch 8.2.1513: cannot interrupt shell used for filename expansion 2020-08-23 14:28:37 +02:00
os_amiga.h patch 8.2.1640: Amiga: missing header for getgrgid() 2020-09-09 13:01:27 +02:00
os_dos.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
os_haiku.h patch 8.2.0320: no Haiku support 2020-02-26 16:16:53 +01:00
os_haiku.rdef.in patch 8.2.0667: cannot install Haiku version from source 2020-04-30 19:54:38 +02:00
os_mac.h patch 8.2.1422: the Mac GUI implementation is outdated 2020-08-11 21:58:20 +02:00
os_mac.rsr.hqx
os_mac_conv.c patch 8.2.1738: Mac: str2float() recognizes comma instead of decimal point 2020-09-24 23:08:19 +02:00
os_macosx.m patch 8.2.1442: outdated references to the Mac Carbon GUI 2020-08-13 21:05:39 +02:00
os_mswin.c patch 8.2.0774: t_TI and t_TE are output when using 'visualbell' 2020-05-17 14:06:16 +02:00
os_qnx.c patch 8.1.2393: using old C style comments 2019-12-05 20:28:46 +01:00
os_qnx.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
os_unix.c patch 8.2.1676: compiler warnings for function typecast 2020-09-13 22:00:12 +02:00
os_unix.h patch 8.2.0711: temp directory might be cleared 2020-05-07 18:37:03 +02:00
os_unixx.h patch 8.2.0464: typos and other small problems 2020-03-27 20:58:37 +01:00
os_vms.c patch 8.2.0774: t_TI and t_TE are output when using 'visualbell' 2020-05-17 14:06:16 +02:00
os_vms_conf.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
os_vms_fix.com
os_vms_mms.c
os_w32dll.c
os_w32exe.c
os_win32.c patch 8.2.1582: the channel log does not show typed text 2020-09-03 19:25:11 +02:00
os_win32.h patch 8.2.0246: MSVC: deprecation warnings with Ruby 2020-02-11 23:01:39 +01:00
osdef.sh patch 8.2.0176: generating os headers does not work for Swedish 2020-01-29 22:29:40 +01:00
osdef1.h.in patch 8.2.0320: no Haiku support 2020-02-26 16:16:53 +01:00
osdef2.h.in
pathdef.sh
popupmenu.c patch 8.2.1239: "maxwidth" in 'completepopup' not obeyed 2020-07-18 21:40:41 +02:00
popupwin.c patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set 2020-09-26 22:03:00 +02:00
profiler.c patch 8.2.1539: using invalid script ID causes a crash 2020-08-29 13:39:17 +02:00
proto.h patch 8.2.1597: the channel source file is too big 2020-09-05 15:48:51 +02:00
protodef.h
pty.c patch 8.2.0849: BeOS code is not maintained and probably unused 2020-05-30 18:14:57 +02:00
quickfix.c patch 8.2.1677: memory access errors when calling setloclist() in autocommand 2020-09-13 22:21:22 +02:00
regexp.c patch 8.2.1633: some error messages are internal but do not use iemsg() 2020-09-07 18:53:21 +02:00
regexp.h patch 8.1.2366: using old C style comments 2019-11-30 19:44:38 +01:00
regexp_bt.c patch 8.2.1633: some error messages are internal but do not use iemsg() 2020-09-07 18:53:21 +02:00
regexp_nfa.c patch 8.2.1633: some error messages are internal but do not use iemsg() 2020-09-07 18:53:21 +02:00
register.c patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function 2020-09-08 22:45:35 +02:00
screen.c patch 8.2.1514: multibyte vertical separator is cleared when dragging popup 2020-08-23 15:09:36 +02:00
scriptfile.c patch 8.2.1658: expand('<stack>') has trailing ".." 2020-09-11 17:59:23 +02:00
search.c patch 8.2.1728: compiler warning for using uninitialized variable 2020-09-22 22:08:32 +02:00
session.c patch 8.2.1664: memory leak when using :mkview with a terminal buffer 2020-09-11 22:10:22 +02:00
sha256.c patch 8.1.2394: using old C style comments 2019-12-05 21:10:38 +01:00
sign.c patch 8.2.1558: signs test fails 2020-08-31 23:18:00 +02:00
sound.c patch 8.2.0085: dead code in builtin functions 2020-01-04 16:13:49 +01:00
spell.c patch 8.2.1696: unused (duplicate) macros 2020-09-16 17:30:27 +02:00
spell.h patch 8.2.1521: reading past end of buffer when reading spellfile 2020-08-24 20:05:50 +02:00
spellfile.c patch 8.2.1565: spellfile test sometimes fails 2020-09-02 12:58:48 +02:00
spellsuggest.c patch 8.2.1564: a few remaining errors from ubsan 2020-09-02 10:25:45 +02:00
structs.h patch 8.2.1692: build fails because TTFLAG_STATIC is missing 2020-09-16 15:41:09 +02:00
syntax.c patch 8.2.1678: crash when using ":set" after ":ownsyntax" 2020-09-13 22:37:34 +02:00
tag.c patch 8.2.1547: various comment problems 2020-08-30 19:26:45 +02:00
tearoff.bmp
term.c patch 8.2.1595: cannot easily see what Vim sends to the terminal 2020-09-05 14:27:24 +02:00
term.h patch 8.2.0863: cannot set a separate color for underline/undercurl 2020-05-31 16:42:30 +02:00
terminal.c patch 8.2.1664: memory leak when using :mkview with a terminal buffer 2020-09-11 22:10:22 +02:00
termlib.c patch 8.1.2395: using old C style comments 2019-12-05 21:33:15 +01:00
testing.c patch 8.2.1653: expand('<stack>') does not include the final line number 2020-09-10 19:25:05 +02:00
textformat.c patch 8.2.0901: formatting CJK text isn't optimal 2020-06-04 18:22:13 +02:00
textobject.c patch 8.2.0999: moving to next sentence gets stuck on quote 2020-06-18 15:33:25 +02:00
textprop.c patch 8.2.1714: text properties corrupted with substitute command 2020-09-20 21:04:35 +02:00
time.c patch 8.2.1628: Vim9: cannot pass "true" to timer_paused() 2020-09-06 18:39:38 +02:00
toolbar.phi
toolcheck
tools.bmp
typemap
typval.c patch 8.2.1751: using 2 where bool is expected may throw an error 2020-09-26 22:39:24 +02:00
ui.c patch 8.2.1582: the channel log does not show typed text 2020-09-03 19:25:11 +02:00
undo.c patch 8.2.1547: various comment problems 2020-08-30 19:26:45 +02:00
uninstall.c patch 8.2.0273: MS-Windows uninstall may delete wrong batch file 2020-02-17 22:53:14 +01:00
usercmd.c patch 8.2.0967: unnecessary type casts for vim_strnsave() 2020-06-12 22:59:11 +02:00
userfunc.c patch 8.2.1723: Vim9: Variable argument name cannot start with underscore 2020-09-21 22:02:49 +02:00
version.c patch 8.2.1753: Vim9: crash when using import at script level 2020-09-27 13:51:14 +02:00
version.h patch 8.2.0005: duplication in version info 2019-12-14 17:24:53 +01:00
vim.def Vim 8.2 release 2019-12-12 14:18:35 +01:00
vim.h patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
vim.ico
vim.rc patch 8.1.2423: MS-Windows properties shows version as "8, 1, 0" 2019-12-11 22:41:29 +01:00
vim.tlb
vim9.h patch 8.2.1734: Vim9: cannot use a funcref for a closure twice 2020-09-23 21:57:23 +02:00
vim9compile.c patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
vim9execute.c patch 8.2.1749: Vim9: crash when closure fails in nested function 2020-09-26 19:59:38 +02:00
vim9script.c patch 8.2.1744: Vim9: using ":const!" is weird 2020-09-26 15:09:30 +02:00
vim9type.c patch 8.2.1722: Vim9: cannot assign a lambda to a variable of type function 2020-09-21 21:48:21 +02:00
vim_alert.ico
vim_error.ico
vim_icon.xbm
vim_info.ico
vim_mask.xbm
vim_quest.ico
viminfo.c patch 8.2.1564: a few remaining errors from ubsan 2020-09-02 10:25:45 +02:00
vimrun.c patch 8.2.1507: using malloc() directly 2020-08-22 15:19:18 +02:00
vimtutor
which.sh
winclip.c patch 8.2.1039: cannot put NUL byte on clipboard 2020-06-22 20:30:27 +02:00
window.c patch 8.2.1748: closing split window in other tab may cause a crash 2020-09-26 19:11:39 +02:00
xpm_w32.c patch 8.1.2396: using old C style comments 2019-12-05 21:50:01 +01:00
xpm_w32.h

README.md

Vim Logo

Vim source code

Here are a few hints for finding your way around the source code. This doesn't make it less complex than it is, but it gets you started.

You might also want to read :help development.

Jumping around

First of all, use :make tags to generate a tags file, so that you can jump around in the source code.

To jump to a function or variable definition, move the cursor on the name and use the CTRL-] command. Use CTRL-T or CTRL-O to jump back.

To jump to a file, move the cursor on its name and use the gf command.

Most code can be found in a file with an obvious name (incomplete list):

File name Description
arglist.c handling argument list
autocmd.c autocommands
blob.c blob data type
buffer.c manipulating buffers (loaded files)
bufwrite.c writing a buffer to file
change.c handling changes to text
cindent.c C and Lisp indentation
clientserver.c client server functionality
clipboard.c handling the clipboard
cmdexpand.c command-line completion
cmdhist.c command-line history
debugger.c vim script debugger
diff.c diff mode (vimdiff)
drawline.c drawing a window line
drawscreen.c drawing the windows
eval.c expression evaluation
evalbuffer.c buffer related built-in functions
evalfunc.c built-in functions
evalvars.c vim variables
evalwindow.c window related built-in functions
fileio.c reading and writing files
filepath.c dealing with file names and paths
findfile.c search for files in 'path'
fold.c folding
getchar.c getting characters and key mapping
help.c vim help related functions
highlight.c syntax highlighting
indent.c text indentation
insexpand.c Insert mode completion
locale.c locale/language handling
map.c mapping and abbreviations
mark.c marks
match.c highlight matching
mbyte.c multi-byte character handling
memfile.c storing lines for buffers in a swapfile
memline.c storing lines for buffers in memory
menu.c menus
message.c (error) messages
mouse.c handling the mouse
ops.c handling operators ("d", "y", "p")
option.c options
optionstr.c handling string options
popupmenu.c popup menu
popupwin.c popup window
profiler.c vim script profiler
quickfix.c quickfix commands (":make", ":cn")
regexp.c pattern matching
register.c handling registers
scriptfile.c runtime directory handling and sourcing scripts
screen.c lower level screen functions
search.c pattern searching
session.c sessions and views
sign.c signs
spell.c spell checking core
spellfile.c spell file handling
spellsuggest.c spell correction suggestions
syntax.c syntax and other highlighting
tag.c tags
term.c terminal handling, termcap codes
testing.c testing: assert and test functions
textformat.c text formatting
textobject.c text objects
textprop.c text properties
time.c time and timer functions
typval.c vim script type/value functions
undo.c undo and redo
usercmd.c user defined commands
userfunc.c user defined functions
viminfo.c viminfo handling
window.c handling split windows

Debugging

If you have a reasonable recent version of gdb, you can use the :Termdebug command to debug Vim. See :help :Termdebug.

When something is time critical or stepping through code is a hassle, use the channel logging to create a time-stamped log file. Add lines to the code like this:

ch_log(NULL, "Value is now %02x", value);

After compiling and starting Vim, do:

:call ch_logfile('debuglog', 'w')

And edit debuglog to see what happens. The channel functions already have ch_log() calls, thus you always see that in the log.

Important Variables

The current mode is stored in State. The values it can have are NORMAL, INSERT, CMDLINE, and a few others.

The current window is curwin. The current buffer is curbuf. These point to structures with the cursor position in the window, option values, the file name, etc. These are defined in structs.h.

All the global variables are declared in globals.h.

The main loop

This is conveniently called main_loop(). It updates a few things and then calls normal_cmd() to process a command. This returns when the command is finished.

The basic idea is that Vim waits for the user to type a character and processes it until another character is needed. Thus there are several places where Vim waits for a character to be typed. The vgetc() function is used for this. It also handles mapping.

Updating the screen is mostly postponed until a command or a sequence of commands has finished. The work is done by update_screen(), which calls win_update() for every window, which calls win_line() for every line. See the start of screen.c for more explanations.

Command-line mode

When typing a :, normal_cmd() will call getcmdline() to obtain a line with an Ex command. getcmdline() contains a loop that will handle each typed character. It returns when hitting CR or Esc or some other character that ends the command line mode.

Ex commands

Ex commands are handled by the function do_cmdline(). It does the generic parsing of the : command line and calls do_one_cmd() for each separate command. It also takes care of while loops.

do_one_cmd() parses the range and generic arguments and puts them in the exarg_t and passes it to the function that handles the command.

The : commands are listed in ex_cmds.h. The third entry of each item is the name of the function that handles the command. The last entry are the flags that are used for the command.

Normal mode commands

The Normal mode commands are handled by the normal_cmd() function. It also handles the optional count and an extra character for some commands. These are passed in a cmdarg_t to the function that handles the command.

There is a table nv_cmds in normal.c which lists the first character of every command. The second entry of each item is the name of the function that handles the command.

Insert mode commands

When doing an i or a command, normal_cmd() will call the edit() function. It contains a loop that waits for the next character and handles it. It returns when leaving Insert mode.

Options

There is a list with all option names in option.c, called options[].

The GUI

Most of the GUI code is implemented like it was a clever terminal. Typing a character, moving a scrollbar, clicking the mouse, etc. are all translated into events which are written in the input buffer. These are read by the main code, just like reading from a terminal. The code for this is scattered through gui.c. For example, gui_send_mouse_event() for a mouse click and gui_menu_cb() for a menu action. Key hits are handled by the system-specific GUI code, which calls add_to_input_buf() to send the key code.

Updating the GUI window is done by writing codes in the output buffer, just like writing to a terminal. When the buffer gets full or is flushed, gui_write() will parse the codes and draw the appropriate items. Finally the system-specific GUI code will be called to do the work.

Debugging the GUI

Remember to prevent that gvim forks and the debugger thinks Vim has exited, add the -f argument. In gdb: run -f -g.

When stepping through display updating code, the focus event is triggered when going from the debugger to Vim and back. To avoid this, recompile with some code in gui_focus_change() disabled.

Contributing

If you would like to help making Vim better, see the CONTRIBUTING.md file.

This is README.md for version 8.2 of the Vim source code.