Mercurial > vim
annotate src/osdef.sh @ 33299:4c975fa0a442 v9.0.1915
patch 9.0.1915: r_CTRL-C works differently in visual mode
Commit: https://github.com/vim/vim/commit/476733f3d06876c7ac105e064108c973a57984d3
Author: Christian Brabandt <cb@256bit.org>
Date: Tue Sep 19 20:41:51 2023 +0200
patch 9.0.1915: r_CTRL-C works differently in visual mode
Problem: r_CTRL-C works differently in visual mode
Solution: Make r_CTRL-C behave consistent in visual mode
in terminal and Windows GUI
in visual mode, r CTRL-C behaves strange in Unix like environments. It
seems to end visual mode, but still is waiting for few more chars,
however it never seems to replace it by any characters and eventually
just returns back into normal mode.
In contrast in Windows GUI mode, r_CTRL-C replaces in the selected area
all characters by a literal CTRL-C.
Not sure why it behaves like this. It seems in the Windows GUI, got_int
is not set and therefore behaves as if any other normal character has
been pressed.
So remove the special casing of what happens when got_int is set and
make it always behave like in Windows GUI mode. Add a test to verify it
always behaves like replacing in the selected area each selected
character by a literal CTRL-C.
closes: #13091
closes: #13112
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Sep 2023 21:00:03 +0200 |
parents | befdf44737d1 |
children |
rev | line source |
---|---|
7 | 1 #! /bin/sh |
2 # | |
3 # osdef.sh -- copy osdef.h.in to osdef.h while removing declarations | |
4 # found in the system header files. Caution: weird sed magic going on here. | |
5 # Warnings are printed if sed did not survive. | |
6 # | |
7 # (C) Michael Schroeder, Juergen Weigert | |
8 # | |
9 # osdef.h.in has been split into osdef1.h.in and osdef2.h.in, because some | |
10 # sed's could not handle the amount of commands (is 50 commands the limit?). | |
11 # | |
12 # 31.10.95 jw. | |
13 | |
14 if test -z "$CC"; then | |
15 CC=cc | |
16 fi | |
17 if test -z "$srcdir"; then | |
18 srcdir=. | |
19 fi | |
20 | |
19235
befdf44737d1
patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents:
7722
diff
changeset
|
21 # Make sure collation works as expected |
befdf44737d1
patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents:
7722
diff
changeset
|
22 # swedish range [a-z] does not match 'w' |
befdf44737d1
patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents:
7722
diff
changeset
|
23 export LC_COLLATE=C |
befdf44737d1
patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents:
7722
diff
changeset
|
24 export LC_ALL= |
befdf44737d1
patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents:
7722
diff
changeset
|
25 |
7 | 26 rm -f core* *.core |
27 | |
28 cat << EOF > osdef0.c | |
29 #ifndef __APPLE__ | |
30 # define select select_declared_wrong | |
31 #endif | |
32 #define tgetstr tgetstr_declared_wrong | |
33 #include "auto/config.h" | |
34 #include "os_unix.h" /* bring in most header files, more follow below */ | |
35 #include "os_unixx.h" /* bring in header files for os_unix.c */ | |
36 | |
37 #ifdef HAVE_TERMCAP_H | |
38 # include <termcap.h> /* only for term.c */ | |
39 #endif | |
40 | |
41 #ifdef HAVE_FCNTL_H | |
42 # include <fcntl.h> /* only used in a few files */ | |
43 #endif | |
44 | |
45 #ifdef HAVE_SYS_STATFS_H | |
46 # include <sys/types.h> | |
47 # include <sys/statfs.h> /* only for memfile.c */ | |
48 #endif | |
49 | |
50 #ifdef HAVE_X11 | |
51 # include <X11/Intrinsic.h> | |
52 #endif | |
53 EOF | |
54 | |
5436 | 55 $CC -I. -I$srcdir -E osdef0.c >osdef0.cc |
7 | 56 |
57 # insert a space in front of each line, so that a function name at the | |
58 # start of the line is matched with "[)*, ]\1[ (]" | |
59 sed < osdef0.cc -e '/\(..*\)/s// \1/' > osdef0.ccc | |
60 | |
7722
c4f8b1d48f20
commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents:
5436
diff
changeset
|
61 sed < $srcdir/osdef1.h.in -n -e '/^extern/s@.*[)* ][)* ]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, ][(]*\1[)]*[ (]/i\\\ |
c4f8b1d48f20
commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents:
5436
diff
changeset
|
62 \\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef11.sed |
7 | 63 |
7722
c4f8b1d48f20
commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents:
5436
diff
changeset
|
64 sed < $srcdir/osdef2.h.in -n -e '/^extern/s@.*[)* ][)* ]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, ][(]*\1[)]*[ (]/i\\\ |
c4f8b1d48f20
commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents:
5436
diff
changeset
|
65 \\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef21.sed |
7 | 66 |
67 cat << EOF > osdef2.sed | |
68 1i\\ | |
69 /* | |
70 1i\\ | |
71 * osdef.h is automagically created from osdef?.h.in by osdef.sh -- DO NOT EDIT | |
72 1i\\ | |
73 */ | |
74 EOF | |
75 | |
76 cat osdef0.ccc | sed -n -f osdef11.sed >> osdef2.sed | |
77 sed -f osdef2.sed < $srcdir/osdef1.h.in > auto/osdef.h | |
78 | |
79 cat osdef0.ccc | sed -n -f osdef21.sed > osdef2.sed | |
80 sed -f osdef2.sed < $srcdir/osdef2.h.in >> auto/osdef.h | |
81 | |
82 rm osdef0.c osdef0.cc osdef0.ccc osdef11.sed osdef21.sed osdef2.sed | |
83 | |
84 if test -f core*; then | |
85 file core* | |
86 echo " Sorry, your sed is broken. Call the system administrator." | |
87 echo " Meanwhile, you may try to compile Vim with an empty osdef.h file." | |
88 echo " If you compiler complains about missing prototypes, move the needed" | |
89 echo " ones from osdef1.h.in and osdef2.h.in to osdef.h." | |
90 exit 1 | |
91 fi | |
92 cat $srcdir/osdef1.h.in $srcdir/osdef2.h.in >osdefX.h.in | |
93 if eval test "`diff auto/osdef.h osdefX.h.in | wc -l`" -eq 4; then | |
94 echo " Hmm, sed is very pessimistic about your system header files." | |
95 echo " But it did not dump core -- strange! Let's continue carefully..." | |
96 echo " If this fails, you may want to remove offending lines from osdef.h" | |
97 echo " or try with an empty osdef.h file, if your compiler can do without" | |
98 echo " function declarations." | |
99 fi | |
100 rm osdefX.h.in |