Mercurial > vim
annotate nsis/README.txt @ 34379:37b4c89ba420 v9.1.0116
patch 9.1.0116: win_split_ins may not check available room
Commit: https://github.com/vim/vim/commit/0fd44a5ad81ade342cb54d8984965bdedd2272c8
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Tue Feb 20 20:28:15 2024 +0100
patch 9.1.0116: win_split_ins may not check available room
Problem: win_split_ins has no check for E36 when moving an existing
window
Solution: check for room and fix the issues in f_win_splitmove()
(Sean Dewar)
win_split_ins has no check for E36 when moving an existing window,
allowing for layouts with many overlapping zero-sized windows to be
created (which may also cause drawing issues with tablines and such).
f_win_splitmove also has some bugs.
So check for room and fix the issues in f_win_splitmove. Handle failure
in the two relevant win_split_ins callers by restoring the original
layout, and factor the common logic into win_splitmove.
Don't check for room when opening an autocommand window, as it's a
temporary window that's rarely interacted with or drawn anyhow, and is
rather important for some autocommands.
Issues fixed in f_win_splitmove:
- Error if splitting is disallowed.
- Fix heap-use-after-frees if autocommands fired from switching to "targetwin"
close "wp" or "oldwin".
- Fix splitting the wrong window if autocommands fired from switching to
"targetwin" switch to a different window.
- Ensure -1 is returned for all errors.
Also handle allocation failure a bit earlier in make_snapshot (callers,
except win_splitmove, don't really care if a snapshot can't be made, so
just ignore the return value).
Note: Test_smoothscroll_in_zero_width_window failed after these changes with
E36, as it was using the previous behaviour to create a zero-width window.
I've fixed the test such that it fails with UBSAN as expected when v9.0.1367 is
reverted (and simplified it too).
related: #14042
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 20 Feb 2024 22:30:04 +0100 |
parents | 238f424acc6c |
children | d91ac228d7df |
rev | line source |
---|---|
7 | 1 This builds a one-click install for Vim for Win32 using the Nullsoft |
12626
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
2 Installation System (NSIS), available at http://nsis.sourceforge.net/ |
7 | 3 |
4 To build the installable .exe: | |
5 | |
6 1. Unpack three archives: | |
7 PC sources | |
8 PC runtime | |
9 PC language files | |
10 You can generate these from the Unix sources and runtime plus the extra | |
11 archive (see the Makefile in the top directory). | |
12 | |
13 2. Go to the src directory and build: | |
14 gvim.exe (the OLE version), | |
15 vimrun.exe, | |
16 install.exe, | |
18182
9b6bfce90778
patch 8.1.2086: missing a few changes for the renamed files
Bram Moolenaar <Bram@vim.org>
parents:
15410
diff
changeset
|
17 uninstall.exe, |
15095
803807ab19c5
patch 8.1.0558: some MS-Windows instructions are outdated
Bram Moolenaar <Bram@vim.org>
parents:
12626
diff
changeset
|
18 tee/tee.exe, |
7 | 19 xxd/xxd.exe, |
20 | |
12626
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
21 Then execute tools/rename.bat to rename the executables. (mv command is |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
22 required.) |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
23 |
7 | 24 3. Go to the GvimExt directory and build gvimext.dll (or get it from a binary |
12626
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
25 archive). Both 64- and 32-bit versions are needed and should be placed |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
26 as follows: |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
27 64-bit: src/GvimExt/gvimext64.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
28 32-bit: src/GvimExt/gvimext.dll |
7 | 29 |
30727
645722244c3f
patch 9.0.0698: VisVim is outdated, does not work with current Visual Studio
Bram Moolenaar <Bram@vim.org>
parents:
25056
diff
changeset
|
30 4. Get a "diff.exe" program. If you skip this the built-in diff will always |
15095
803807ab19c5
patch 8.1.0558: some MS-Windows instructions are outdated
Bram Moolenaar <Bram@vim.org>
parents:
12626
diff
changeset
|
31 be used (which is fine for most users). If you do have your own |
31628
238f424acc6c
patch 9.0.1146: MS-Windows: various special keys/modifiers are not mappable
Bram Moolenaar <Bram@vim.org>
parents:
30727
diff
changeset
|
32 "diff.exe" put it in the "../.." directory (above the "vim90" directory, |
15095
803807ab19c5
patch 8.1.0558: some MS-Windows instructions are outdated
Bram Moolenaar <Bram@vim.org>
parents:
12626
diff
changeset
|
33 it's the same for all Vim versions). |
7 | 34 You can find one in previous Vim versions or in this archive: |
35 http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz | |
15095
803807ab19c5
patch 8.1.0558: some MS-Windows instructions are outdated
Bram Moolenaar <Bram@vim.org>
parents:
12626
diff
changeset
|
36 |
31628
238f424acc6c
patch 9.0.1146: MS-Windows: various special keys/modifiers are not mappable
Bram Moolenaar <Bram@vim.org>
parents:
30727
diff
changeset
|
37 5 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim90" |
15095
803807ab19c5
patch 8.1.0558: some MS-Windows instructions are outdated
Bram Moolenaar <Bram@vim.org>
parents:
12626
diff
changeset
|
38 directory). This is required for the terminal window. |
7 | 39 |
30727
645722244c3f
patch 9.0.0698: VisVim is outdated, does not work with current Visual Studio
Bram Moolenaar <Bram@vim.org>
parents:
25056
diff
changeset
|
40 6. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have |
7 | 41 to do this on Unix. Make sure the file is in DOS file format! |
42 | |
30727
645722244c3f
patch 9.0.0698: VisVim is outdated, does not work with current Visual Studio
Bram Moolenaar <Bram@vim.org>
parents:
25056
diff
changeset
|
43 7. Get gettext and iconv DLLs from the following site: |
12626
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
44 https://github.com/mlocati/gettext-iconv-windows/releases |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
45 Both 64- and 32-bit versions are needed. |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
46 Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
47 DLLs and place them as follows: |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
48 |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
49 <GETTEXT directory> |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
50 | |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
51 + gettext32/ |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
52 | libintl-8.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
53 | libiconv-2.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
54 | libgcc_s_sjlj-1.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
55 | |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
56 ` gettext64/ |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
57 libintl-8.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
58 libiconv-2.dll |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
59 |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
60 The default <GETTEXT directory> is "..", however, you can change it by |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
61 passing /DGETTEXT=... option to the makensis command. |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
62 |
aca41efd888c
patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
63 |
7 | 64 Install NSIS if you didn't do that already. |
65 Also install UPX, if you want a compressed file. | |
24565
138e9caf4a7a
patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering
Bram Moolenaar <Bram@vim.org>
parents:
19116
diff
changeset
|
66 Download and include the ShellExecAsUser.dll Unicode version which can be |
138e9caf4a7a
patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering
Bram Moolenaar <Bram@vim.org>
parents:
19116
diff
changeset
|
67 sourced from: https://nsis.sourceforge.io/ShellExecAsUser_plug-in |
138e9caf4a7a
patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering
Bram Moolenaar <Bram@vim.org>
parents:
19116
diff
changeset
|
68 |
7 | 69 |
15410
cb1652e41314
patch 8.1.0713: images for NSIS take up too much space
Bram Moolenaar <Bram@vim.org>
parents:
15095
diff
changeset
|
70 Unpack the images: |
cb1652e41314
patch 8.1.0713: images for NSIS take up too much space
Bram Moolenaar <Bram@vim.org>
parents:
15095
diff
changeset
|
71 cd nsis |
cb1652e41314
patch 8.1.0713: images for NSIS take up too much space
Bram Moolenaar <Bram@vim.org>
parents:
15095
diff
changeset
|
72 unzip icons.zip |
cb1652e41314
patch 8.1.0713: images for NSIS take up too much space
Bram Moolenaar <Bram@vim.org>
parents:
15095
diff
changeset
|
73 |
25056 | 74 Then build gvim.exe: |
7 | 75 |
15410
cb1652e41314
patch 8.1.0713: images for NSIS take up too much space
Bram Moolenaar <Bram@vim.org>
parents:
15095
diff
changeset
|
76 cd nsis |
7 | 77 makensis gvim.nsi |