From da51dc9cf202772f60bd2da975dbef257bd9237c Mon Sep 17 00:00:00 2001 From: Eliseo Martínez Date: Mon, 12 May 2014 02:25:17 +0200 Subject: Introduce nvim namespace: Move files. Move files from src/ to src/nvim/. - src/nvim/ becomes the new root dir for nvim executable sources. - src/libnvim/ is planned to become root dir of the neovim library. --- src/nvim/CMakeLists.txt | 114 + src/nvim/api/buffer.c | 413 + src/nvim/api/buffer.h | 145 + src/nvim/api/defs.h | 74 + src/nvim/api/helpers.c | 578 + src/nvim/api/helpers.h | 90 + src/nvim/api/tabpage.c | 88 + src/nvim/api/tabpage.h | 47 + src/nvim/api/vim.c | 321 + src/nvim/api/vim.h | 158 + src/nvim/api/window.c | 184 + src/nvim/api/window.h | 115 + src/nvim/arabic.c | 1532 ++ src/nvim/arabic.h | 16 + src/nvim/ascii.h | 97 + src/nvim/blowfish.c | 622 + src/nvim/blowfish.h | 13 + src/nvim/buffer.c | 4657 ++++++ src/nvim/buffer.h | 81 + src/nvim/buffer_defs.h | 1081 ++ src/nvim/charset.c | 1918 +++ src/nvim/charset.h | 66 + src/nvim/crypt.c | 236 + src/nvim/crypt.h | 82 + src/nvim/cursor_shape.c | 209 + src/nvim/cursor_shape.h | 52 + src/nvim/diff.c | 2611 ++++ src/nvim/diff.h | 33 + src/nvim/digraph.c | 1881 +++ src/nvim/digraph.h | 12 + src/nvim/edit.c | 8444 ++++++++++ src/nvim/edit.h | 58 + src/nvim/eval.c | 19819 ++++++++++++++++++++++++ src/nvim/eval.h | 152 + src/nvim/eval_defs.h | 116 + src/nvim/ex_cmds.c | 6374 ++++++++ src/nvim/ex_cmds.h | 75 + src/nvim/ex_cmds2.c | 3541 +++++ src/nvim/ex_cmds2.h | 95 + src/nvim/ex_cmds_defs.h | 1191 ++ src/nvim/ex_docmd.c | 9109 +++++++++++ src/nvim/ex_docmd.h | 69 + src/nvim/ex_eval.c | 2073 +++ src/nvim/ex_eval.h | 159 + src/nvim/ex_getln.c | 5443 +++++++ src/nvim/ex_getln.h | 66 + src/nvim/farsi.c | 2994 ++++ src/nvim/farsi.h | 183 + src/nvim/file_search.c | 1565 ++ src/nvim/file_search.h | 23 + src/nvim/fileio.c | 8148 ++++++++++ src/nvim/fileio.h | 94 + src/nvim/fold.c | 3033 ++++ src/nvim/fold.h | 65 + src/nvim/func_attr.h | 110 + src/nvim/garray.c | 197 + src/nvim/garray.h | 31 + src/nvim/getchar.c | 4333 ++++++ src/nvim/getchar.h | 77 + src/nvim/globals.h | 1140 ++ src/nvim/hardcopy.c | 3175 ++++ src/nvim/hardcopy.h | 93 + src/nvim/hashtab.c | 431 + src/nvim/hashtab.h | 56 + src/nvim/if_cscope.c | 2167 +++ src/nvim/if_cscope.h | 16 + src/nvim/if_cscope_defs.h | 71 + src/nvim/indent.c | 696 + src/nvim/indent.h | 14 + src/nvim/indent_c.c | 3316 ++++ src/nvim/indent_c.h | 12 + src/nvim/keymap.c | 777 + src/nvim/keymap.h | 515 + src/nvim/lib/khash.h | 632 + src/nvim/lib/klist.h | 128 + src/nvim/log.c | 147 + src/nvim/log.h | 57 + src/nvim/macros.h | 151 + src/nvim/main.c | 2367 +++ src/nvim/main.h | 16 + src/nvim/map.c | 91 + src/nvim/map.h | 57 + src/nvim/map_defs.h | 14 + src/nvim/mark.c | 1539 ++ src/nvim/mark.h | 42 + src/nvim/mark_defs.h | 29 + src/nvim/mbyte.c | 4041 +++++ src/nvim/mbyte.h | 87 + src/nvim/memfile.c | 1260 ++ src/nvim/memfile.h | 25 + src/nvim/memfile_defs.h | 107 + src/nvim/memline.c | 4378 ++++++ src/nvim/memline.h | 47 + src/nvim/memline_defs.h | 59 + src/nvim/memory.c | 388 + src/nvim/memory.h | 149 + src/nvim/menu.c | 1616 ++ src/nvim/menu.h | 65 + src/nvim/message.c | 3881 +++++ src/nvim/message.h | 85 + src/nvim/misc1.c | 3547 +++++ src/nvim/misc1.h | 76 + src/nvim/misc2.c | 1004 ++ src/nvim/misc2.h | 51 + src/nvim/move.c | 2242 +++ src/nvim/move.h | 43 + src/nvim/normal.c | 7474 +++++++++ src/nvim/normal.h | 86 + src/nvim/ops.c | 5174 +++++++ src/nvim/ops.h | 63 + src/nvim/option.c | 8311 ++++++++++ src/nvim/option.h | 81 + src/nvim/option_defs.h | 770 + src/nvim/os/channel.c | 175 + src/nvim/os/channel.h | 29 + src/nvim/os/channel_defs.h | 8 + src/nvim/os/env.c | 80 + src/nvim/os/event.c | 148 + src/nvim/os/event.h | 18 + src/nvim/os/event_defs.h | 25 + src/nvim/os/fs.c | 277 + src/nvim/os/input.c | 195 + src/nvim/os/input.h | 23 + src/nvim/os/job.c | 370 + src/nvim/os/job.h | 78 + src/nvim/os/job_defs.h | 15 + src/nvim/os/mem.c | 10 + src/nvim/os/msgpack_rpc.c | 408 + src/nvim/os/msgpack_rpc.h | 107 + src/nvim/os/os.h | 146 + src/nvim/os/rstream.c | 297 + src/nvim/os/rstream.h | 82 + src/nvim/os/rstream_defs.h | 16 + src/nvim/os/server.c | 243 + src/nvim/os/server.h | 30 + src/nvim/os/server_defs.h | 7 + src/nvim/os/shell.c | 465 + src/nvim/os/shell.h | 45 + src/nvim/os/signal.c | 163 + src/nvim/os/signal.h | 13 + src/nvim/os/time.c | 86 + src/nvim/os/time.h | 35 + src/nvim/os/users.c | 87 + src/nvim/os/uv_helpers.c | 70 + src/nvim/os/uv_helpers.h | 47 + src/nvim/os/wstream.c | 117 + src/nvim/os/wstream.h | 40 + src/nvim/os/wstream_defs.h | 7 + src/nvim/os_unix.c | 1664 ++ src/nvim/os_unix.h | 46 + src/nvim/os_unix_defs.h | 284 + src/nvim/path.c | 1977 +++ src/nvim/path.h | 128 + src/nvim/po/Makefile | 292 + src/nvim/po/af.po | 5393 +++++++ src/nvim/po/ca.po | 6201 ++++++++ src/nvim/po/check.vim | 88 + src/nvim/po/cleanup.vim | 19 + src/nvim/po/cs.cp1250.po | 4664 ++++++ src/nvim/po/cs.po | 4664 ++++++ src/nvim/po/de.po | 6117 ++++++++ src/nvim/po/en_GB.po | 290 + src/nvim/po/eo.po | 6825 ++++++++ src/nvim/po/es.po | 8279 ++++++++++ src/nvim/po/fi.po | 6526 ++++++++ src/nvim/po/fr.po | 7091 +++++++++ src/nvim/po/ga.po | 6503 ++++++++ src/nvim/po/it.po | 6803 ++++++++ src/nvim/po/ja.euc-jp.po | 6808 ++++++++ src/nvim/po/ja.po | 6808 ++++++++ src/nvim/po/ja.sjis.po | 6808 ++++++++ src/nvim/po/ko.UTF-8.po | 6447 ++++++++ src/nvim/po/ko.po | 6447 ++++++++ src/nvim/po/nb.po | 6166 ++++++++ src/nvim/po/nl.po | 5852 +++++++ src/nvim/po/no.po | 6166 ++++++++ src/nvim/po/pl.UTF-8.po | 6904 +++++++++ src/nvim/po/pl.cp1250.po | 6904 +++++++++ src/nvim/po/pl.po | 6904 +++++++++ src/nvim/po/pt_BR.po | 6236 ++++++++ src/nvim/po/ru.cp1251.po | 6893 ++++++++ src/nvim/po/ru.po | 6893 ++++++++ src/nvim/po/sjiscorr.c | 39 + src/nvim/po/sk.cp1250.po | 5821 +++++++ src/nvim/po/sk.po | 5821 +++++++ src/nvim/po/sv.po | 6148 ++++++++ src/nvim/po/uk.cp1251.po | 7027 +++++++++ src/nvim/po/uk.po | 7027 +++++++++ src/nvim/po/vi.po | 5196 +++++++ src/nvim/po/zh_CN.UTF-8.po | 6139 ++++++++ src/nvim/po/zh_CN.cp936.po | 6140 ++++++++ src/nvim/po/zh_CN.po | 6140 ++++++++ src/nvim/po/zh_TW.UTF-8.po | 5282 +++++++ src/nvim/po/zh_TW.po | 5275 +++++++ src/nvim/popupmnu.c | 680 + src/nvim/popupmnu.h | 19 + src/nvim/pos.h | 23 + src/nvim/proto.h | 49 + src/nvim/quickfix.c | 3688 +++++ src/nvim/quickfix.h | 36 + src/nvim/regexp.c | 7117 +++++++++ src/nvim/regexp.h | 27 + src/nvim/regexp_defs.h | 149 + src/nvim/regexp_nfa.c | 6425 ++++++++ src/nvim/screen.c | 8008 ++++++++++ src/nvim/screen.h | 68 + src/nvim/search.c | 4712 ++++++ src/nvim/search.h | 52 + src/nvim/sha256.c | 418 + src/nvim/sha256.h | 18 + src/nvim/sign_defs.h | 24 + src/nvim/spell.c | 13611 ++++++++++++++++ src/nvim/spell.h | 33 + src/nvim/strings.c | 550 + src/nvim/strings.h | 27 + src/nvim/syntax.c | 7818 ++++++++++ src/nvim/syntax.h | 58 + src/nvim/syntax_defs.h | 78 + src/nvim/tag.c | 2933 ++++ src/nvim/tag.h | 28 + src/nvim/term.c | 4732 ++++++ src/nvim/term.h | 63 + src/nvim/term_defs.h | 160 + src/nvim/testdir/Makefile | 156 + src/nvim/testdir/dotest.in | 3 + src/nvim/testdir/sautest/autoload/Test104.vim | 1 + src/nvim/testdir/sautest/autoload/footest.vim | 5 + src/nvim/testdir/test1.in | 57 + src/nvim/testdir/test1.ok | 1 + src/nvim/testdir/test10.in | 114 + src/nvim/testdir/test10.ok | 23 + src/nvim/testdir/test100.in | 42 + src/nvim/testdir/test100.ok | 41 + src/nvim/testdir/test101.in | 45 + src/nvim/testdir/test101.ok | 11 + src/nvim/testdir/test102.in | 12 + src/nvim/testdir/test102.ok | 3 + src/nvim/testdir/test103.in | 37 + src/nvim/testdir/test103.ok | 2 + src/nvim/testdir/test104.in | 30 + src/nvim/testdir/test104.ok | 13 + src/nvim/testdir/test105.in | 45 + src/nvim/testdir/test105.ok | 29 + src/nvim/testdir/test106.in | 16 + src/nvim/testdir/test106.ok | 4 + src/nvim/testdir/test10a.in | 73 + src/nvim/testdir/test10a.ok | 23 + src/nvim/testdir/test11.in | 84 + src/nvim/testdir/test11.ok | 61 + src/nvim/testdir/test12.in | 52 + src/nvim/testdir/test12.ok | 10 + src/nvim/testdir/test13.in | 58 + src/nvim/testdir/test13.ok | 30 + src/nvim/testdir/test14.in | 99 + src/nvim/testdir/test14.ok | 26 + src/nvim/testdir/test15.in | 136 + src/nvim/testdir/test15.ok | 111 + src/nvim/testdir/test16.in | 15 + src/nvim/testdir/test16.ok | 2 + src/nvim/testdir/test17.in | 141 + src/nvim/testdir/test17.ok | 33 + src/nvim/testdir/test17a.in | 3 + src/nvim/testdir/test18.in | 16 + src/nvim/testdir/test18.ok | 4 + src/nvim/testdir/test19.in | 33 + src/nvim/testdir/test19.ok | 10 + src/nvim/testdir/test2.in | 29 + src/nvim/testdir/test2.ok | 4 + src/nvim/testdir/test20.in | 28 + src/nvim/testdir/test20.ok | 10 + src/nvim/testdir/test21.in | 19 + src/nvim/testdir/test21.ok | 2 + src/nvim/testdir/test22.in | 13 + src/nvim/testdir/test22.ok | 4 + src/nvim/testdir/test23.in | 15 + src/nvim/testdir/test23.ok | 2 + src/nvim/testdir/test24.in | Bin 0 -> 1301 bytes src/nvim/testdir/test24.ok | 32 + src/nvim/testdir/test25.in | 31 + src/nvim/testdir/test25.ok | 1 + src/nvim/testdir/test26.in | 44 + src/nvim/testdir/test26.ok | 10 + src/nvim/testdir/test27.in | 20 + src/nvim/testdir/test27.ok | 2 + src/nvim/testdir/test28.in | Bin 0 -> 364 bytes src/nvim/testdir/test28.ok | 2 + src/nvim/testdir/test29.in | 230 + src/nvim/testdir/test29.ok | 97 + src/nvim/testdir/test3.in | 2056 +++ src/nvim/testdir/test3.ok | 1820 +++ src/nvim/testdir/test30.in | 222 + src/nvim/testdir/test30.ok | 121 + src/nvim/testdir/test31.in | 75 + src/nvim/testdir/test31.ok | 12 + src/nvim/testdir/test32.in | 60 + src/nvim/testdir/test32.ok | 15 + src/nvim/testdir/test33.in | 34 + src/nvim/testdir/test33.ok | 23 + src/nvim/testdir/test34.in | 87 + src/nvim/testdir/test34.ok | 10 + src/nvim/testdir/test35.in | 21 + src/nvim/testdir/test35.ok | 4 + src/nvim/testdir/test36.in | 105 + src/nvim/testdir/test36.ok | 96 + src/nvim/testdir/test37.in | 116 + src/nvim/testdir/test37.ok | 33 + src/nvim/testdir/test38.in | 35 + src/nvim/testdir/test38.ok | 13 + src/nvim/testdir/test39.in | 93 + src/nvim/testdir/test39.ok | Bin 0 -> 481 bytes src/nvim/testdir/test4.in | 31 + src/nvim/testdir/test4.ok | 17 + src/nvim/testdir/test40.in | 63 + src/nvim/testdir/test40.ok | 11 + src/nvim/testdir/test41.in | 24 + src/nvim/testdir/test41.ok | 3 + src/nvim/testdir/test42.in | Bin 0 -> 2368 bytes src/nvim/testdir/test42.ok | Bin 0 -> 409 bytes src/nvim/testdir/test43.in | 34 + src/nvim/testdir/test43.ok | 11 + src/nvim/testdir/test44.in | 68 + src/nvim/testdir/test44.ok | 24 + src/nvim/testdir/test45.in | 80 + src/nvim/testdir/test45.ok | 18 + src/nvim/testdir/test46.in | 27 + src/nvim/testdir/test46.ok | 13 + src/nvim/testdir/test47.in | 62 + src/nvim/testdir/test47.ok | 4 + src/nvim/testdir/test48.in | 78 + src/nvim/testdir/test48.ok | 22 + src/nvim/testdir/test49.in | 30 + src/nvim/testdir/test49.ok | 99 + src/nvim/testdir/test49.vim | 9852 ++++++++++++ src/nvim/testdir/test5.in | 29 + src/nvim/testdir/test5.ok | 9 + src/nvim/testdir/test50.in | 90 + src/nvim/testdir/test50.ok | 14 + src/nvim/testdir/test51.in | 36 + src/nvim/testdir/test51.ok | 20 + src/nvim/testdir/test52.in | 65 + src/nvim/testdir/test52.ok | 18 + src/nvim/testdir/test53.in | 123 + src/nvim/testdir/test53.ok | 64 + src/nvim/testdir/test54.in | 22 + src/nvim/testdir/test54.ok | 1 + src/nvim/testdir/test55.in | 404 + src/nvim/testdir/test55.ok | 128 + src/nvim/testdir/test56.in | 21 + src/nvim/testdir/test56.ok | 2 + src/nvim/testdir/test57.in | 500 + src/nvim/testdir/test57.ok | 459 + src/nvim/testdir/test58.in | 639 + src/nvim/testdir/test58.ok | 283 + src/nvim/testdir/test59.in | 626 + src/nvim/testdir/test59.ok | 270 + src/nvim/testdir/test6.in | 24 + src/nvim/testdir/test6.ok | 18 + src/nvim/testdir/test60.in | 610 + src/nvim/testdir/test60.ok | 211 + src/nvim/testdir/test60.vim | 98 + src/nvim/testdir/test61.in | 113 + src/nvim/testdir/test61.ok | 49 + src/nvim/testdir/test62.in | 191 + src/nvim/testdir/test62.ok | 88 + src/nvim/testdir/test63.in | 157 + src/nvim/testdir/test63.ok | 11 + src/nvim/testdir/test64.in | 633 + src/nvim/testdir/test64.ok | 1084 ++ src/nvim/testdir/test65.in | 95 + src/nvim/testdir/test65.ok | 73 + src/nvim/testdir/test66.in | 33 + src/nvim/testdir/test66.ok | 16 + src/nvim/testdir/test67.in | 33 + src/nvim/testdir/test67.ok | 10 + src/nvim/testdir/test68.in | 131 + src/nvim/testdir/test68.ok | 77 + src/nvim/testdir/test69.in | 185 + src/nvim/testdir/test69.ok | 162 + src/nvim/testdir/test7.in | 26 + src/nvim/testdir/test7.ok | 12 + src/nvim/testdir/test70.in | 63 + src/nvim/testdir/test70.ok | 6 + src/nvim/testdir/test71.in | 67 + src/nvim/testdir/test71.ok | 10 + src/nvim/testdir/test71a.in | 14 + src/nvim/testdir/test72.in | 115 + src/nvim/testdir/test72.ok | 27 + src/nvim/testdir/test73.in | 176 + src/nvim/testdir/test73.ok | 21 + src/nvim/testdir/test74.in | 36 + src/nvim/testdir/test74.ok | 5 + src/nvim/testdir/test75.in | 41 + src/nvim/testdir/test75.ok | 7 + src/nvim/testdir/test76.in | 46 + src/nvim/testdir/test76.ok | 4 + src/nvim/testdir/test77.in | 30 + src/nvim/testdir/test77.ok | 1 + src/nvim/testdir/test78.in | 46 + src/nvim/testdir/test78.ok | 3 + src/nvim/testdir/test79.in | Bin 0 -> 3381 bytes src/nvim/testdir/test79.ok | Bin 0 -> 574 bytes src/nvim/testdir/test8.in | 46 + src/nvim/testdir/test8.ok | 7 + src/nvim/testdir/test80.in | 201 + src/nvim/testdir/test80.ok | 131 + src/nvim/testdir/test81.in | 22 + src/nvim/testdir/test81.ok | 6 + src/nvim/testdir/test82.in | 103 + src/nvim/testdir/test82.ok | 5 + src/nvim/testdir/test83-tags2 | 2 + src/nvim/testdir/test83-tags3 | 102 + src/nvim/testdir/test83.in | 76 + src/nvim/testdir/test83.ok | 4 + src/nvim/testdir/test84.in | 35 + src/nvim/testdir/test84.ok | 3 + src/nvim/testdir/test85.in | 85 + src/nvim/testdir/test85.ok | 7 + src/nvim/testdir/test86.in | 1429 ++ src/nvim/testdir/test86.ok | 1266 ++ src/nvim/testdir/test87.in | 1406 ++ src/nvim/testdir/test87.ok | 1266 ++ src/nvim/testdir/test88.in | 88 + src/nvim/testdir/test88.ok | 24 + src/nvim/testdir/test89.in | 71 + src/nvim/testdir/test89.ok | 28 + src/nvim/testdir/test9.in | 12 + src/nvim/testdir/test9.ok | 2 + src/nvim/testdir/test90.in | 53 + src/nvim/testdir/test90.ok | 6 + src/nvim/testdir/test91.in | 111 + src/nvim/testdir/test91.ok | 48 + src/nvim/testdir/test92.in | 48 + src/nvim/testdir/test92.ok | 26 + src/nvim/testdir/test93.in | 48 + src/nvim/testdir/test93.ok | 26 + src/nvim/testdir/test94.in | 95 + src/nvim/testdir/test94.ok | 20 + src/nvim/testdir/test95.in | 135 + src/nvim/testdir/test95.ok | 122 + src/nvim/testdir/test96.in | 142 + src/nvim/testdir/test96.ok | 9 + src/nvim/testdir/test97.in | 17 + src/nvim/testdir/test97.ok | 5 + src/nvim/testdir/test98.in | 43 + src/nvim/testdir/test98.ok | 1 + src/nvim/testdir/test99.in | 68 + src/nvim/testdir/test99.ok | 24 + src/nvim/testdir/test_eval.in | 57 + src/nvim/testdir/test_eval.ok | 11 + src/nvim/testdir/test_eval_func.vim | 12 + src/nvim/testdir/unix.vim | 3 + src/nvim/types.h | 19 + src/nvim/ui.c | 963 ++ src/nvim/ui.h | 29 + src/nvim/undo.c | 2880 ++++ src/nvim/undo.h | 36 + src/nvim/undo_defs.h | 68 + src/nvim/version.c | 927 ++ src/nvim/version.h | 12 + src/nvim/version_defs.h | 47 + src/nvim/vim.h | 1391 ++ src/nvim/window.c | 5394 +++++++ src/nvim/window.h | 85 + 463 files changed, 501749 insertions(+) create mode 100644 src/nvim/CMakeLists.txt create mode 100644 src/nvim/api/buffer.c create mode 100644 src/nvim/api/buffer.h create mode 100644 src/nvim/api/defs.h create mode 100644 src/nvim/api/helpers.c create mode 100644 src/nvim/api/helpers.h create mode 100644 src/nvim/api/tabpage.c create mode 100644 src/nvim/api/tabpage.h create mode 100644 src/nvim/api/vim.c create mode 100644 src/nvim/api/vim.h create mode 100644 src/nvim/api/window.c create mode 100644 src/nvim/api/window.h create mode 100644 src/nvim/arabic.c create mode 100644 src/nvim/arabic.h create mode 100644 src/nvim/ascii.h create mode 100644 src/nvim/blowfish.c create mode 100644 src/nvim/blowfish.h create mode 100644 src/nvim/buffer.c create mode 100644 src/nvim/buffer.h create mode 100644 src/nvim/buffer_defs.h create mode 100644 src/nvim/charset.c create mode 100644 src/nvim/charset.h create mode 100644 src/nvim/crypt.c create mode 100644 src/nvim/crypt.h create mode 100644 src/nvim/cursor_shape.c create mode 100644 src/nvim/cursor_shape.h create mode 100644 src/nvim/diff.c create mode 100644 src/nvim/diff.h create mode 100644 src/nvim/digraph.c create mode 100644 src/nvim/digraph.h create mode 100644 src/nvim/edit.c create mode 100644 src/nvim/edit.h create mode 100644 src/nvim/eval.c create mode 100644 src/nvim/eval.h create mode 100644 src/nvim/eval_defs.h create mode 100644 src/nvim/ex_cmds.c create mode 100644 src/nvim/ex_cmds.h create mode 100644 src/nvim/ex_cmds2.c create mode 100644 src/nvim/ex_cmds2.h create mode 100644 src/nvim/ex_cmds_defs.h create mode 100644 src/nvim/ex_docmd.c create mode 100644 src/nvim/ex_docmd.h create mode 100644 src/nvim/ex_eval.c create mode 100644 src/nvim/ex_eval.h create mode 100644 src/nvim/ex_getln.c create mode 100644 src/nvim/ex_getln.h create mode 100644 src/nvim/farsi.c create mode 100644 src/nvim/farsi.h create mode 100644 src/nvim/file_search.c create mode 100644 src/nvim/file_search.h create mode 100644 src/nvim/fileio.c create mode 100644 src/nvim/fileio.h create mode 100644 src/nvim/fold.c create mode 100644 src/nvim/fold.h create mode 100644 src/nvim/func_attr.h create mode 100644 src/nvim/garray.c create mode 100644 src/nvim/garray.h create mode 100644 src/nvim/getchar.c create mode 100644 src/nvim/getchar.h create mode 100644 src/nvim/globals.h create mode 100644 src/nvim/hardcopy.c create mode 100644 src/nvim/hardcopy.h create mode 100644 src/nvim/hashtab.c create mode 100644 src/nvim/hashtab.h create mode 100644 src/nvim/if_cscope.c create mode 100644 src/nvim/if_cscope.h create mode 100644 src/nvim/if_cscope_defs.h create mode 100644 src/nvim/indent.c create mode 100644 src/nvim/indent.h create mode 100644 src/nvim/indent_c.c create mode 100644 src/nvim/indent_c.h create mode 100644 src/nvim/keymap.c create mode 100644 src/nvim/keymap.h create mode 100644 src/nvim/lib/khash.h create mode 100644 src/nvim/lib/klist.h create mode 100644 src/nvim/log.c create mode 100644 src/nvim/log.h create mode 100644 src/nvim/macros.h create mode 100644 src/nvim/main.c create mode 100644 src/nvim/main.h create mode 100644 src/nvim/map.c create mode 100644 src/nvim/map.h create mode 100644 src/nvim/map_defs.h create mode 100644 src/nvim/mark.c create mode 100644 src/nvim/mark.h create mode 100644 src/nvim/mark_defs.h create mode 100644 src/nvim/mbyte.c create mode 100644 src/nvim/mbyte.h create mode 100644 src/nvim/memfile.c create mode 100644 src/nvim/memfile.h create mode 100644 src/nvim/memfile_defs.h create mode 100644 src/nvim/memline.c create mode 100644 src/nvim/memline.h create mode 100644 src/nvim/memline_defs.h create mode 100644 src/nvim/memory.c create mode 100644 src/nvim/memory.h create mode 100644 src/nvim/menu.c create mode 100644 src/nvim/menu.h create mode 100644 src/nvim/message.c create mode 100644 src/nvim/message.h create mode 100644 src/nvim/misc1.c create mode 100644 src/nvim/misc1.h create mode 100644 src/nvim/misc2.c create mode 100644 src/nvim/misc2.h create mode 100644 src/nvim/move.c create mode 100644 src/nvim/move.h create mode 100644 src/nvim/normal.c create mode 100644 src/nvim/normal.h create mode 100644 src/nvim/ops.c create mode 100644 src/nvim/ops.h create mode 100644 src/nvim/option.c create mode 100644 src/nvim/option.h create mode 100644 src/nvim/option_defs.h create mode 100644 src/nvim/os/channel.c create mode 100644 src/nvim/os/channel.h create mode 100644 src/nvim/os/channel_defs.h create mode 100644 src/nvim/os/env.c create mode 100644 src/nvim/os/event.c create mode 100644 src/nvim/os/event.h create mode 100644 src/nvim/os/event_defs.h create mode 100644 src/nvim/os/fs.c create mode 100644 src/nvim/os/input.c create mode 100644 src/nvim/os/input.h create mode 100644 src/nvim/os/job.c create mode 100644 src/nvim/os/job.h create mode 100644 src/nvim/os/job_defs.h create mode 100644 src/nvim/os/mem.c create mode 100644 src/nvim/os/msgpack_rpc.c create mode 100644 src/nvim/os/msgpack_rpc.h create mode 100644 src/nvim/os/os.h create mode 100644 src/nvim/os/rstream.c create mode 100644 src/nvim/os/rstream.h create mode 100644 src/nvim/os/rstream_defs.h create mode 100644 src/nvim/os/server.c create mode 100644 src/nvim/os/server.h create mode 100644 src/nvim/os/server_defs.h create mode 100644 src/nvim/os/shell.c create mode 100644 src/nvim/os/shell.h create mode 100644 src/nvim/os/signal.c create mode 100644 src/nvim/os/signal.h create mode 100644 src/nvim/os/time.c create mode 100644 src/nvim/os/time.h create mode 100644 src/nvim/os/users.c create mode 100644 src/nvim/os/uv_helpers.c create mode 100644 src/nvim/os/uv_helpers.h create mode 100644 src/nvim/os/wstream.c create mode 100644 src/nvim/os/wstream.h create mode 100644 src/nvim/os/wstream_defs.h create mode 100644 src/nvim/os_unix.c create mode 100644 src/nvim/os_unix.h create mode 100644 src/nvim/os_unix_defs.h create mode 100644 src/nvim/path.c create mode 100644 src/nvim/path.h create mode 100644 src/nvim/po/Makefile create mode 100644 src/nvim/po/af.po create mode 100644 src/nvim/po/ca.po create mode 100644 src/nvim/po/check.vim create mode 100644 src/nvim/po/cleanup.vim create mode 100644 src/nvim/po/cs.cp1250.po create mode 100644 src/nvim/po/cs.po create mode 100644 src/nvim/po/de.po create mode 100644 src/nvim/po/en_GB.po create mode 100644 src/nvim/po/eo.po create mode 100644 src/nvim/po/es.po create mode 100644 src/nvim/po/fi.po create mode 100644 src/nvim/po/fr.po create mode 100644 src/nvim/po/ga.po create mode 100644 src/nvim/po/it.po create mode 100644 src/nvim/po/ja.euc-jp.po create mode 100644 src/nvim/po/ja.po create mode 100644 src/nvim/po/ja.sjis.po create mode 100644 src/nvim/po/ko.UTF-8.po create mode 100644 src/nvim/po/ko.po create mode 100644 src/nvim/po/nb.po create mode 100644 src/nvim/po/nl.po create mode 100644 src/nvim/po/no.po create mode 100644 src/nvim/po/pl.UTF-8.po create mode 100644 src/nvim/po/pl.cp1250.po create mode 100644 src/nvim/po/pl.po create mode 100644 src/nvim/po/pt_BR.po create mode 100644 src/nvim/po/ru.cp1251.po create mode 100644 src/nvim/po/ru.po create mode 100644 src/nvim/po/sjiscorr.c create mode 100644 src/nvim/po/sk.cp1250.po create mode 100644 src/nvim/po/sk.po create mode 100644 src/nvim/po/sv.po create mode 100644 src/nvim/po/uk.cp1251.po create mode 100644 src/nvim/po/uk.po create mode 100644 src/nvim/po/vi.po create mode 100644 src/nvim/po/zh_CN.UTF-8.po create mode 100644 src/nvim/po/zh_CN.cp936.po create mode 100644 src/nvim/po/zh_CN.po create mode 100644 src/nvim/po/zh_TW.UTF-8.po create mode 100644 src/nvim/po/zh_TW.po create mode 100644 src/nvim/popupmnu.c create mode 100644 src/nvim/popupmnu.h create mode 100644 src/nvim/pos.h create mode 100644 src/nvim/proto.h create mode 100644 src/nvim/quickfix.c create mode 100644 src/nvim/quickfix.h create mode 100644 src/nvim/regexp.c create mode 100644 src/nvim/regexp.h create mode 100644 src/nvim/regexp_defs.h create mode 100644 src/nvim/regexp_nfa.c create mode 100644 src/nvim/screen.c create mode 100644 src/nvim/screen.h create mode 100644 src/nvim/search.c create mode 100644 src/nvim/search.h create mode 100644 src/nvim/sha256.c create mode 100644 src/nvim/sha256.h create mode 100644 src/nvim/sign_defs.h create mode 100644 src/nvim/spell.c create mode 100644 src/nvim/spell.h create mode 100644 src/nvim/strings.c create mode 100644 src/nvim/strings.h create mode 100644 src/nvim/syntax.c create mode 100644 src/nvim/syntax.h create mode 100644 src/nvim/syntax_defs.h create mode 100644 src/nvim/tag.c create mode 100644 src/nvim/tag.h create mode 100644 src/nvim/term.c create mode 100644 src/nvim/term.h create mode 100644 src/nvim/term_defs.h create mode 100644 src/nvim/testdir/Makefile create mode 100644 src/nvim/testdir/dotest.in create mode 100644 src/nvim/testdir/sautest/autoload/Test104.vim create mode 100644 src/nvim/testdir/sautest/autoload/footest.vim create mode 100644 src/nvim/testdir/test1.in create mode 100644 src/nvim/testdir/test1.ok create mode 100644 src/nvim/testdir/test10.in create mode 100644 src/nvim/testdir/test10.ok create mode 100644 src/nvim/testdir/test100.in create mode 100644 src/nvim/testdir/test100.ok create mode 100644 src/nvim/testdir/test101.in create mode 100644 src/nvim/testdir/test101.ok create mode 100644 src/nvim/testdir/test102.in create mode 100644 src/nvim/testdir/test102.ok create mode 100644 src/nvim/testdir/test103.in create mode 100644 src/nvim/testdir/test103.ok create mode 100644 src/nvim/testdir/test104.in create mode 100644 src/nvim/testdir/test104.ok create mode 100644 src/nvim/testdir/test105.in create mode 100644 src/nvim/testdir/test105.ok create mode 100644 src/nvim/testdir/test106.in create mode 100644 src/nvim/testdir/test106.ok create mode 100644 src/nvim/testdir/test10a.in create mode 100644 src/nvim/testdir/test10a.ok create mode 100644 src/nvim/testdir/test11.in create mode 100644 src/nvim/testdir/test11.ok create mode 100644 src/nvim/testdir/test12.in create mode 100644 src/nvim/testdir/test12.ok create mode 100644 src/nvim/testdir/test13.in create mode 100644 src/nvim/testdir/test13.ok create mode 100644 src/nvim/testdir/test14.in create mode 100644 src/nvim/testdir/test14.ok create mode 100644 src/nvim/testdir/test15.in create mode 100644 src/nvim/testdir/test15.ok create mode 100644 src/nvim/testdir/test16.in create mode 100644 src/nvim/testdir/test16.ok create mode 100644 src/nvim/testdir/test17.in create mode 100644 src/nvim/testdir/test17.ok create mode 100644 src/nvim/testdir/test17a.in create mode 100644 src/nvim/testdir/test18.in create mode 100644 src/nvim/testdir/test18.ok create mode 100644 src/nvim/testdir/test19.in create mode 100644 src/nvim/testdir/test19.ok create mode 100644 src/nvim/testdir/test2.in create mode 100644 src/nvim/testdir/test2.ok create mode 100644 src/nvim/testdir/test20.in create mode 100644 src/nvim/testdir/test20.ok create mode 100644 src/nvim/testdir/test21.in create mode 100644 src/nvim/testdir/test21.ok create mode 100644 src/nvim/testdir/test22.in create mode 100644 src/nvim/testdir/test22.ok create mode 100644 src/nvim/testdir/test23.in create mode 100644 src/nvim/testdir/test23.ok create mode 100644 src/nvim/testdir/test24.in create mode 100644 src/nvim/testdir/test24.ok create mode 100644 src/nvim/testdir/test25.in create mode 100644 src/nvim/testdir/test25.ok create mode 100644 src/nvim/testdir/test26.in create mode 100644 src/nvim/testdir/test26.ok create mode 100644 src/nvim/testdir/test27.in create mode 100644 src/nvim/testdir/test27.ok create mode 100644 src/nvim/testdir/test28.in create mode 100644 src/nvim/testdir/test28.ok create mode 100644 src/nvim/testdir/test29.in create mode 100644 src/nvim/testdir/test29.ok create mode 100644 src/nvim/testdir/test3.in create mode 100644 src/nvim/testdir/test3.ok create mode 100644 src/nvim/testdir/test30.in create mode 100644 src/nvim/testdir/test30.ok create mode 100644 src/nvim/testdir/test31.in create mode 100644 src/nvim/testdir/test31.ok create mode 100644 src/nvim/testdir/test32.in create mode 100644 src/nvim/testdir/test32.ok create mode 100644 src/nvim/testdir/test33.in create mode 100644 src/nvim/testdir/test33.ok create mode 100644 src/nvim/testdir/test34.in create mode 100644 src/nvim/testdir/test34.ok create mode 100644 src/nvim/testdir/test35.in create mode 100644 src/nvim/testdir/test35.ok create mode 100644 src/nvim/testdir/test36.in create mode 100644 src/nvim/testdir/test36.ok create mode 100644 src/nvim/testdir/test37.in create mode 100644 src/nvim/testdir/test37.ok create mode 100644 src/nvim/testdir/test38.in create mode 100644 src/nvim/testdir/test38.ok create mode 100644 src/nvim/testdir/test39.in create mode 100644 src/nvim/testdir/test39.ok create mode 100644 src/nvim/testdir/test4.in create mode 100644 src/nvim/testdir/test4.ok create mode 100644 src/nvim/testdir/test40.in create mode 100644 src/nvim/testdir/test40.ok create mode 100644 src/nvim/testdir/test41.in create mode 100644 src/nvim/testdir/test41.ok create mode 100644 src/nvim/testdir/test42.in create mode 100644 src/nvim/testdir/test42.ok create mode 100644 src/nvim/testdir/test43.in create mode 100644 src/nvim/testdir/test43.ok create mode 100644 src/nvim/testdir/test44.in create mode 100644 src/nvim/testdir/test44.ok create mode 100644 src/nvim/testdir/test45.in create mode 100644 src/nvim/testdir/test45.ok create mode 100644 src/nvim/testdir/test46.in create mode 100644 src/nvim/testdir/test46.ok create mode 100644 src/nvim/testdir/test47.in create mode 100644 src/nvim/testdir/test47.ok create mode 100644 src/nvim/testdir/test48.in create mode 100644 src/nvim/testdir/test48.ok create mode 100644 src/nvim/testdir/test49.in create mode 100644 src/nvim/testdir/test49.ok create mode 100644 src/nvim/testdir/test49.vim create mode 100644 src/nvim/testdir/test5.in create mode 100644 src/nvim/testdir/test5.ok create mode 100644 src/nvim/testdir/test50.in create mode 100644 src/nvim/testdir/test50.ok create mode 100644 src/nvim/testdir/test51.in create mode 100644 src/nvim/testdir/test51.ok create mode 100644 src/nvim/testdir/test52.in create mode 100644 src/nvim/testdir/test52.ok create mode 100644 src/nvim/testdir/test53.in create mode 100644 src/nvim/testdir/test53.ok create mode 100644 src/nvim/testdir/test54.in create mode 100644 src/nvim/testdir/test54.ok create mode 100644 src/nvim/testdir/test55.in create mode 100644 src/nvim/testdir/test55.ok create mode 100644 src/nvim/testdir/test56.in create mode 100644 src/nvim/testdir/test56.ok create mode 100644 src/nvim/testdir/test57.in create mode 100644 src/nvim/testdir/test57.ok create mode 100644 src/nvim/testdir/test58.in create mode 100644 src/nvim/testdir/test58.ok create mode 100644 src/nvim/testdir/test59.in create mode 100644 src/nvim/testdir/test59.ok create mode 100644 src/nvim/testdir/test6.in create mode 100644 src/nvim/testdir/test6.ok create mode 100644 src/nvim/testdir/test60.in create mode 100644 src/nvim/testdir/test60.ok create mode 100644 src/nvim/testdir/test60.vim create mode 100644 src/nvim/testdir/test61.in create mode 100644 src/nvim/testdir/test61.ok create mode 100644 src/nvim/testdir/test62.in create mode 100644 src/nvim/testdir/test62.ok create mode 100644 src/nvim/testdir/test63.in create mode 100644 src/nvim/testdir/test63.ok create mode 100644 src/nvim/testdir/test64.in create mode 100644 src/nvim/testdir/test64.ok create mode 100644 src/nvim/testdir/test65.in create mode 100644 src/nvim/testdir/test65.ok create mode 100644 src/nvim/testdir/test66.in create mode 100644 src/nvim/testdir/test66.ok create mode 100644 src/nvim/testdir/test67.in create mode 100644 src/nvim/testdir/test67.ok create mode 100644 src/nvim/testdir/test68.in create mode 100644 src/nvim/testdir/test68.ok create mode 100644 src/nvim/testdir/test69.in create mode 100644 src/nvim/testdir/test69.ok create mode 100644 src/nvim/testdir/test7.in create mode 100644 src/nvim/testdir/test7.ok create mode 100644 src/nvim/testdir/test70.in create mode 100644 src/nvim/testdir/test70.ok create mode 100644 src/nvim/testdir/test71.in create mode 100644 src/nvim/testdir/test71.ok create mode 100644 src/nvim/testdir/test71a.in create mode 100644 src/nvim/testdir/test72.in create mode 100644 src/nvim/testdir/test72.ok create mode 100644 src/nvim/testdir/test73.in create mode 100644 src/nvim/testdir/test73.ok create mode 100644 src/nvim/testdir/test74.in create mode 100644 src/nvim/testdir/test74.ok create mode 100644 src/nvim/testdir/test75.in create mode 100644 src/nvim/testdir/test75.ok create mode 100644 src/nvim/testdir/test76.in create mode 100644 src/nvim/testdir/test76.ok create mode 100644 src/nvim/testdir/test77.in create mode 100644 src/nvim/testdir/test77.ok create mode 100644 src/nvim/testdir/test78.in create mode 100644 src/nvim/testdir/test78.ok create mode 100644 src/nvim/testdir/test79.in create mode 100644 src/nvim/testdir/test79.ok create mode 100644 src/nvim/testdir/test8.in create mode 100644 src/nvim/testdir/test8.ok create mode 100644 src/nvim/testdir/test80.in create mode 100644 src/nvim/testdir/test80.ok create mode 100644 src/nvim/testdir/test81.in create mode 100644 src/nvim/testdir/test81.ok create mode 100644 src/nvim/testdir/test82.in create mode 100644 src/nvim/testdir/test82.ok create mode 100644 src/nvim/testdir/test83-tags2 create mode 100644 src/nvim/testdir/test83-tags3 create mode 100644 src/nvim/testdir/test83.in create mode 100644 src/nvim/testdir/test83.ok create mode 100644 src/nvim/testdir/test84.in create mode 100644 src/nvim/testdir/test84.ok create mode 100644 src/nvim/testdir/test85.in create mode 100644 src/nvim/testdir/test85.ok create mode 100644 src/nvim/testdir/test86.in create mode 100644 src/nvim/testdir/test86.ok create mode 100644 src/nvim/testdir/test87.in create mode 100644 src/nvim/testdir/test87.ok create mode 100644 src/nvim/testdir/test88.in create mode 100644 src/nvim/testdir/test88.ok create mode 100644 src/nvim/testdir/test89.in create mode 100644 src/nvim/testdir/test89.ok create mode 100644 src/nvim/testdir/test9.in create mode 100644 src/nvim/testdir/test9.ok create mode 100644 src/nvim/testdir/test90.in create mode 100644 src/nvim/testdir/test90.ok create mode 100644 src/nvim/testdir/test91.in create mode 100644 src/nvim/testdir/test91.ok create mode 100644 src/nvim/testdir/test92.in create mode 100644 src/nvim/testdir/test92.ok create mode 100644 src/nvim/testdir/test93.in create mode 100644 src/nvim/testdir/test93.ok create mode 100644 src/nvim/testdir/test94.in create mode 100644 src/nvim/testdir/test94.ok create mode 100644 src/nvim/testdir/test95.in create mode 100644 src/nvim/testdir/test95.ok create mode 100644 src/nvim/testdir/test96.in create mode 100644 src/nvim/testdir/test96.ok create mode 100644 src/nvim/testdir/test97.in create mode 100644 src/nvim/testdir/test97.ok create mode 100644 src/nvim/testdir/test98.in create mode 100644 src/nvim/testdir/test98.ok create mode 100644 src/nvim/testdir/test99.in create mode 100644 src/nvim/testdir/test99.ok create mode 100644 src/nvim/testdir/test_eval.in create mode 100644 src/nvim/testdir/test_eval.ok create mode 100644 src/nvim/testdir/test_eval_func.vim create mode 100644 src/nvim/testdir/unix.vim create mode 100644 src/nvim/types.h create mode 100644 src/nvim/ui.c create mode 100644 src/nvim/ui.h create mode 100644 src/nvim/undo.c create mode 100644 src/nvim/undo.h create mode 100644 src/nvim/undo_defs.h create mode 100644 src/nvim/version.c create mode 100644 src/nvim/version.h create mode 100644 src/nvim/version_defs.h create mode 100644 src/nvim/vim.h create mode 100644 src/nvim/window.c create mode 100644 src/nvim/window.h (limited to 'src/nvim') diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt new file mode 100644 index 0000000000..7638346abc --- /dev/null +++ b/src/nvim/CMakeLists.txt @@ -0,0 +1,114 @@ +include(CheckLibraryExists) + +set(GENERATED_DIR ${PROJECT_BINARY_DIR}/src/auto) +set(DISPATCH_GENERATOR ${PROJECT_SOURCE_DIR}/scripts/msgpack-gen.lua) +file(GLOB API_HEADERS api/*.h) +set(MSGPACK_RPC_HEADER ${PROJECT_SOURCE_DIR}/src/os/msgpack_rpc.h) +set(MSGPACK_DISPATCH ${GENERATED_DIR}/msgpack_dispatch.c) + +# Remove helpers.h from API_HEADERS since it doesn't contain public API +# functions +foreach(sfile ${API_HEADERS}) + get_filename_component(f ${sfile} NAME) + if(${f} MATCHES "^(helpers.h)$") + list(APPEND to_remove ${sfile}) + endif() +endforeach() +list(REMOVE_ITEM API_HEADERS ${to_remove}) +set(to_remove) + +file(MAKE_DIRECTORY ${GENERATED_DIR}) + +add_custom_command(OUTPUT ${MSGPACK_DISPATCH} + COMMAND ${LUA_PRG} ${DISPATCH_GENERATOR} ${API_HEADERS} ${MSGPACK_DISPATCH} + DEPENDS + ${API_HEADERS} + ${MSGPACK_RPC_HEADER} + ${DISPATCH_GENERATOR} + ) + +file( GLOB NEOVIM_SOURCES *.c ) + +foreach(sfile ${NEOVIM_SOURCES}) + get_filename_component(f ${sfile} NAME) + if(${f} MATCHES "^(regexp_nfa.c)$") + list(APPEND to_remove ${sfile}) + endif() +endforeach() + +list(REMOVE_ITEM NEOVIM_SOURCES ${to_remove}) +list(APPEND NEOVIM_SOURCES "${PROJECT_BINARY_DIR}/config/auto/pathdef.c") +list(APPEND NEOVIM_SOURCES "${MSGPACK_DISPATCH}") + +file( GLOB OS_SOURCES os/*.c ) +file( GLOB API_SOURCES api/*.c ) + +set(CONV_SRCS + api.c + arabic.c + garray.c + memory.c + os/env.c + os/event.c + os/job.c + os/mem.c + os/rstream.c + os/signal.c + os/users.c + os/wstream.c + ) + +set_source_files_properties( + ${CONV_SRCS} PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -Wconversion") + +if(CMAKE_C_COMPILER_ID MATCHES "Clang") + if(DEFINED ENV{SANITIZE}) + message(STATUS "Enabling the sanitizers") + add_definitions(-DEXITFREE) # is this necessary for LeakSanitizer? + add_definitions(-fno-sanitize-recover -fno-omit-frame-pointer + -fno-optimize-sibling-calls -fsanitize=address -fsanitize=undefined) + set(CMAKE_EXE_LINKER_FLAGS + "-fsanitize=address -fsanitize=undefined ${CMAKE_EXE_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS + "-fsanitize=address -fsanitize=undefined ${CMAKE_SHARED_LINKER_FLAGS}") + endif() +endif() + +# Our dependencies come first. + +if (LibIntl_FOUND) + list(APPEND NVIM_LINK_LIBRARIES ${LibIntl_LIBRARY}) +endif() + +check_library_exists(curses tgetent "" HAVE_LIBCURSES) +if (HAVE_LIBCURSES) + list(APPEND NVIM_LINK_LIBRARIES curses) +else() + check_library_exists(tinfo tgetent "" HAVE_LIBTINFO) + if (HAVE_LIBTINFO) + list(APPEND NVIM_LINK_LIBRARIES tinfo) + else() + find_package(Curses REQUIRED) + list(APPEND NVIM_LINK_LIBRARIES ${CURSES_LIBRARIES}) + endif() +endif() + +# Put these last on the link line, since multiple things may depend on them. +list(APPEND NVIM_LINK_LIBRARIES + ${LIBUV_LIBRARIES} + ${MSGPACK_LIBRARIES} + ${LUAJIT_LIBRARIES} + m + ${CMAKE_THREAD_LIBS_INIT}) + +if(NOT DEFINED ENV{SKIP_EXEC}) + add_executable(nvim ${NEOVIM_SOURCES} ${OS_SOURCES} ${API_SOURCES}) + target_link_libraries(nvim ${NVIM_LINK_LIBRARIES}) + install(TARGETS nvim RUNTIME DESTINATION bin) +endif() + +if(NOT DEFINED ENV{SKIP_UNITTEST}) + add_library(nvim-test MODULE EXCLUDE_FROM_ALL ${NEOVIM_SOURCES} + ${OS_SOURCES} ${API_SOURCES}) + target_link_libraries(nvim-test ${NVIM_LINK_LIBRARIES}) +endif() diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c new file mode 100644 index 0000000000..328b26061d --- /dev/null +++ b/src/nvim/api/buffer.c @@ -0,0 +1,413 @@ +// Much of this code was adapted from 'if_py_both.h' from the original +// vim source +#include +#include + +#include "api/buffer.h" +#include "api/helpers.h" +#include "api/defs.h" +#include "../vim.h" +#include "../buffer.h" +#include "memline.h" +#include "memory.h" +#include "misc1.h" +#include "misc2.h" +#include "ex_cmds.h" +#include "mark.h" +#include "fileio.h" +#include "move.h" +#include "../window.h" +#include "undo.h" + +// Find a window that contains "buf" and switch to it. +// If there is no such window, use the current window and change "curbuf". +// Caller must initialize save_curbuf to NULL. +// restore_win_for_buf() MUST be called later! +static void switch_to_win_for_buf(buf_T *buf, + win_T **save_curwinp, + tabpage_T **save_curtabp, + buf_T **save_curbufp); + +static void restore_win_for_buf(win_T *save_curwin, + tabpage_T *save_curtab, + buf_T *save_curbuf); + +// Check if deleting lines made the cursor position invalid. +// Changed the lines from "lo" to "hi" and added "extra" lines (negative if +// deleted). +static void fix_cursor(linenr_T lo, linenr_T hi, linenr_T extra); + +// Normalizes 0-based indexes to buffer line numbers +static int64_t normalize_index(buf_T *buf, int64_t index); + +int64_t buffer_get_length(Buffer buffer, Error *err) +{ + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return 0; + } + + return buf->b_ml.ml_line_count; +} + +String buffer_get_line(Buffer buffer, int64_t index, Error *err) +{ + String rv = {.size = 0}; + StringArray slice = buffer_get_slice(buffer, index, index, true, true, err); + + if (slice.size) { + rv = slice.items[0]; + } + + return rv; +} + +void buffer_set_line(Buffer buffer, int64_t index, String line, Error *err) +{ + StringArray array = {.items = &line, .size = 1}; + buffer_set_slice(buffer, index, index, true, true, array, err); +} + +void buffer_del_line(Buffer buffer, int64_t index, Error *err) +{ + StringArray array = {.size = 0}; + buffer_set_slice(buffer, index, index, true, true, array, err); +} + +StringArray buffer_get_slice(Buffer buffer, + int64_t start, + int64_t end, + bool include_start, + bool include_end, + Error *err) +{ + StringArray rv = {.size = 0}; + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return rv; + } + + start = normalize_index(buf, start) + (include_start ? 0 : 1); + end = normalize_index(buf, end) + (include_end ? 1 : 0); + + if (start >= end) { + // Return 0-length array + return rv; + } + + rv.size = end - start; + rv.items = xmalloc(sizeof(String) * rv.size); + + for (uint32_t i = 0; i < rv.size; i++) { + rv.items[i].data = xstrdup((char *)ml_get_buf(buf, start + i, false)); + rv.items[i].size = strlen(rv.items[i].data); + } + + return rv; +} + +void buffer_set_slice(Buffer buffer, + int64_t start, + int64_t end, + bool include_start, + bool include_end, + StringArray replacement, + Error *err) +{ + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return; + } + + start = normalize_index(buf, start) + (include_start ? 0 : 1); + end = normalize_index(buf, end) + (include_end ? 1 : 0); + + if (start > end) { + set_api_error("start > end", err); + return; + } + + buf_T *save_curbuf = NULL; + win_T *save_curwin = NULL; + tabpage_T *save_curtab = NULL; + uint32_t new_len = replacement.size; + uint32_t old_len = end - start; + uint32_t i; + int32_t extra = 0; // lines added to text, can be negative + char **lines; + + if (new_len == 0) { + // avoid allocating zero bytes + lines = NULL; + } else { + lines = xcalloc(sizeof(char *), new_len); + } + + for (i = 0; i < new_len; i++) { + String l = replacement.items[i]; + lines[i] = xstrndup(l.data, l.size); + } + + try_start(); + switch_to_win_for_buf(buf, &save_curwin, &save_curtab, &save_curbuf); + + if (u_save(start - 1, end) == FAIL) { + set_api_error("Cannot save undo information", err); + goto cleanup; + } + + // If the size of the range is reducing (ie, new_len < old_len) we + // need to delete some old_len. We do this at the start, by + // repeatedly deleting line "start". + for (i = 0; new_len < old_len && i < old_len - new_len; i++) { + if (ml_delete(start, false) == FAIL) { + set_api_error("Cannot delete line", err); + goto cleanup; + } + } + + extra -= i; + + // For as long as possible, replace the existing old_len with the + // new old_len. This is a more efficient operation, as it requires + // less memory allocation and freeing. + for (i = 0; i < old_len && i < new_len; i++) { + if (ml_replace(start + i, (char_u *)lines[i], false) == FAIL) { + set_api_error("Cannot replace line", err); + goto cleanup; + } + // Mark lines that haven't been passed to the buffer as they need + // to be freed later + lines[i] = NULL; + } + + // Now we may need to insert the remaining new old_len + while (i < new_len) { + if (ml_append(start + i - 1, (char_u *)lines[i], 0, false) == FAIL) { + set_api_error("Cannot insert line", err); + goto cleanup; + } + // Same as with replacing + lines[i] = NULL; + i++; + extra++; + } + + // Adjust marks. Invalidate any which lie in the + // changed range, and move any in the remainder of the buffer. + // Only adjust marks if we managed to switch to a window that holds + // the buffer, otherwise line numbers will be invalid. + if (save_curbuf == NULL) { + mark_adjust(start, end - 1, MAXLNUM, extra); + } + + changed_lines(start, 0, end, extra); + + if (buf == curbuf) { + fix_cursor(start, end, extra); + } + +cleanup: + for (uint32_t i = 0; i < new_len; i++) { + if (lines[i] != NULL) { + free(lines[i]); + } + } + + free(lines); + restore_win_for_buf(save_curwin, save_curtab, save_curbuf); + try_end(err); +} + +Object buffer_get_var(Buffer buffer, String name, Error *err) +{ + Object rv; + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return rv; + } + + return dict_get_value(buf->b_vars, name, err); +} + +Object buffer_set_var(Buffer buffer, String name, Object value, Error *err) +{ + Object rv; + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return rv; + } + + return dict_set_value(buf->b_vars, name, value, err); +} + +Object buffer_get_option(Buffer buffer, String name, Error *err) +{ + Object rv; + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return rv; + } + + return get_option_from(buf, SREQ_BUF, name, err); +} + +void buffer_set_option(Buffer buffer, String name, Object value, Error *err) +{ + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return; + } + + set_option_to(buf, SREQ_BUF, name, value, err); +} + +String buffer_get_name(Buffer buffer, Error *err) +{ + String rv = {.size = 0, .data = ""}; + buf_T *buf = find_buffer(buffer, err); + + if (!buf || buf->b_ffname == NULL) { + return rv; + } + + rv.data = xstrdup((char *)buf->b_ffname); + rv.size = strlen(rv.data); + return rv; +} + +void buffer_set_name(Buffer buffer, String name, Error *err) +{ + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return; + } + + aco_save_T aco; + int ren_ret; + char *val = xstrndup(name.data, name.size); + + try_start(); + // Using aucmd_*: autocommands will be executed by rename_buffer + aucmd_prepbuf(&aco, buf); + ren_ret = rename_buffer((char_u *)val); + aucmd_restbuf(&aco); + + if (try_end(err)) { + return; + } + + if (ren_ret == FAIL) { + set_api_error("failed to rename buffer", err); + } +} + +bool buffer_is_valid(Buffer buffer) +{ + Error stub = {.set = false}; + return find_buffer(buffer, &stub) != NULL; +} + +void buffer_insert(Buffer buffer, int64_t index, StringArray lines, Error *err) +{ + buffer_set_slice(buffer, index, index, false, true, lines, err); +} + +Position buffer_get_mark(Buffer buffer, String name, Error *err) +{ + Position rv; + buf_T *buf = find_buffer(buffer, err); + + if (!buf) { + return rv; + } + + if (name.size != 0) { + set_api_error("mark name must be a single character", err); + return rv; + } + + pos_T *posp; + buf_T *savebuf; + char mark = *name.data; + + try_start(); + switch_buffer(&savebuf, buf); + posp = getmark(mark, false); + restore_buffer(savebuf); + + if (try_end(err)) { + return rv; + } + + if (posp == NULL) { + set_api_error("invalid mark name", err); + return rv; + } + + rv.row = posp->lnum; + rv.col = posp->col; + return rv; +} + +static void switch_to_win_for_buf(buf_T *buf, + win_T **save_curwinp, + tabpage_T **save_curtabp, + buf_T **save_curbufp) +{ + win_T *wp; + tabpage_T *tp; + + if (find_win_for_buf(buf, &wp, &tp) == FAIL + || switch_win(save_curwinp, save_curtabp, wp, tp, true) == FAIL) + switch_buffer(save_curbufp, buf); +} + +static void restore_win_for_buf(win_T *save_curwin, + tabpage_T *save_curtab, + buf_T *save_curbuf) +{ + if (save_curbuf == NULL) { + restore_win(save_curwin, save_curtab, true); + } else { + restore_buffer(save_curbuf); + } +} + +static void fix_cursor(linenr_T lo, linenr_T hi, linenr_T extra) +{ + if (curwin->w_cursor.lnum >= lo) { + // Adjust the cursor position if it's in/after the changed + // lines. + if (curwin->w_cursor.lnum >= hi) { + curwin->w_cursor.lnum += extra; + check_cursor_col(); + } else if (extra < 0) { + curwin->w_cursor.lnum = lo; + check_cursor(); + } else { + check_cursor_col(); + } + changed_cline_bef_curs(); + } + invalidate_botline(); +} + +static int64_t normalize_index(buf_T *buf, int64_t index) +{ + // Fix if < 0 + index = index < 0 ? buf->b_ml.ml_line_count + index : index; + // Convert the index to a vim line number + index++; + // Fix if > line_count + index = index > buf->b_ml.ml_line_count ? buf->b_ml.ml_line_count : index; + return index; +} diff --git a/src/nvim/api/buffer.h b/src/nvim/api/buffer.h new file mode 100644 index 0000000000..04f9422c19 --- /dev/null +++ b/src/nvim/api/buffer.h @@ -0,0 +1,145 @@ +#ifndef NEOVIM_API_BUFFER_H +#define NEOVIM_API_BUFFER_H + +#include +#include + +#include "api/defs.h" + +/// Gets the buffer line count +/// +/// @param buffer The buffer handle +/// @param[out] err Details of an error that may have occurred +/// @return The line count +int64_t buffer_get_length(Buffer buffer, Error *err); + +/// Gets a buffer line +/// +/// @param buffer The buffer handle +/// @param index The line index +/// @param[out] err Details of an error that may have occurred +/// @return The line string +String buffer_get_line(Buffer buffer, int64_t index, Error *err); + +/// Sets a buffer line +/// +/// @param buffer The buffer handle +/// @param index The line index +/// @param line The new line. +/// @param[out] err Details of an error that may have occurred +void buffer_set_line(Buffer buffer, int64_t index, String line, Error *err); + +/// Deletes a buffer line +/// +/// @param buffer The buffer handle +/// @param index The line index +/// @param[out] err Details of an error that may have occurred +void buffer_del_line(Buffer buffer, int64_t index, Error *err); + +/// Retrieves a line range from the buffer +/// +/// @param buffer The buffer handle +/// @param start The first line index +/// @param end The last line index +/// @param include_start True if the slice includes the `start` parameter +/// @param include_end True if the slice includes the `end` parameter +/// @param[out] err Details of an error that may have occurred +/// @return An array of lines +StringArray buffer_get_slice(Buffer buffer, + int64_t start, + int64_t end, + bool include_start, + bool include_end, + Error *err); + +/// Replaces a line range on the buffer +/// +/// @param buffer The buffer handle +/// @param start The first line index +/// @param end The last line index +/// @param include_start True if the slice includes the `start` parameter +/// @param include_end True if the slice includes the `end` parameter +/// @param lines An array of lines to use as replacement(A 0-length array +/// will simply delete the line range) +/// @param[out] err Details of an error that may have occurred +void buffer_set_slice(Buffer buffer, + int64_t start, + int64_t end, + bool include_start, + bool include_end, + StringArray replacement, + Error *err); + +/// Gets a buffer variable +/// +/// @param buffer The buffer handle +/// @param name The variable name +/// @param[out] err Details of an error that may have occurred +/// @return The variable value +Object buffer_get_var(Buffer buffer, String name, Error *err); + +/// Sets a buffer variable. Passing 'nil' as value deletes the variable. +/// +/// @param buffer The buffer handle +/// @param name The variable name +/// @param value The variable value +/// @param[out] err Details of an error that may have occurred +/// @return The old value +Object buffer_set_var(Buffer buffer, String name, Object value, Error *err); + +/// Gets a buffer option value +/// +/// @param buffer The buffer handle +/// @param name The option name +/// @param[out] err Details of an erro