Compare commits

..

57 Commits

Author SHA1 Message Date
Kazuki Sakamoto 06f8b8e667 MacVim Snapshot 138
Binary targets macOS 10.8+

- Vim patch 8.0.1175

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.6.3
- Ruby 2.0
2017-10-04 20:59:36 -07:00
Kazuki Sakamoto 4116a647ac Merge remote-tracking branch 'vim/master' 2017-10-04 19:10:39 -07:00
Bram Moolenaar c902609f69 patch 8.0.1175: build failure without +termresponse
Problem:    Build failure without +termresponse.
Solution:   Add #ifdef.
2017-10-04 19:35:02 +02:00
Bram Moolenaar a0a6f2776e patch 8.0.1174: Mac Terminal.app has wrong color for white
Problem:    Mac Terminal.app has wrong color for white.
Solution:   Use white from the color cube.
2017-10-04 18:04:16 +02:00
Kazuki Sakamoto c8aa5fbeb7 Merge remote-tracking branch 'vim/master' 2017-10-02 22:18:02 -07:00
Bram Moolenaar 19a3d68b2c patch 8.0.1173: terminal window is not redrawn after CTRL-L
Problem:    Terminal window is not redrawn after CTRL-L. (Marcin Szamotulski)
Solution:   Redraw the whole terminal when w_redr_type is NOT_VALID.
2017-10-02 21:54:59 +02:00
Bram Moolenaar 2a6a6c3014 patch 8.0.1172: when E734 is given option is still set
Problem:    When E734 is given option is still set.
Solution:   Assign NULL to "s". (Christian Brabandt)
2017-10-02 19:29:48 +02:00
Bram Moolenaar 712549e04e patch 8.0.1171: popup test is still a bit flaky
Problem:    Popup test is still a bit flaky.
Solution:   Change term_wait() calls. (Ozaki Kiichi)
2017-10-01 16:59:18 +02:00
Bram Moolenaar f33606112a patch 8.0.1170: using termdebug results in 100% CPU time
Problem:    Using termdebug results in 100% CPU time. (tomleb)
Solution:   Use polling instead of select().
2017-10-01 16:21:31 +02:00
Bram Moolenaar 5ece3e359c patch 8.0.1169: highlignting one char too many with 'list' and 'cul'
Problem:    Highlignting one char too many with 'list' and 'cul'.
Solution:   Check for 'list' being active. (Ozaki Kiichi, closes #2177)
2017-10-01 14:35:02 +02:00
Bram Moolenaar 0aa398f55a patch 8.0.1168: wrong highlighting with combination of match and 'cursorline'
Problem:    wrong highlighting with combination of match and 'cursorline'.
Solution:   Use "line_attr" when appropriate. (Ozaki Kiichi, closes #2111)
            But don't highlight more than one character.
2017-09-30 21:23:55 +02:00
Kazuki Sakamoto c233aed6c3 Merge remote-tracking branch 'vim/master' 2017-09-30 11:57:02 -07:00
Bram Moolenaar 3a497e1a41 patch 8.0.1167: Motif: typing in terminal window is slow
Problem:    Motif: typing in terminal window is slow.
Solution:   Do not redraw the whole terminal window but only was was changed.
2017-09-30 20:40:27 +02:00
Bram Moolenaar c958b31638 patch 8.0.1166: :terminal doesn't work on Mac High Sierra
Problem:    :terminal doesn't work on Mac High Sierra.
Solution:   Change #ifdef for OpenPTY(). (Ozaki Kiichi, Kazunobu Kuriyama,
            closes #2162)
2017-09-30 20:04:36 +02:00
Kazuki Sakamoto 9c2f5e7b8d Merge remote-tracking branch 'vim/master' 2017-09-30 09:35:58 -07:00
Bram Moolenaar f52c383156 patch 8.0.1165: popup test is still flaky
Problem:    Popup test is still flaky.
Solution:   Add a term_wait() call. (Ozaki Kiichi)
2017-09-30 16:49:19 +02:00
Bram Moolenaar 65ed136844 patch 8.0.1164: changing StatusLine highlight does not always work
Problem:    Changing StatusLine highlight while evaluating 'statusline' may
            not change the status line color.
Solution:   When changing highlighting while redrawing don't cause another
            redraw. (suggested by Ozaki Kiichi, closes #2171, closes #2120)
2017-09-30 16:00:14 +02:00
Bram Moolenaar c79977a437 patch 8.0.1163: popup test is flaky
Problem:    Popup test is flaky.
Solution:   Add a WaitFor() and fix another.
2017-09-30 14:39:27 +02:00
Bram Moolenaar 660b85e39a patch 8.0.1162: shared script for tests cannot be included twice
Problem:    Shared script for tests cannot be included twice.
Solution:   Include it where needed, it will "finish" if loaded again.
2017-09-30 14:26:58 +02:00
Bram Moolenaar a5e6621aad patch 8.0.1161: popup menu drawing problem when resizing terminal
Problem:    Popup menu drawing problem when resizing terminal.
Solution:   Redraw after resizing also when a popup menu is visible. (Ozaki
            Kiichi, closes #2110)
2017-09-29 22:42:33 +02:00
Bram Moolenaar 816968defc patch 8.0.1160: getting tab-local variable fails after closing window
Problem:    Getting tab-local variable fails after closing window.
Solution:   set tp_firstwin and tp_lastwin. (Jason Franklin, closes #2170)
2017-09-29 21:29:18 +02:00
Kazuki Sakamoto 7bfaf0665e Merge remote-tracking branch 'vim/master' 2017-09-28 19:16:32 -07:00
Bram Moolenaar d371bbe0ab patch 8.0.1159: typo in #ifdef
Problem:    Typo in #ifdef.
Solution:   Change "PROT" to "PROTO". (Nobuhiro Takasaki, closes #2165)
2017-09-28 22:35:25 +02:00
Bram Moolenaar db51007108 patch 8.0.1158: still old style tests
Problem:    Still old style tests.
Solution:   Convert serveral tests to new style. (Yegappan Lakshmanan)
2017-09-28 21:52:17 +02:00
Bram Moolenaar 24a98a0eb7 Update runtime files 2017-09-27 22:23:55 +02:00
Bram Moolenaar 9cf39cc57f patch 8.0.1157: compiler warning on MS-Windows
Problem:    Compiler warning on MS-Windows.
Solution:   Add type cast. (Yasuhiro Matsomoto)
2017-09-27 21:46:19 +02:00
Bram Moolenaar 1ec96c9269 patch 8.0.1156: trouble from removing one -W argument from Perl CFLAGS
Problem:    Removing one -W argument from Perl CFLAGS may cause trouble.
Solution:   Remove all -W flags. (Christian Brabandt)
2017-09-27 21:42:08 +02:00
Kazuki Sakamoto 0410900dea Merge remote-tracking branch 'vim/master' 2017-09-26 20:26:48 -07:00
Bram Moolenaar d1bc96ce24 patch 8.0.1155: Ruby command triggers a warning
Problem:    Ruby command triggers a warning when RUBYOPT is set to "-w".
Solution:   use "-e_=0" instead of "-e0". (Masataka Pocke Kuwabara, closes
            #2143)
2017-09-26 21:21:44 +02:00
Bram Moolenaar 1b38344e00 patch 8.0.1154: 'indentkeys' does not work properly
Problem:    'indentkeys' does not work properly. (Gary Johnson)
Solution:   Get the cursor line again. (Christian Brabandt, closes #2151)
2017-09-26 20:04:54 +02:00
Bram Moolenaar 97fbc404fc patch 8.0.1153: no tests for diff_hlID() and diff_filler()
Problem:    No tests for diff_hlID() and diff_filler().
Solution:   Add tests. (Dominique Pelle, closes #2156)
2017-09-26 19:41:46 +02:00
Bram Moolenaar 2a02745709 patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Problem:    Encoding of error message wrong in Cygwin terminal.
Solution:   Get locale from environment variables. (Ken Takata)
2017-09-26 19:10:37 +02:00
Bram Moolenaar 09ca932f8e patch 8.0.1151: "vim -c startinsert!" doesn't append
Problem:    "vim -c startinsert!" doesn't append.
Solution:   Correct line number on startup. (Christian Brabandt, closes #2117)
2017-09-26 17:40:45 +02:00
Bram Moolenaar 6edeaf387c patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Problem:    MS-Windows GUI: dialog font size is incorrect.
Solution:   Pass flag to indicate 'encoding' or active codepage. (Yasuhiro
            Matsomoto, closes #2160)
2017-09-26 14:46:04 +02:00
Bram Moolenaar a8fc0d3817 patch 8.0.1149: libvterm colors differ from xterm
Problem:    libvterm colors differ from xterm.
Solution:   Use the xterm colors for libvterm.
2017-09-26 13:59:47 +02:00
Bram Moolenaar 22ab547dc2 patch 8.0.1148: gN doesn't work on last match with 'wrapscan' off
Problem:    "gN" doesn't work on last match with 'wrapscan' off. (fcpg)
Solution:   Adjust for searching backward. (Christian Brabandt)
2017-09-26 12:28:45 +02:00
Bram Moolenaar 7c456a4511 patch 8.0.1147: fail to build with tiny features
Problem:    Fail to build with tiny features. (Tony Mechelynck)
Solution:   Move #ifdefs.
2017-09-26 11:15:53 +02:00
Kazuki Sakamoto 783f28115f Merge remote-tracking branch 'vim/master' 2017-09-25 20:31:39 -07:00
Bram Moolenaar 452030e530 patch 8.0.1146: redraw when highlight is set with same names
Problem:    Redraw when highlight is set with same names. (Ozaki Kiichi)
Solution:   Only free and save a name when it changed. (closes #2120)
2017-09-25 22:57:27 +02:00
Bram Moolenaar 0c6a32963d patch 8.0.1145: warning when compiling with Perl
Problem:    Warning when compiling with Perl.
Solution:   Remove unused variable. (Ken Takata0
2017-09-25 22:02:32 +02:00
Bram Moolenaar 0b05e491b4 patch 8.0.1144: using wrong #ifdef for computing length
Problem:    Using wrong #ifdef for computing length.
Solution:   use BACKSLASH_IN_FILENAME instead of COLON_IN_FILENAME. (Yasuhiro
            Matsomoto, closes #2153)
2017-09-24 19:39:09 +02:00
Kazuki Sakamoto aeddf7cbe5 Merge remote-tracking branch 'vim/master' 2017-09-24 09:51:34 -07:00
Bram Moolenaar e0de17d84e patch 8.0.1143: macros always expand to the same thing
Problem:    Macros always expand to the same thing.
Solution:   Remove W_VSEP_WIDTH() and W_STATUS_HEIGHT().
2017-09-24 16:24:34 +02:00
Bram Moolenaar 378daf87d3 patch 8.0.1142: window toolbar menu gets a tear-off item
Problem:    Window toolbar menu gets a tear-off item.
Solution:   Recognize the window toolbar.
2017-09-23 23:58:28 +02:00
Bram Moolenaar 96e7a6ee45 patch 8.0.1141: MS-Windows build dependencies are incomplete
Problem:    MS-Windows build dependencies are incomplete.
Solution:   Fix the dependencies. (Ken Takata)
2017-09-23 19:48:29 +02:00
Bram Moolenaar bb3e6416f1 patch 8.0.1140: still old style tests
Problem:    Still old style tests.
Solution:   Convert two tests to new style. (Yegappan Lakshmanan)
2017-09-23 19:24:46 +02:00
Bram Moolenaar a21a6a9ade patch 8.0.1139: using window toolbar changes state
Problem:    Using window toolbar changes state.
Solution:   Always execute window toolbar actions in Normal mode.
2017-09-23 16:33:50 +02:00
Bram Moolenaar eb163d73b1 patch 8.0.1138: click in window toolbar starts Visual mode
Problem:    Click in window toolbar starts Visual mode.
Solution:   Add the MOUSE_WINBAR flag.
2017-09-23 15:08:17 +02:00
Bram Moolenaar e745d75c3e patch 8.0.1137: cannot build with Ruby
Problem:    Cannot build with Ruby.
Solution:   Fix misplaced brace.
2017-09-22 16:56:22 +02:00
Bram Moolenaar 0263146b5d patch 8.0.1136: W_WIDTH() is always the same
Problem:    W_WIDTH() is always the same.
Solution:   Expand the macro.
2017-09-22 15:20:32 +02:00
Bram Moolenaar 53f8174eae patch 8.0.1135: W_WINCOL() is always the same
Problem:    W_WINCOL() is always the same.
Solution:   Expand the macro.
2017-09-22 14:35:51 +02:00
Bram Moolenaar 76301956f0 patch 8.0.1134: superfluous call to syn_get_final_id()
Problem:    Superfluous call to syn_get_final_id().
Solution:   Remove it. (Ken Takata)
2017-09-22 13:53:37 +02:00
Bram Moolenaar f3d769a585 patch 8.0.1133: syntax timeout not used correctly
Problem:    Syntax timeout not used correctly.
Solution:   Do not pass the timeout to syntax_start() but set it explicitly.
            (Yasuhiro Matsumoto, closes #2139)
2017-09-22 13:44:56 +02:00
Bram Moolenaar 8b21de33bb Missing part of 8.0.1131. 2017-09-22 11:13:52 +02:00
Kazuki Sakamoto c9262f4ff3 Merge remote-tracking branch 'vim/master' 2017-09-21 19:43:52 -07:00
Bram Moolenaar fc7649f8b8 patch 8.0.1132: #if condition is not portable
Problem:    #if condition is not portable.
Solution:   Add defined(). (Zuloloxi, closes #2136)
2017-09-21 22:46:47 +02:00
Bram Moolenaar b00fdf6eed patch 8.0.1131: not easy to trigger an autocommand for new terminal window
Problem:    It is not easy to trigger an autocommand for new terminal window.
            (Marco Restelli)
Solution:   Trigger BufWinEnter after setting 'buftype'.
2017-09-21 22:16:21 +02:00
131 changed files with 7401 additions and 4200 deletions
+1
View File
@@ -136,6 +136,7 @@ SRC_ALL = \
src/testdir/bench*.vim \
src/testdir/samples/*.txt \
src/testdir/if_ver*.vim \
src/testdir/xterm_ramp.vim \
src/proto.h \
src/proto/arabic.pro \
src/proto/blowfish.pro \
+3 -3
View File
@@ -1,4 +1,4 @@
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 02
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -10,7 +10,7 @@ eight versions of the same file.
The basics are explained in section |08.7| of the user manual.
1. Starting diff mode |vimdiff|
1. Starting diff mode |start-vimdiff|
2. Viewing diffs |view-diffs|
3. Jumping to diffs |jumpto-diffs|
4. Copying diffs |copy-diffs|
@@ -19,7 +19,7 @@ The basics are explained in section |08.7| of the user manual.
{not in Vi}
==============================================================================
1. Starting diff mode
1. Starting diff mode *start-vimdiff*
The easiest way to start editing in diff mode is with the "vimdiff" command.
This starts Vim as usual, and additionally sets up for viewing the differences
+11 -5
View File
@@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 19
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -796,11 +796,17 @@ make the items look like icons.
If the items do not fit then the last ones cannot be used. The toolbar does
not wrap.
Note that Vim may be in any mode when executing these commands. The menu
should be defined for Normal mode and will be executed without changing the
current mode. Thus if the current window is in Visual mode and the menu
command does not intentionally change the mode, Vim will remain in Visual
mode. Best is to use `:nnoremenu` to avoid side effects.
Example for debugger tools: >
amenu 1.10 WinBar.Step :Step<CR>
amenu 1.20 WinBar.Next :Next<CR>
amenu 1.30 WinBar.Finish :Finish<CR>
amenu 1.40 WinBar.Cont :Continue<CR>
nnoremenu 1.10 WinBar.Step :Step<CR>
nnoremenu 1.20 WinBar.Next :Next<CR>
nnoremenu 1.30 WinBar.Finish :Finish<CR>
nnoremenu 1.40 WinBar.Cont :Continue<CR>
<
The window toolbar uses the ToolbarLine and ToolbarButton highlight groups.
+2 -2
View File
@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.0. Last change: 2017 Sep 17
*map.txt* For Vim version 8.0. Last change: 2017 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -29,7 +29,7 @@ manual.
1. Key mapping *key-mapping* *mapping* *macro*
Key mapping is used to change the meaning of typed keys. The most common use
is to define a sequence commands for a function key. Example: >
is to define a sequence of commands for a function key. Example: >
:map <F2> a<C-R>=strftime("%c")<CR><Esc>
+4 -4
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2017 Sep 16
*options.txt* For Vim version 8.0. Last change: 2017 Sep 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4504,8 +4504,8 @@ A jump table for the options with a short description can be found at |Q_op|.
1 over-the-spot style
See: |xim-input-style|
For a long time on-the-spot sytle had been used in GTK version of vim,
however, it is known that it causes troubles when using mappings,
For a long time on-the-spot style had been used in the GTK version of
vim, however, it is known that it causes troubles when using mappings,
|single-repeat|, etc. Therefore over-the-spot style becomes the
default now. This should work fine for most people, however if you
have any problem with it, try using on-the-spot style.
@@ -8466,7 +8466,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Save the whole buffer for undo when reloading it. This applies to the
":e!" command and reloading for when the buffer changed outside of
Vim. |FileChangedShell|
The save only happens when this options is negative or when the number
The save only happens when this option is negative or when the number
of lines is smaller than the value of this option.
Set this option to zero to disable undo for a reload.
+1
View File
@@ -8565,6 +8565,7 @@ star pattern.txt /*star*
starstar editing.txt /*starstar*
starstar-wildcard editing.txt /*starstar-wildcard*
start-of-file pattern.txt /*start-of-file*
start-vimdiff diff.txt /*start-vimdiff*
starting starting.txt /*starting*
starting-amiga starting.txt /*starting-amiga*
starting.txt starting.txt /*starting.txt*
+71 -4
View File
@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 17
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -81,7 +81,14 @@ themselves (like Vim does).
To change the keys you type use terminal mode mappings, see |:tmap|.
These are defined like any mapping, but apply only when typing keys that are
sent to the job running in the terminal.
sent to the job running in the terminal. For example, to make Escape switch
to Terminal-Normal mode: >
tnoremap <Esc> <C-W>N
After opening the terminal window and setting 'buftype' to "terminal" the
BufWinEnter autocommand event is triggered. This makes it possible to set
options specifically for the window and buffer. Example: >
au BufWinEnter * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
Size and color ~
@@ -328,7 +335,7 @@ Load the plugin with this command: >
packadd termdebug
< *:Termdebug*
To start debugging use `:TermDebug` folowed by the command name, for example: >
:TermDebug vim
:Termdebug vim
This opens two windows:
gdb window A terminal window in which "gdb vim" is executed. Here you
@@ -352,6 +359,62 @@ When the debugger ends, typically by typing "quit" in the gdb window, the two
opened windows are closed.
Example session ~
Start in the Vim "src" directory and build Vim: >
% make
Start Vim: >
% ./vim
Load the termdebug plugin and start debugging Vim: >
:packadd termdebug
:Termdebug vim
You should now have three windows:
source - where you started, has a window toolbar with buttons
gdb - you can type gdb commands here
program - the executed program will use this window
You can use CTRL-W CTRL-W or the mouse to move focus between windows.
Put focus on the gdb window and type: >
break ex_help
run
Vim will start running in the program window. Put focus there and type: >
:help gui
Gdb will run into the ex_help breakpoint. The source window now shows the
ex_cmds.c file. A ">>" marker will appear where the breakpoint was set. The
line where the debugger stopped is highlighted. You can now step through the
program. Let's use the mouse: click on the "Next" button in the window
toolbar. You will see the highlighting move as the debugger executes a line
of source code.
Click "Next" a few times until the for loop is highlighted. Put the cursor on
the end of "eap->arg", then click "Eval" in the toolbar. You will see this
displayed:
"eap->arg": 0x555555e68855 "gui" ~
This way you can inspect the value of local variables. You can also focus the
gdb window and use a "print" command, e.g.: >
print *eap
Now go back to the source window and put the cursor on the first line after
the for loop, then type: >
:Break
You will see a ">>" marker appear, this indicates the new breakpoint. Now
click "Cont" in the toolbar and the code until the breakpoint will be
executed.
You can type more advanced commands in the gdb window. For example, type: >
watch curbuf
Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution
will now continue until the value of "curbuf" changes, which is in do_ecmd().
To remove this watchpoint again type in the gdb window: >
delete 3
You can see the stack by typing in the gdb window: >
where
Move through the stack frames, e.g. with: >
frame 3
The source window will show the code, at the point where the call was made to
a deeper level.
Stepping through code ~
Put focus on the gdb window to type commands there. Some common ones are:
@@ -410,7 +473,7 @@ To change the name of the gdb command, set the "termdebugger" variable before
invoking `:Termdebug`: >
let termdebugger = "mygdb"
Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI
interface.
interface. This probably requires gdb version 7.12.
The color of the signs can be adjusted with these highlight groups:
- debugPC the current position
@@ -429,6 +492,10 @@ vertical split: >
let g:termdebug_wide = 163
This will set &columns to 163 when :Termdebug is used. The value is restored
when quitting the debugger.
If g:termdebug_wide is set and &Columns is already larger than
g:termdebug_wide then a vertical split will be used without changing &columns.
Set it to 1 to get a vertical split without every changing &columns (useful
for when the terminal can't be resized by Vim).
+22 -26
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 19
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,17 +35,16 @@ entered there will not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
MS-Windows build and installer improvements:
- Switch to VC2015 for building. (Ken Takata, 2017 Sep 21)
Check resulting binary on XP.
- Patch to install 32 and 64 bit Gvimext and related dll files. (Ken Takata,
2017 Sep 23, #2144)
:term hangs in Athena and Motif. (Kazunobu Kuriyama, 2017 Sep 17)
Always use FEAT_WINDOWS:
May get rid of:
#define W_WINCOL(wp) (wp->w_wincol)
#define W_WIDTH(wp) (wp->w_width)
#define W_ENDCOL(wp) (wp->w_wincol + wp->w_width)
#define W_VSEP_WIDTH(wp) (wp->w_vsep_width)
#define W_STATUS_HEIGHT(wp) (wp->w_status_height)
#define W_WINROW(wp) (wp->w_winrow)
# define ALIST(win) (win)->w_alist
Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
@@ -70,6 +69,8 @@ Terminal emulator window:
with the expected screenshot. Set t_Co to 256.
+channel:
- Add a separate timeout for opening a socket. Currently it's fixed at 50
msec, which is too small for a remote connection. (tverniquet, #2130)
- Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
@@ -94,6 +95,8 @@ Terminal emulator window:
Although user could use "xterm -e 'cmd arg'".
Regexp problems:
- [:space:] only matches ASCII spaces. Add [:white:] for all space-like
characters, esp. including 0xa0. Use character class zero.
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
(Manuel Ortega, 2016 Apr 24)
Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on
@@ -149,14 +152,11 @@ Use names that indicate their appearnce (Christian Brabandt, 2017 Aug 3)
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
Patch to update Brazilian translations. (Eduardo Dobay, 2017 Sep 10, #2077)
Include solarized color scheme?
When starting with --clean packages under "start" are not loaded. Make this
work: :packadd START {name} similar to :runtime START name
Patch to refactor qf_jump(). (Yegappan, 2017 Sep 17)
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
@@ -175,14 +175,19 @@ Patch for not profiling the first line of a script. (Lemonboy, 2017 Sep 17,
Mac Terminal.app: ctermbg=15 gives light grey instead of white.
ctermbg=256 breaks clearing till end of the line. Both work fine in xterm.
Patch to avoid `rb_load_protect` as a workaround not to crash (#2147)
Patch for drag&drop reordering of GUI tab pages reordering.
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
Update 2016 Aug 10.
Using ":hi" causes a redraw, but a redraw may update the status line, which
may trigger a ":hi" command.
Last line not in profile if it is a continuation line. (LemonBoy, 2017 Sep 17,
#2112)
"vim -c startinsert!" doesn't append. (#2117)
With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
(Marcin Szewczyk, 2017 Apr 26)
@@ -203,6 +208,7 @@ Patch to make ":set scroll&" work properly. (Ozaki Kiichi, 2017 Sep 17, #2104)
mswin.vim should not map CTRL-F in the console (#2093)
Patch from Christian, 2017 Sep 15.
Installer patch from Ken Takata, link on #2093.
Default install on MS-Windows should source defaults.vim.
Ask whether to use Windows or Vim key behavior?
@@ -324,8 +330,6 @@ Use gvimext.dll from the nightly build? (Issue #249)
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)
Include solarized color scheme?
Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif?
@@ -660,11 +664,6 @@ Patch to improve map documentation. Issue #799.
Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)
Patch for drag&drop reordering of GUI tab pages reordering.
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
Update 2016 Aug 10.
We can use '. to go to the last change in the current buffer, but how about
the last change in any buffer? Can we use ', (, is next to .)?
@@ -2236,9 +2235,6 @@ with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then
go to Insert mode and add a few lines. Then backspacing every other time
moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
Windows installer should install 32-bit version of right-click handler also on
64-bit systems. (Brian Cunningham, 2011 Dec 28)
Windows installer could add a "open in new tab of existing Vim" menu entry.
Gvimext: patch to add "Edit with single Vim &tabbed" menu entry.
Just have two choices, always using one Vim and selecting between using an
+1 -1
View File
@@ -325,7 +325,7 @@ You can still edit the buffer, but will be prevented from accidentally
overwriting a file.
If you do want to overwrite a file, add an exclamation mark to the Ex command,
as in ":w!".
The \-R option also implies the \-n option (see below).
The \-R option also implies the \-n option (see above).
The 'readonly' option can be reset with ":set noro".
See ":help 'readonly'".
.TP
+1 -1
View File
@@ -225,7 +225,7 @@ OPTIONS
dentally overwriting a file. If you do want to overwrite a
file, add an exclamation mark to the Ex command, as in
":w!". The -R option also implies the -n option (see
below). The 'readonly' option can be reset with ":set
above). The 'readonly' option can be reset with ":set
noro". See ":help 'readonly'".
-r List swap files, with information about using them for
+3 -2
View File
@@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 08
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -619,7 +619,8 @@ The minimal height and width of a window is set with 'winminheight' and
41. :buffers list of buffers
The meaning of [N] depends on the command:
[N] is number of buffers to go forward/backward on ?2, ?3, and ?4
[N] is the number of buffers to go forward/backward on 2/12/22/32,
3/13/23/33, and 4/14/24/34
[N] is an argument number, defaulting to current argument, for 1 and 21
[N] is a buffer number, defaulting to current buffer, for 11 and 31
[N] is a count for 19 and 39
+4 -2
View File
@@ -1,6 +1,6 @@
" Vim script for Evim key bindings
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Jul 24
" Last Change: 2017 Sep 20
" Don't use Vi-compatible mode.
set nocompatible
@@ -67,8 +67,10 @@ endif " has("autocmd")
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd matchit
packadd! matchit
endif
" vim: set sw=2 :
+5 -6
View File
@@ -3,7 +3,7 @@
" Author: Andy Cedilnik <andy.cedilnik@kitware.com>
" Maintainer: Dimitri Merejkowsky <d.merej@gmail.com>
" Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
" Last Change: 2017 Aug 30
" Last Change: 2017 Sep 24
"
" Licence: The CMake license applies to this file. See
" https://cmake.org/licensing
@@ -14,7 +14,6 @@ if exists("b:did_indent")
endif
let b:did_indent = 1
setlocal et
setlocal indentexpr=CMakeGetIndent(v:lnum)
setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(
@@ -67,19 +66,19 @@ fun! CMakeGetIndent(lnum)
let ind = ind
else
if previous_line =~? cmake_indent_begin_regex
let ind = ind + &sw
let ind = ind + shiftwidth()
endif
if previous_line =~? cmake_indent_open_regex
let ind = ind + &sw
let ind = ind + shiftwidth()
endif
endif
" Subtract
if this_line =~? cmake_indent_end_regex
let ind = ind - &sw
let ind = ind - shiftwidth()
endif
if previous_line =~? cmake_indent_close_regex
let ind = ind - &sw
let ind = ind - shiftwidth()
endif
return ind
+11 -9
View File
@@ -43,12 +43,14 @@ func s:StartDebug(cmd)
let s:startwin = win_getid(winnr())
let s:startsigncolumn = &signcolumn
if exists('g:termdebug_wide') && &columns < g:termdebug_wide
let s:save_columns = &columns
let &columns = g:termdebug_wide
let s:save_columns = 0
if exists('g:termdebug_wide')
if &columns < g:termdebug_wide
let s:save_columns = &columns
let &columns = g:termdebug_wide
endif
let vertical = 1
else
let s:save_columns = 0
let vertical = 0
endif
@@ -175,11 +177,11 @@ func s:InstallCommands()
nnoremap K :Evaluate<CR>
if has('menu')
amenu WinBar.Step :Step<CR>
amenu WinBar.Next :Over<CR>
amenu WinBar.Finish :Finish<CR>
amenu WinBar.Cont :Continue<CR>
amenu WinBar.Eval :Evaluate<CR>
nnoremenu WinBar.Step :Step<CR>
nnoremenu WinBar.Next :Over<CR>
nnoremenu WinBar.Finish :Finish<CR>
nnoremenu WinBar.Cont :Continue<CR>
nnoremenu WinBar.Eval :Evaluate<CR>
endif
endfunc
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -1,7 +1,7 @@
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2016 Jul 28
" Last change: 2017 Sep 20
"
" To use it, copy it to
" for Unix and OS/2: ~/.vimrc
@@ -53,6 +53,8 @@ endif " has("autocmd")
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd matchit
packadd! matchit
endif
+34 -15
View File
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1611" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1050" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="MMPreferenceController">
@@ -14,7 +13,7 @@
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="-3" userLabel="Application"/>
<userDefaultsController representsSharedInstance="YES" id="58" userLabel="Shared Defaults"/>
<customView id="115" userLabel="General">
<rect key="frame" x="0.0" y="0.0" width="483" height="290"/>
@@ -25,7 +24,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Keep MacVim Running" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" selectedItem="960" id="979">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="959">
<items>
<menuItem title="Keep MacVim Running" state="on" id="960"/>
@@ -52,7 +51,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="and set the arglist" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" selectedItem="436" id="978">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="429">
<items>
<menuItem title="with a tab for each file" tag="3" id="430"/>
@@ -181,12 +180,12 @@
</textField>
</subviews>
</customView>
<customView misplaced="YES" id="620" userLabel="Advanced">
<rect key="frame" x="0.0" y="0.0" width="483" height="222"/>
<customView id="620" userLabel="Advanced">
<rect key="frame" x="0.0" y="0.0" width="483" height="318"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="826">
<rect key="frame" x="17" y="74" width="449" height="56"/>
<rect key="frame" x="17" y="170" width="449" height="56"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="993">
<font key="font" metaFont="smallSystem"/>
@@ -196,7 +195,7 @@
</textFieldCell>
</textField>
<button id="817">
<rect key="frame" x="18" y="132" width="133" height="18"/>
<rect key="frame" x="18" y="228" width="133" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Enable Quickstart" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="992">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -208,7 +207,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750" id="815">
<rect key="frame" x="17" y="156" width="449" height="28"/>
<rect key="frame" x="17" y="252" width="449" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="991">
<font key="font" metaFont="smallSystem"/>
@@ -218,7 +217,7 @@
</textFieldCell>
</textField>
<button id="782">
<rect key="frame" x="18" y="186" width="174" height="18"/>
<rect key="frame" x="18" y="282" width="174" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use Core Text renderer" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="990">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -229,7 +228,28 @@
<binding destination="58" name="value" keyPath="values.MMRenderer" id="1000"/>
</connections>
</button>
<textField verticalHuggingPriority="750" misplaced="YES" id="1017">
<textField verticalHuggingPriority="750" id="1001">
<rect key="frame" x="17" y="74" width="444" height="70"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="1004">
<font key="font" metaFont="smallSystem"/>
<string key="title">This option causes marked text to be rendered like normal text which is very convenient when using a complex input method (e.g. Kotoeri). However, it has some known limitations which may be circumvented by disabling this option (e.g. mapping to "dead keys" may not work). Note that without this option the Core Text renderer will not draw marked text at all.</string>
<color key="textColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button id="1013">
<rect key="frame" x="18" y="146" width="174" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Draw marked text inline" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1014">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="58" name="value" keyPath="values.MMUseInlineIm" id="1016"/>
</connections>
</button>
<textField verticalHuggingPriority="750" id="1017">
<rect key="frame" x="17" y="20" width="415" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="1020">
@@ -239,7 +259,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button misplaced="YES" id="1028">
<button id="1028">
<rect key="frame" x="18" y="50" width="388" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Prefer native full-screen support (requires Mac OS X 10.7)" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1029">
@@ -251,7 +271,6 @@
</connections>
</button>
</subviews>
<point key="canvasLocation" x="54.5" y="-249"/>
</customView>
</objects>
</document>
Binary file not shown.
+1 -1
View File
@@ -1255,7 +1255,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>137</string>
<string>138</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
+3
View File
@@ -227,6 +227,9 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
[NSNumber numberWithBool:NO], MMVerticalSplitKey,
[NSNumber numberWithInt:0], MMPreloadCacheSizeKey,
[NSNumber numberWithInt:0], MMLastWindowClosedBehaviorKey,
#ifdef INCLUDE_OLD_IM_CODE
[NSNumber numberWithBool:YES], MMUseInlineImKey,
#endif // INCLUDE_OLD_IM_CODE
[NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey,
[NSNumber numberWithBool:YES], MMNativeFullScreenKey,
[NSNumber numberWithDouble:0.25], MMFullScreenFadeTimeKey,
-13
View File
@@ -2092,8 +2092,6 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
[self setImState:NO];
} else if (BackingPropertiesChangedMsgID == msgid) {
[self redrawScreen];
} else if (RedrawBlockMsgID == msgid) {
[self handleRedrawBlock:data];
} else {
ASLogWarn(@"Unknown message received (msgid=%d)", msgid);
}
@@ -3010,17 +3008,6 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
}
}
- (void)handleRedrawBlock:(NSData *)data
{
const void *bytes = [data bytes];
int row1 = *((int*)bytes); bytes += sizeof(int);
int col1 = *((int*)bytes); bytes += sizeof(int);
int row2 = *((int*)bytes); bytes += sizeof(int);
int col2 = *((int*)bytes);
gui_redraw_block(row1, col1, row2, col2, GUI_MON_NOCLEAR);
}
#ifdef FEAT_BEVAL
- (void)bevalCallback:(id)sender
{
-10
View File
@@ -18,8 +18,6 @@
int maxRows, maxColumns;
NSColor *defaultBackgroundColor;
NSColor *defaultForegroundColor;
int defaultBackgroundHexColor;
int defaultForegroundHexColor;
NSSize cellSize;
NSFont *font;
NSFont *fontWide;
@@ -53,12 +51,6 @@
void *trackingRectUserData_;
NSTrackingRectTag lastToolTipTag_;
NSString* toolTip_;
NSUInteger markedRangeLength;
int markedTextStartRow;
int markedTextStartColumn;
int markedTextEndRow;
int markedTextEndColumn;
}
- (id)initWithFrame:(NSRect)frame;
@@ -95,10 +87,8 @@
- (void)setLigatures:(BOOL)state;
- (void)setThinStrokes:(BOOL)state;
- (void)setImControl:(BOOL)enable;
- (void)setInlineIm:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)checkImState;
- (void)clearMarkedText;
- (BOOL)convertPoint:(NSPoint)point toRow:(int *)row column:(int *)column;
- (NSRect)rectForRow:(int)row column:(int)column numRows:(int)nr
numColumns:(int)nc;
-70
View File
@@ -205,13 +205,6 @@ defaultAdvanceForFont(NSFont *font)
if (defaultBackgroundColor != bgColor) {
[defaultBackgroundColor release];
defaultBackgroundColor = bgColor ? [bgColor retain] : nil;
if (bgColor) {
defaultBackgroundHexColor =
(int)(bgColor.blueComponent * 0xff) |
((int)(bgColor.greenComponent * 0xff) << 8) |
((int)(bgColor.redComponent * 0xff) << 16) |
(0xff << 24);
}
}
// NOTE: The default foreground color isn't actually used for anything, but
@@ -220,13 +213,6 @@ defaultAdvanceForFont(NSFont *font)
if (defaultForegroundColor != fgColor) {
[defaultForegroundColor release];
defaultForegroundColor = fgColor ? [fgColor retain] : nil;
if (fgColor) {
defaultForegroundHexColor =
(int)(fgColor.blueComponent * 0xff) |
((int)(fgColor.greenComponent * 0xff) << 8) |
((int)(fgColor.redComponent * 0xff) << 16) |
(0xff << 24);
}
}
}
@@ -439,11 +425,6 @@ defaultAdvanceForFont(NSFont *font)
[helper setImControl:enable];
}
- (void)setInlineIm:(BOOL)enable
{
[helper setInlineIm:enable];
}
- (void)activateIm:(BOOL)enable
{
[helper activateIm:enable];
@@ -513,23 +494,6 @@ defaultAdvanceForFont(NSFont *font)
[helper setMarkedText:text selectedRange:range];
}
- (void)clearMarkedText
{
if (![helper inlineIm]) {
[self redrawMarkedTextBlock];
}
}
- (void)redrawMarkedTextBlock
{
NSMutableData *data = [NSMutableData data];
[data appendBytes:&markedTextStartRow length:sizeof(int)];
[data appendBytes:&markedTextStartColumn length:sizeof(int)];
[data appendBytes:&markedTextEndRow length:sizeof(int)];
[data appendBytes:&markedTextEndColumn length:sizeof(int)];
[[self vimController] sendMessage:RedrawBlockMsgID data:data];
}
- (void)unmarkText
{
[helper unmarkText];
@@ -683,40 +647,6 @@ defaultAdvanceForFont(NSFont *font)
[drawData removeAllObjects];
}
if ([helper hasMarkedText] && ![helper inlineIm]) {
NSString *text = [[helper markedText] string];
// Draw marked text
CFStringRef sref = (__bridge CFStringRef)text;
CFIndex unilength = CFStringGetLength(sref);
const UniChar *unichars = CFStringGetCharactersPtr(sref);
UniChar *buffer = NULL;
if (unichars == NULL) {
buffer = malloc(unilength * sizeof(UniChar));
CFStringGetCharacters(sref, CFRangeMake(0, unilength), buffer);
unichars = buffer;
}
int row = [helper preEditRow];
int col = [helper preEditColumn];
markedTextStartRow = row;
markedTextEndRow = row;
markedTextStartColumn = col;
markedTextEndColumn = col + unilength * 2;
[self drawString:unichars length:unilength
atRow:row column:col cells:(unilength * 2)
withFlags:(DRAW_WIDE|DRAW_UNDERL)
foregroundColor:defaultForegroundHexColor
backgroundColor:defaultBackgroundHexColor
specialColor:defaultForegroundHexColor];
if (buffer) {
free(buffer);
buffer = NULL;
}
}
}
- (void)performBatchDrawWithData:(NSData *)data
-2
View File
@@ -37,7 +37,6 @@
- (void)setLigatures:(BOOL)ligatures;
- (void)setThinStrokes:(BOOL)thinStrokes;
- (void)setImControl:(BOOL)enable;
- (void)setInlineIm:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)checkImState;
@@ -75,5 +74,4 @@
- (void)deleteSign:(NSString *)signName;
- (void)setToolTipAtMousePoint:(NSString *)string;
- (void)setCGLayerEnabled:(BOOL)enabled;
- (void)clearMarkedText;
@end
+6 -11
View File
@@ -322,11 +322,6 @@
[helper setImControl:enable];
}
- (void)setInlineIm:(BOOL)enable
{
[helper setInlineIm:enable];
}
- (void)activateIm:(BOOL)enable
{
[helper activateIm:enable];
@@ -562,7 +557,8 @@
numInvertRects = 0;
}
if ([self hasMarkedText] && ![helper inlineIm]) {
#ifdef INCLUDE_OLD_IM_CODE
if ([self hasMarkedText] && ![helper useInlineIm]) {
shouldDrawInsertionPoint = YES;
MMTextStorage *ts = (MMTextStorage*)[self textStorage];
NSSize inset = [self textContainerInset];
@@ -620,6 +616,7 @@
}
}
}
#endif // INCLUDE_OLD_IM_CODE
if (shouldDrawInsertionPoint) {
MMTextStorage *ts = (MMTextStorage*)[self textStorage];
@@ -629,8 +626,9 @@
ipRect.origin.x += [self textContainerOrigin].x;
ipRect.origin.y += [self textContainerOrigin].y;
#ifdef INCLUDE_OLD_IM_CODE
// Draw insertion point inside marked text.
if ([self hasMarkedText] && ![helper inlineIm]) {
if ([self hasMarkedText] && ![helper useInlineIm]) {
NSFont *theFont = [[self markedTextAttributes]
valueForKey:NSFontAttributeName];
if (theFont == [ts font])
@@ -642,6 +640,7 @@
([helper imRange].location +
[helper imRange].length);
}
#endif // INCLUDE_OLD_IM_CODE
if (MMInsertionPointHorizontal == insertionPointShape) {
int frac = ([ts cellSize].height * insertionPointFraction + 99)/100;
@@ -731,10 +730,6 @@
[helper unmarkText];
}
- (void)clearMarkedText
{
}
- (NSRect)firstRectForCharacterRange:(NSRange)range
{
return [helper firstRectForCharacterRange:range];
+1 -3
View File
@@ -45,7 +45,6 @@
NSMutableAttributedString *markedText;
int preEditRow;
int preEditColumn;
BOOL inlineIm;
BOOL imControl;
BOOL imState;
TISInputSourceRef lastImSource;
@@ -91,8 +90,7 @@
- (NSRect)firstRectForCharacterRange:(NSRange)range;
- (void)setImControl:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)setInlineIm:(BOOL)enable;
- (BOOL)inlineIm;
- (BOOL)useInlineIm;
- (void)checkImState;
@end
+11 -11
View File
@@ -213,7 +213,6 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
// called the input manager expects the marked text to be unmarked
// automatically, hence the explicit unmarkText: call here.
[self unmarkText];
[textView clearMarkedText];
}
// NOTE: 'string' is either an NSString or an NSAttributedString. Since we
@@ -318,7 +317,6 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
// marked text moves outside the view as a result of scrolling.
[self sendMarkedText:nil position:0];
[self unmarkText];
[textView clearMarkedText];
[[NSTextInputContext currentInputContext] discardMarkedText];
}
@@ -618,7 +616,7 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
ASLogDebug(@"text='%@' range=%@", text, NSStringFromRange(range));
[self unmarkText];
if (inlineIm) {
if ([self useInlineIm]) {
if ([text isKindOfClass:[NSAttributedString class]])
text = [text string];
@@ -631,6 +629,7 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
return;
}
#ifdef INCLUDE_OLD_IM_CODE
if (!(text && [text length] > 0))
return;
@@ -670,6 +669,7 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
}
[textView setNeedsDisplay:YES];
#endif // INCLUDE_OLD_IM_CODE
}
- (void)unmarkText
@@ -813,14 +813,14 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
}
}
- (void)setInlineIm:(BOOL)enable
- (BOOL)useInlineIm
{
inlineIm = enable;
}
- (BOOL)inlineIm
{
return inlineIm;
#ifdef INCLUDE_OLD_IM_CODE
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
return [ud boolForKey:MMUseInlineImKey];
#else
return YES;
#endif // INCLUDE_OLD_IM_CODE
}
- (void)checkImState
@@ -1064,7 +1064,7 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
- (void)sendMarkedText:(NSString *)text position:(int32_t)pos
{
if (!inlineIm)
if (![self useInlineIm])
return;
NSMutableData *data = [NSMutableData data];
-4
View File
@@ -833,10 +833,6 @@ static BOOL isUnsafeMessage(int msgid);
[[[windowController vimView] textView] activateIm:YES];
} else if (DeactivateKeyScriptMsgID == msgid) {
[[[windowController vimView] textView] activateIm:NO];
} else if (EnableInlineImMsgID == msgid) {
[[[windowController vimView] textView] setInlineIm:YES];
} else if (DisableInlineImMsgID == msgid) {
[[[windowController vimView] textView] setInlineIm:NO];
} else if (EnableImControlMsgID == msgid) {
[[[windowController vimView] textView] setImControl:YES];
} else if (DisableImControlMsgID == msgid) {
-3
View File
@@ -251,9 +251,6 @@ enum {
DisableLigaturesMsgID,
EnableThinStrokesMsgID,
DisableThinStrokesMsgID,
EnableInlineImMsgID,
DisableInlineImMsgID,
RedrawBlockMsgID,
LastMsgID // NOTE: MUST BE LAST MESSAGE IN ENUM!
};
-3
View File
@@ -105,9 +105,6 @@ char *MessageStrings[] =
"DisableLigaturesMsgID",
"EnableThinStrokesMsgID",
"DisableThinStrokesMsgID",
"EnableInlineImMsgID",
"DisableInlineImMsgID",
"RedrawBlockMsgID",
"END OF MESSAGE IDs" // NOTE: Must be last!
};
+7
View File
@@ -13,6 +13,10 @@
#import "MacVim.h"
// TODO: Remove this when the inline IM code has been tested
#define INCLUDE_OLD_IM_CODE
// NSUserDefaults keys
extern NSString *MMTabMinWidthKey;
extern NSString *MMTabMaxWidthKey;
@@ -41,6 +45,9 @@ extern NSString *MMOpenLayoutKey;
extern NSString *MMVerticalSplitKey;
extern NSString *MMPreloadCacheSizeKey;
extern NSString *MMLastWindowClosedBehaviorKey;
#ifdef INCLUDE_OLD_IM_CODE
extern NSString *MMUseInlineImKey;
#endif // INCLUDE_OLD_IM_CODE
extern NSString *MMSuppressTerminationAlertKey;
extern NSString *MMNativeFullScreenKey;
extern NSString *MMUseMouseTimeKey;
+3
View File
@@ -41,6 +41,9 @@ NSString *MMOpenLayoutKey = @"MMOpenLayout";
NSString *MMVerticalSplitKey = @"MMVerticalSplit";
NSString *MMPreloadCacheSizeKey = @"MMPreloadCacheSize";
NSString *MMLastWindowClosedBehaviorKey = @"MMLastWindowClosedBehavior";
#ifdef INCLUDE_OLD_IM_CODE
NSString *MMUseInlineImKey = @"MMUseInlineIm";
#endif // INCLUDE_OLD_IM_CODE
NSString *MMSuppressTerminationAlertKey = @"MMSuppressTerminationAlert";
NSString *MMNativeFullScreenKey = @"MMNativeFullScreen";
NSString *MMUseMouseTimeKey = @"MMUseMouseTime";
-11
View File
@@ -264,8 +264,6 @@ gui_mch_init(void)
gui_mch_adjust_charheight();
gui_mch_adjust_charwidth();
gui_macvim_set_imstyle(p_imst);
if (!MMNoMRU && GARGCOUNT > 0) {
// Add files passed on command line to MRU.
NSMutableArray *filenames = [NSMutableArray array];
@@ -1333,15 +1331,6 @@ im_get_status(void)
void
gui_macvim_set_imstyle(long imstyle)
{
int msgid = imstyle == IM_ON_THE_SPOT ?
EnableInlineImMsgID : DisableInlineImMsgID;
[[MMBackend sharedInstance] queueMessage:msgid properties:nil];
}
// -- Find & Replace dialog -------------------------------------------------
+2
View File
@@ -50,3 +50,5 @@ CROSS_COMPILE = i686-pc-mingw32-
# Do not change this.
UNDER_CYGWIN = yes
include Make_cyg_ming.mak
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+25 -22
View File
@@ -913,60 +913,58 @@ endif
$(MAKE) -C xxd -f Make_ming.mak clean
###########################################################################
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
gui.h
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
spell.h structs.h term.h $(NBDEBUG_INCL)
GUI_INCL = gui.h gui_beval.h
CUI_INCL = iscygpty.h
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
$(OUTDIR)/if_python.o: if_python.c if_py_both.h $(INCL)
$(CC) -c $(CFLAGS) $(PYTHONINC) $(PYTHON_HOME_DEF) $< -o $@
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
$(OUTDIR)/if_python3.o: if_python3.c if_py_both.h $(INCL)
$(CC) -c $(CFLAGS) $(PYTHON3INC) $(PYTHON3_HOME_DEF) $< -o $@
$(OUTDIR)/%.o : %.c $(INCL)
$(CC) -c $(CFLAGS) $< -o $@
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
--input-format=rc --output-format=coff -i vim.rc -o $@
$(OUTDIR):
$(MKDIR) $(OUTDIR)
$(OUTDIR)/channel.o: channel.c $(INCL)
$(CC) -c $(CFLAGS) channel.c -o $(OUTDIR)/channel.o
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
$(CC) -c $(CFLAGS) $(CXXFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL)
$(OUTDIR)/gui.o: gui.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui.c -o $(OUTDIR)/gui.o
$(OUTDIR)/gui_beval.o: gui_beval.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui_beval.c -o $(OUTDIR)/gui_beval.o
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) $(MZSCHEME_INCL) $(MZ_EXTRA_DEP)
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
mzscheme_base.c:
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
# Remove -D__IID_DEFINED__ for newer versions of the w32api
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) if_ole.h
$(CC) $(CFLAGS) $(CXXFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
if_perl.c: if_perl.xs typemap
if_perl.c: if_perl.xs typemap
$(XSUBPP) -prototypes -typemap \
$(PERLTYPEMAP) if_perl.xs -output $@
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
ifeq (16, $(RUBY))
$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
endif
@@ -974,13 +972,16 @@ endif
$(OUTDIR)/iscygpty.o: iscygpty.c $(CUI_INCL)
$(CC) -c $(CFLAGS) iscygpty.c -o $(OUTDIR)/iscygpty.o -U_WIN32_WINNT -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
$(CC) -c $(CFLAGS) main.c -o $(OUTDIR)/main.o
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(OUTDIR)/os_win32.o: os_win32.c $(INCL) $(MZSCHEME_INCL)
$(CC) -c $(CFLAGS) os_win32.c -o $(OUTDIR)/os_win32.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
$(OUTDIR)/terminal.o: terminal.c $(INCL) $(TERM_DEPS)
@@ -1042,3 +1043,5 @@ else
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
endif
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+2
View File
@@ -47,3 +47,5 @@
# Do not change this.
UNDER_CYGWIN = no
include Make_cyg_ming.mak
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+10 -20
View File
@@ -673,9 +673,9 @@ CFLAGS = $(CFLAGS) /Zl /MTd
! endif
!endif # DEBUG
INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
proto.h option.h structs.h term.h $(CSCOPE_INCL) \
$(NBDEBUG_INCL)
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
spell.h structs.h term.h $(NBDEBUG_INCL)
OBJ = \
$(OUTDIR)\arabic.obj \
@@ -774,18 +774,7 @@ RCFLAGS = $(RCFLAGS) -DFEAT_GUI_W32
VIM = g$(VIM)
GUI_INCL = \
gui.h \
regexp.h \
ascii.h \
ex_cmds.h \
farsi.h \
feature.h \
globals.h \
gui_beval.h \
keymap.h \
macros.h \
option.h \
os_dos.h \
os_win32.h
gui_beval.h
GUI_OBJ = \
$(OUTDIR)\gui.obj \
$(OUTDIR)\gui_beval.obj \
@@ -979,6 +968,7 @@ MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib" \
MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
# increase stack size
MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608
MZSCHEME_INCL = if_mzsch.h
!endif
# Perl interface
@@ -1318,9 +1308,9 @@ $(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c $(INCL)
$(OUTDIR)/ex_cmds2.obj: $(OUTDIR) ex_cmds2.c $(INCL)
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL) ex_cmds.h
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL)
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) ex_cmds.h
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL)
$(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL)
@@ -1344,7 +1334,7 @@ $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c $(INCL) $(GUI_INCL)
$(OUTDIR)/gui_dwrite.obj: $(OUTDIR) gui_dwrite.cpp $(INCL) $(GUI_INCL)
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL)
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL) if_cscope.h
$(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL)
$(CC) $(CFLAGS_OUTDIR) $(LUA_INC) if_lua.c
@@ -1359,7 +1349,7 @@ $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
$(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
$(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perlsfio.c
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP)
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(MZSCHEME_INCL) $(INCL) $(MZSCHEME_EXTRA_DEP)
$(CC) $(CFLAGS_OUTDIR) if_mzsch.c \
-DMZSCHEME_COLLECTS="\"$(MZSCHEME_COLLECTS:\=\\)\""
@@ -1423,7 +1413,7 @@ $(OUTDIR)/terminal.obj: $(OUTDIR) terminal.c $(INCL) $(TERM_DEPS)
$(OUTDIR)/winclip.obj: $(OUTDIR) winclip.c $(INCL)
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) os_win32.h
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) $(MZSCHEME_INCL)
$(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL)
+3 -3
View File
@@ -2120,9 +2120,9 @@ test1 \
test3 test4 test5 test7 test8 \
test11 test12 test14 test15 test17 test19 \
test20 test25 test28 test29 \
test30 test31 test32 test33 test34 test36 test37 test38 test39 \
test40 test41 test42 test43 test44 test45 test48 test49 \
test50 test52 test53 test54 test55 test56 test57 test59 \
test30 test31 test32 test34 test36 test37 test38 test39 \
test40 test42 test44 test45 test48 test49 \
test50 test52 test54 test55 test59 \
test60 test64 test66 test68 test69 \
test70 test72 test73 test77 test78 test79 \
test83 test85 test86 test87 test88 \
+5 -3
View File
@@ -5755,10 +5755,12 @@ $as_echo "OK" >&6; }
done
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[^ ]*//' \
-e 's/-fdebug-prefix-map[^ ]*//g' \
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
-e 's/-pipe //' \
-e 's/-W[^ ]*//g' \
-e 's/-D_FORTIFY_SOURCE=.//g'`
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
-e 's/-bE:perl.exp//' -e 's/-lc //'`
@@ -5804,7 +5806,7 @@ rm -f core conftest.err conftest.$ac_objext \
LDFLAGS=$ldflags_save
if test $perl_ok = yes; then
if test "X$perlcppflags" != "X"; then
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[^ ]*//'`
PERL_CFLAGS=$perlcppflags
fi
if test "X$perlldflags" != "X"; then
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
+7 -7
View File
@@ -3920,7 +3920,6 @@ build_stl_str_hl(
struct stl_hlrec *sp;
int save_must_redraw = must_redraw;
int save_redr_type = curwin->w_redr_type;
int save_highlight_shcnaged = need_highlight_changed;
#ifdef FEAT_EVAL
/*
@@ -4693,12 +4692,13 @@ build_stl_str_hl(
sp->userhl = 0;
}
/* We do not want redrawing a stausline, ruler, title, etc. to trigger
* another redraw, it may cause an endless loop. This happens when a
* statusline changes a highlight group. */
must_redraw = save_must_redraw;
curwin->w_redr_type = save_redr_type;
need_highlight_changed = save_highlight_shcnaged;
/* When inside update_screen we do not want redrawing a stausline, ruler,
* title, etc. to trigger another redraw, it may cause an endless loop. */
if (updating_screen)
{
must_redraw = save_must_redraw;
curwin->w_redr_type = save_redr_type;
}
return width;
}
+55 -9
View File
@@ -3985,6 +3985,8 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
free_job_options(&opt);
}
# define KEEP_OPEN_TIME 20 /* msec */
# if (defined(UNIX) && !defined(HAVE_SELECT)) || defined(PROTO)
/*
* Add open channels to the poll struct.
@@ -3992,7 +3994,7 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
* The type of "fds" is hidden to avoid problems with the function proto.
*/
int
channel_poll_setup(int nfd_in, void *fds_in)
channel_poll_setup(int nfd_in, void *fds_in, int *towait)
{
int nfd = nfd_in;
channel_T *channel;
@@ -4007,10 +4009,21 @@ channel_poll_setup(int nfd_in, void *fds_in)
if (ch_part->ch_fd != INVALID_FD)
{
ch_part->ch_poll_idx = nfd;
fds[nfd].fd = ch_part->ch_fd;
fds[nfd].events = POLLIN;
nfd++;
if (channel->ch_keep_open)
{
/* For unknown reason poll() returns immediately for a
* keep-open channel. Instead of adding it to the fds add
* a short timeout and check, like polling. */
if (*towait < 0 || *towait > KEEP_OPEN_TIME)
*towait = KEEP_OPEN_TIME;
}
else
{
ch_part->ch_poll_idx = nfd;
fds[nfd].fd = ch_part->ch_fd;
fds[nfd].events = POLLIN;
nfd++;
}
}
else
channel->ch_part[part].ch_poll_idx = -1;
@@ -4046,6 +4059,12 @@ channel_poll_check(int ret_in, void *fds_in)
channel_read(channel, part, "channel_poll_check");
--ret;
}
else if (channel->ch_part[part].ch_fd != INVALID_FD
&& channel->ch_keep_open)
{
/* polling a keep-open channel */
channel_read(channel, part, "channel_poll_check_keep_open");
}
}
in_part = &channel->ch_part[PART_IN];
@@ -4062,11 +4081,17 @@ channel_poll_check(int ret_in, void *fds_in)
# endif /* UNIX && !HAVE_SELECT */
# if (!defined(WIN32) && defined(HAVE_SELECT)) || defined(PROTO)
/*
* The "fd_set" type is hidden to avoid problems with the function proto.
*/
int
channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
channel_select_setup(
int maxfd_in,
void *rfds_in,
void *wfds_in,
struct timeval *tv,
struct timeval **tvp)
{
int maxfd = maxfd_in;
channel_T *channel;
@@ -4082,9 +4107,25 @@ channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
if (fd != INVALID_FD)
{
FD_SET((int)fd, rfds);
if (maxfd < (int)fd)
maxfd = (int)fd;
if (channel->ch_keep_open)
{
/* For unknown reason select() returns immediately for a
* keep-open channel. Instead of adding it to the rfds add
* a short timeout and check, like polling. */
if (*tvp == NULL || tv->tv_sec > 0
|| tv->tv_usec > KEEP_OPEN_TIME * 1000)
{
*tvp = tv;
tv->tv_sec = 0;
tv->tv_usec = KEEP_OPEN_TIME * 1000;
}
}
else
{
FD_SET((int)fd, rfds);
if (maxfd < (int)fd)
maxfd = (int)fd;
}
}
}
}
@@ -4119,6 +4160,11 @@ channel_select_check(int ret_in, void *rfds_in, void *wfds_in)
FD_CLR(fd, rfds);
--ret;
}
else if (fd != INVALID_FD && channel->ch_keep_open)
{
/* polling a keep-open channel */
channel_read(channel, part, "channel_select_check_keep_open");
}
}
in_part = &channel->ch_part[PART_IN];
+10 -10
View File
@@ -1100,7 +1100,7 @@ win_lbr_chartabsize(
*/
numberextra = win_col_off(wp);
col2 = col;
colmax = (colnr_T)(W_WIDTH(wp) - numberextra - col_adj);
colmax = (colnr_T)(wp->w_width - numberextra - col_adj);
if (col >= colmax)
{
colmax += col_adj;
@@ -1151,10 +1151,10 @@ win_lbr_chartabsize(
numberextra = numberwidth;
col += numberextra + mb_added;
if (col >= (colnr_T)W_WIDTH(wp))
if (col >= (colnr_T)wp->w_width)
{
col -= W_WIDTH(wp);
numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp));
col -= wp->w_width;
numberextra = wp->w_width - (numberextra - win_col_off2(wp));
if (col >= numberextra && numberextra > 0)
col %= numberextra;
if (*p_sbr != NUL)
@@ -1170,18 +1170,18 @@ win_lbr_chartabsize(
numberwidth -= win_col_off2(wp);
}
if (col == 0 || col + size + sbrlen > (colnr_T)W_WIDTH(wp))
if (col == 0 || col + size + sbrlen > (colnr_T)wp->w_width)
{
added = 0;
if (*p_sbr != NUL)
{
if (size + sbrlen + numberwidth > (colnr_T)W_WIDTH(wp))
if (size + sbrlen + numberwidth > (colnr_T)wp->w_width)
{
/* calculate effective window width */
int width = (colnr_T)W_WIDTH(wp) - sbrlen - numberwidth;
int prev_width = col ? ((colnr_T)W_WIDTH(wp) - (sbrlen + col)) : 0;
int width = (colnr_T)wp->w_width - sbrlen - numberwidth;
int prev_width = col ? ((colnr_T)wp->w_width - (sbrlen + col)) : 0;
if (width == 0)
width = (colnr_T)W_WIDTH(wp);
width = (colnr_T)wp->w_width;
added += ((size - prev_width) / width) * vim_strsize(p_sbr);
if ((size - prev_width) % width)
/* wrapped, add another length of 'sbr' */
@@ -1248,7 +1248,7 @@ in_win_border(win_T *wp, colnr_T vcol)
if (wp->w_width == 0) /* there is no border */
return FALSE;
width1 = W_WIDTH(wp) - win_col_off(wp);
width1 = wp->w_width - win_col_off(wp);
if ((int)vcol < width1 - 1)
return FALSE;
if ((int)vcol == width1 - 1)
+5 -3
View File
@@ -1027,10 +1027,13 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
dnl Remove "-fno-something", it breaks using cproto.
dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
dnl Remove "FORTIFY_SOURCE", it will be defined twice.
dnl remove -pipe and -Wxxx, it confuses cproto
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
-e 's/-fdebug-prefix-map[[^ ]]*//g' \
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
-e 's/-pipe //' \
-e 's/-W[[^ ]]*//g' \
-e 's/-D_FORTIFY_SOURCE=.//g'`
dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
@@ -1066,8 +1069,7 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
LDFLAGS=$ldflags_save
if test $perl_ok = yes; then
if test "X$perlcppflags" != "X"; then
dnl remove -pipe and -Wxxx, it confuses cproto
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
PERL_CFLAGS=$perlcppflags
fi
if test "X$perlldflags" != "X"; then
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
+8 -8
View File
@@ -1785,14 +1785,14 @@ edit_putchar(int c, int highlight)
else
attr = 0;
pc_row = W_WINROW(curwin) + curwin->w_wrow;
pc_col = W_WINCOL(curwin);
pc_col = curwin->w_wincol;
#if defined(FEAT_RIGHTLEFT) || defined(FEAT_MBYTE)
pc_status = PC_STATUS_UNSET;
#endif
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
{
pc_col += W_WIDTH(curwin) - 1 - curwin->w_wcol;
pc_col += curwin->w_width - 1 - curwin->w_wcol;
# ifdef FEAT_MBYTE
if (has_mbyte)
{
@@ -1874,7 +1874,7 @@ display_dollar(colnr_T col)
}
#endif
curs_columns(FALSE); /* recompute w_wrow and w_wcol */
if (curwin->w_wcol < W_WIDTH(curwin))
if (curwin->w_wcol < curwin->w_width)
{
edit_putchar('$', FALSE);
dollar_vcol = curwin->w_virtcol;
@@ -6834,7 +6834,7 @@ check_auto_format(
/*
* Find out textwidth to be used for formatting:
* if 'textwidth' option is set, use it
* else if 'wrapmargin' option is set, use W_WIDTH(curwin) - 'wrapmargin'
* else if 'wrapmargin' option is set, use curwin->w_width - 'wrapmargin'
* if invalid value, use 0.
* Set default to window width (maximum 79) for "gq" operator.
*/
@@ -6849,7 +6849,7 @@ comp_textwidth(
{
/* The width is the window width minus 'wrapmargin' minus all the
* things that add to the margin. */
textwidth = W_WIDTH(curwin) - curbuf->b_p_wm;
textwidth = curwin->w_width - curbuf->b_p_wm;
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
textwidth -= 1;
@@ -6868,7 +6868,7 @@ comp_textwidth(
textwidth = 0;
if (ff && textwidth == 0)
{
textwidth = W_WIDTH(curwin) - 1;
textwidth = curwin->w_width - 1;
if (textwidth > 79)
textwidth = 79;
}
@@ -8216,7 +8216,7 @@ in_cinkeys(
{
/* "0=word": Check if there are only blanks before the
* word. */
if (getwhitecols(line) !=
if (getwhitecols_curline() !=
(int)(curwin->w_cursor.col - (p - look)))
match = FALSE;
}
@@ -9480,7 +9480,7 @@ ins_mousescroll(int dir)
step = scroll_wheel_force;
# endif
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
step = W_WIDTH(curwin);
step = curwin->w_width;
val = curwin->w_leftcol + (dir == MSCR_RIGHT ? -step : step);
if (val < 0)
val = 0;
+3
View File
@@ -1704,7 +1704,10 @@ ex_let_one(
&stringval, opt_flags);
if ((opt_type == 1 && *op == '.')
|| (opt_type == 0 && *op != '.'))
{
EMSG2(_(e_letwrong), op);
s = NULL; /* don't set the value */
}
else
{
if (opt_type == 1) /* number */
+3 -3
View File
@@ -5190,8 +5190,8 @@ f_gettabvar(typval_T *argvars, typval_T *rettv)
/* Set tp to be our tabpage, temporarily. Also set the window to the
* first window in the tabpage, otherwise the window is not valid. */
if (switch_win(&oldcurwin, &oldtabpage,
tp->tp_firstwin == NULL ? firstwin : tp->tp_firstwin, tp, TRUE)
== OK)
tp == curtab || tp->tp_firstwin == NULL ? firstwin
: tp->tp_firstwin, tp, TRUE) == OK)
{
/* look up the variable */
/* Let gettabvar({nr}, "") return the "t:" dictionary. */
@@ -13266,7 +13266,7 @@ f_winrestview(typval_T *argvars, typval_T *rettv UNUSED)
check_cursor();
win_new_height(curwin, curwin->w_height);
win_new_width(curwin, W_WIDTH(curwin));
win_new_width(curwin, curwin->w_width);
changed_window_setting();
if (curwin->w_topline <= 0)
+1 -1
View File
@@ -177,7 +177,7 @@ ex_align(exarg_T *eap)
if (width <= 0)
width = curbuf->b_p_tw;
if (width == 0 && curbuf->b_p_wm > 0)
width = W_WIDTH(curwin) - curbuf->b_p_wm;
width = curwin->w_width - curbuf->b_p_wm;
if (width <= 0)
width = 80;
}
+58 -35
View File
@@ -8504,7 +8504,7 @@ ex_resize(exarg_T *eap)
if (cmdmod.split & WSP_VERT)
{
if (*eap->arg == '-' || *eap->arg == '+')
n += W_WIDTH(curwin);
n += curwin->w_width;
else if (n == 0 && eap->arg[0] == NUL) /* default is very wide */
n = 9999;
win_setwidth_win((int)n, wp);
@@ -9130,7 +9130,7 @@ ex_sleep(exarg_T *eap)
{
n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled;
if (n >= 0)
windgoto((int)n, W_WINCOL(curwin) + curwin->w_wcol);
windgoto((int)n, curwin->w_wincol + curwin->w_wcol);
}
len = eap->line2;
@@ -10133,20 +10133,62 @@ update_topline_cursor(void)
update_curswant();
}
/*
* Save the current State and go to Normal mode.
* Return TRUE if the typeahead could be saved.
*/
int
save_current_state(save_state_T *sst)
{
sst->save_msg_scroll = msg_scroll;
sst->save_restart_edit = restart_edit;
sst->save_msg_didout = msg_didout;
sst->save_State = State;
sst->save_insertmode = p_im;
sst->save_finish_op = finish_op;
sst->save_opcount = opcount;
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
restart_edit = 0; /* don't go to Insert mode */
p_im = FALSE; /* don't use 'insertmode' */
/*
* Save the current typeahead. This is required to allow using ":normal"
* from an event handler and makes sure we don't hang when the argument
* ends with half a command.
*/
save_typeahead(&sst->tabuf);
return sst->tabuf.typebuf_valid;
}
void
restore_current_state(save_state_T *sst)
{
/* Restore the previous typeahead. */
restore_typeahead(&sst->tabuf);
msg_scroll = sst->save_msg_scroll;
restart_edit = sst->save_restart_edit;
p_im = sst->save_insertmode;
finish_op = sst->save_finish_op;
opcount = sst->save_opcount;
msg_didout |= sst->save_msg_didout; /* don't reset msg_didout now */
/* Restore the state (needed when called from a function executed for
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
State = sst->save_State;
#ifdef CURSOR_SHAPE
ui_cursor_shape(); /* may show different cursor shape */
#endif
}
/*
* ":normal[!] {commands}": Execute normal mode commands.
*/
void
ex_normal(exarg_T *eap)
{
int save_msg_scroll = msg_scroll;
int save_restart_edit = restart_edit;
int save_msg_didout = msg_didout;
int save_State = State;
tasave_T tabuf;
int save_insertmode = p_im;
int save_finish_op = finish_op;
int save_opcount = opcount;
save_state_T save_state;
#ifdef FEAT_MBYTE
char_u *arg = NULL;
int l;
@@ -10163,11 +10205,6 @@ ex_normal(exarg_T *eap)
EMSG(_("E192: Recursive use of :normal too deep"));
return;
}
++ex_normal_busy;
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
restart_edit = 0; /* don't go to Insert mode */
p_im = FALSE; /* don't use 'insertmode' */
#ifdef FEAT_MBYTE
/*
@@ -10233,13 +10270,8 @@ ex_normal(exarg_T *eap)
}
#endif
/*
* Save the current typeahead. This is required to allow using ":normal"
* from an event handler and makes sure we don't hang when the argument
* ends with half a command.
*/
save_typeahead(&tabuf);
if (tabuf.typebuf_valid)
++ex_normal_busy;
if (save_current_state(&save_state))
{
/*
* Repeat the :normal command for each line in the range. When no
@@ -10267,20 +10299,8 @@ ex_normal(exarg_T *eap)
/* Might not return to the main loop when in an event handler. */
update_topline_cursor();
/* Restore the previous typeahead. */
restore_typeahead(&tabuf);
restore_current_state(&save_state);
--ex_normal_busy;
msg_scroll = save_msg_scroll;
restart_edit = save_restart_edit;
p_im = save_insertmode;
finish_op = save_finish_op;
opcount = save_opcount;
msg_didout |= save_msg_didout; /* don't reset msg_didout now */
/* Restore the state (needed when called from a function executed for
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
State = save_State;
#ifdef FEAT_MOUSE
setmouse();
#endif
@@ -10301,6 +10321,9 @@ ex_startinsert(exarg_T *eap)
{
if (eap->forceit)
{
/* cursor line can be zero on startup */
if (!curwin->w_cursor.lnum)
curwin->w_cursor.lnum = 1;
coladvance((colnr_T)MAXCOL);
curwin->w_curswant = MAXCOL;
curwin->w_set_curswant = FALSE;
+1 -1
View File
@@ -3449,7 +3449,7 @@ compute_cmdrow(void)
cmdline_row = Rows - 1;
else
cmdline_row = W_WINROW(lastwin) + lastwin->w_height
+ W_STATUS_HEIGHT(lastwin);
+ lastwin->w_status_height;
}
static void
+3 -3
View File
@@ -2666,8 +2666,8 @@ vgetorpeek(int advance)
++col;
}
curwin->w_wrow = curwin->w_cline_row
+ curwin->w_wcol / W_WIDTH(curwin);
curwin->w_wcol %= W_WIDTH(curwin);
+ curwin->w_wcol / curwin->w_width;
curwin->w_wcol %= curwin->w_width;
curwin->w_wcol += curwin_col_off();
#ifdef FEAT_MBYTE
col = 0; /* no correction needed */
@@ -2684,7 +2684,7 @@ vgetorpeek(int advance)
else if (curwin->w_p_wrap && curwin->w_wrow)
{
--curwin->w_wrow;
curwin->w_wcol = W_WIDTH(curwin) - 1;
curwin->w_wcol = curwin->w_width - 1;
#ifdef FEAT_MBYTE
col = curwin->w_cursor.col - 1;
#endif
+3
View File
@@ -380,6 +380,9 @@ EXTERN int cterm_normal_bg_color INIT(= 0);
EXTERN guicolor_T cterm_normal_fg_gui_color INIT(= INVALCOLOR);
EXTERN guicolor_T cterm_normal_bg_gui_color INIT(= INVALCOLOR);
#endif
#ifdef FEAT_TERMRESPONSE
EXTERN int is_mac_terminal INIT(= FALSE); /* recognized Terminal.app */
#endif
#ifdef FEAT_AUTOCMD
EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */
+5 -5
View File
@@ -4613,14 +4613,14 @@ gui_update_horiz_scrollbar(int force)
return;
}
size = W_WIDTH(curwin);
size = curwin->w_width;
if (curwin->w_p_wrap)
{
value = 0;
#ifdef SCROLL_PAST_END
max = 0;
#else
max = W_WIDTH(curwin) - 1;
max = curwin->w_width - 1;
#endif
}
else
@@ -4640,7 +4640,7 @@ gui_update_horiz_scrollbar(int force)
#endif
#ifndef SCROLL_PAST_END
max += W_WIDTH(curwin) - 1;
max += curwin->w_width - 1;
#endif
/* The line number isn't scrolled, thus there is less space when
* 'number' or 'relativenumber' is set (also for 'foldcolumn'). */
@@ -4968,10 +4968,10 @@ xy2win(int x UNUSED, int y UNUSED)
}
else if (row > wp->w_height) /* below status line */
update_mouseshape(SHAPE_IDX_CLINE);
else if (!(State & CMDLINE) && W_VSEP_WIDTH(wp) > 0 && col == wp->w_width
else if (!(State & CMDLINE) && wp->w_vsep_width > 0 && col == wp->w_width
&& (row != wp->w_height || !stl_connected(wp)) && msg_scrolled == 0)
update_mouseshape(SHAPE_IDX_VSEP);
else if (!(State & CMDLINE) && W_STATUS_HEIGHT(wp) > 0
else if (!(State & CMDLINE) && wp->w_status_height > 0
&& row == wp->w_height && msg_scrolled == 0)
update_mouseshape(SHAPE_IDX_STATUS);
else
+1 -1
View File
@@ -338,7 +338,7 @@ get_beval_info(
row = Y_2_ROW(beval->y);
col = X_2_COL(beval->x);
wp = mouse_find_win(&row, &col);
if (wp != NULL && row < wp->w_height && col < W_WIDTH(wp))
if (wp != NULL && row < wp->w_height && col < wp->w_width)
{
/* Found a window and the cursor is in the text. Now find the line
* number. */
+1 -1
View File
@@ -1954,7 +1954,7 @@ popup_menu_position_func(GtkMenu *menu UNUSED,
# endif
{
/* Find the cursor position in the current window */
*x += FILL_X(W_WINCOL(curwin) + curwin->w_wcol + 1) + 1;
*x += FILL_X(curwin->w_wincol + curwin->w_wcol + 1) + 1;
*y += FILL_Y(W_WINROW(curwin) + curwin->w_wrow + 1) + 1;
}
}
+1 -1
View File
@@ -1612,7 +1612,7 @@ gui_mac_scroll_action(ControlHandle theControl, short partCode)
else /* Bottom scrollbar */
{
sb_info = sb;
page = W_WIDTH(curwin) - 5;
page = curwin->w_width - 5;
}
switch (partCode)
+16 -15
View File
@@ -4384,7 +4384,7 @@ add_dialog_element(
WORD clss,
const char *caption);
static LPWORD lpwAlign(LPWORD);
static int nCopyAnsiToWideChar(LPWORD, LPSTR);
static int nCopyAnsiToWideChar(LPWORD, LPSTR, BOOL);
#if defined(FEAT_MENU) && defined(FEAT_TEAROFF)
static void gui_mch_tearoff(char_u *title, vimmenu_T *menu, int initX, int initY);
#endif
@@ -6608,7 +6608,7 @@ gui_make_popup(char_u *path_name, int mouse_pos)
}
else if (curwin != NULL)
{
p.x += TEXT_X(W_WINCOL(curwin) + curwin->w_wcol + 1);
p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
}
msg_scroll = FALSE;
@@ -7284,9 +7284,8 @@ gui_mch_dialog(
add_word(0); // Class
/* copy the title of the dialog */
nchar = nCopyAnsiToWideChar(p, (title ?
(LPSTR)title :
(LPSTR)("Vim "VIM_VERSION_MEDIUM)));
nchar = nCopyAnsiToWideChar(p, (title ? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
p += nchar;
if (s_usenewlook)
@@ -7298,13 +7297,13 @@ gui_mch_dialog(
/* point size */
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
GetDeviceCaps(hdc, LOGPIXELSY));
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
}
else
#endif
{
*p++ = DLG_FONT_POINT_SIZE; // point size
nchar = nCopyAnsiToWideChar(p, TEXT(DLG_FONT_NAME));
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
}
p += nchar;
}
@@ -7485,7 +7484,7 @@ add_dialog_element(
*p++ = (WORD)0xffff;
*p++ = clss; //2 more here
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption); //strlen(caption)+1
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption, TRUE); //strlen(caption)+1
p += nchar;
*p++ = 0; // advance pointer over nExtraStuff WORD - 2 more
@@ -7517,11 +7516,13 @@ lpwAlign(
* parameter as wide character (16-bits / char) string, and returns integer
* number of wide characters (words) in string (including the trailing wide
* char NULL). Partly taken from the Win32SDK samples.
*/
* If "use_enc" is TRUE, 'encoding' is used for "lpAnsiIn". If FALSE, current
* ACP is used for "lpAnsiIn". */
static int
nCopyAnsiToWideChar(
LPWORD lpWCStr,
LPSTR lpAnsiIn)
LPSTR lpAnsiIn,
BOOL use_enc)
{
int nChar = 0;
#ifdef FEAT_MBYTE
@@ -7529,7 +7530,7 @@ nCopyAnsiToWideChar(
int i;
WCHAR *wn;
if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
if (use_enc && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
{
/* Not a codepage, use our own conversion function. */
wn = enc_to_utf16((char_u *)lpAnsiIn, NULL);
@@ -7852,8 +7853,8 @@ gui_mch_tearoff(
/* copy the title of the dialog */
nchar = nCopyAnsiToWideChar(p, ((*title)
? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)));
? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
p += nchar;
if (s_usenewlook)
@@ -7865,13 +7866,13 @@ gui_mch_tearoff(
/* point size */
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
GetDeviceCaps(hdc, LOGPIXELSY));
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
}
else
#endif
{
*p++ = DLG_FONT_POINT_SIZE; // point size
nchar = nCopyAnsiToWideChar (p, TEXT(DLG_FONT_NAME));
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
}
p += nchar;
}
+1 -1
View File
@@ -1179,7 +1179,7 @@ luaV_window_index(lua_State *L)
else if (strncmp(s, "col", 3) == 0)
lua_pushinteger(L, w->w_cursor.col + 1);
else if (strncmp(s, "width", 5) == 0)
lua_pushinteger(L, W_WIDTH(w));
lua_pushinteger(L, w->w_width);
else if (strncmp(s, "height", 6) == 0)
lua_pushinteger(L, w->w_height);
/* methods */
+1 -1
View File
@@ -2063,7 +2063,7 @@ get_window_width(void *data, int argc, Scheme_Object **argv)
Vim_Prim *prim = (Vim_Prim *)data;
vim_mz_window *win = get_window_arg(prim->name, 0, argc, argv);
return scheme_make_integer(W_WIDTH(win->win));
return scheme_make_integer(win->win->w_width);
}
/* (set-win-width {width} [window]) */
-1
View File
@@ -1472,7 +1472,6 @@ Msg(text, hl=NULL)
PREINIT:
int attr;
int id;
PPCODE:
if (text != NULL)
+2 -2
View File
@@ -3875,9 +3875,9 @@ WindowAttr(WindowObject *self, char *name)
else if (strcmp(name, "row") == 0)
return PyLong_FromLong((long)(self->win->w_winrow));
else if (strcmp(name, "width") == 0)
return PyLong_FromLong((long)(W_WIDTH(self->win)));
return PyLong_FromLong((long)(self->win->w_width));
else if (strcmp(name, "col") == 0)
return PyLong_FromLong((long)(W_WINCOL(self->win)));
return PyLong_FromLong((long)(self->win->w_wincol));
else if (strcmp(name, "vars") == 0)
return NEW_DICTIONARY(self->win->w_vars);
else if (strcmp(name, "options") == 0)
+2 -2
View File
@@ -891,7 +891,7 @@ static int ensure_ruby_initialized(void)
#ifdef RUBY19_OR_LATER
{
int dummy_argc = 2;
char *dummy_argv[] = {"vim-ruby", "-e0"};
char *dummy_argv[] = {"vim-ruby", "-e_=0"};
ruby_options(dummy_argc, dummy_argv);
}
ruby_script("vim-ruby");
@@ -1479,7 +1479,7 @@ static VALUE window_set_height(VALUE self, VALUE height)
static VALUE window_width(VALUE self UNUSED)
{
return INT2NUM(W_WIDTH(get_win(self)));
return INT2NUM(get_win(self)->w_width);
}
static VALUE window_set_width(VALUE self UNUSED, VALUE width)
+4 -3
View File
@@ -25,12 +25,13 @@ static const VTermColor ansi_colors[] = {
};
static int ramp6[] = {
0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF,
0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF,
};
/* Use 0x81 instead of 0x80 to be able to distinguish from ansi black */
static int ramp24[] = {
0x00, 0x0B, 0x16, 0x21, 0x2C, 0x37, 0x42, 0x4D, 0x58, 0x63, 0x6E, 0x79,
0x85, 0x90, 0x9B, 0xA6, 0xB1, 0xBC, 0xC7, 0xD2, 0xDD, 0xE8, 0xF3, 0xFF,
0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,
0x81, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE,
};
static int lookup_colour_ansi(const VTermState *state, long index, VTermColor *col)
+2 -1
View File
@@ -130,7 +130,8 @@ static int outbuffer_is_full(VTerm *vt)
return vt->outbuffer_cur >= vt->outbuffer_len - 1;
}
#if _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _BSD_SOURCE
#if (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500) \
|| defined(_ISOC99_SOURCE) || defined(_BSD_SOURCE)
# undef VSNPRINTF
# define VSNPRINTF vsnprintf
#else
+15
View File
@@ -2648,6 +2648,21 @@ check_tty(mparm_T *parmp)
#if defined(WIN3264) && !defined(FEAT_GUI_W32)
if (is_cygpty_used())
{
# if defined(FEAT_MBYTE) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) \
&& defined(FEAT_GETTEXT)
char *s, *tofree = NULL;
/* Set the encoding of the error message based on $LC_ALL or
* other environment variables instead of 'encoding'.
* Note that the message is shown on a Cygwin terminal (e.g.
* mintty) which encoding is based on $LC_ALL or etc., not the
* current codepage used by normal Win32 console programs. */
tofree = s = (char *)enc_locale_env(NULL);
if (s == NULL)
s = "utf-8"; /* Use "utf-8" by default. */
(void)bind_textdomain_codeset(VIMPACKAGE, s);
vim_free(tofree);
# endif
mch_errmsg(_("Vim: Error: This version of Vim does not run in a Cygwin terminal\n"));
exit(1);
}
+51 -31
View File
@@ -4385,45 +4385,31 @@ enc_alias_search(char_u *name)
#if defined(FEAT_MBYTE) || defined(PROTO)
#ifdef HAVE_LANGINFO_H
# include <langinfo.h>
#endif
# ifdef HAVE_LANGINFO_H
# include <langinfo.h>
# endif
# ifndef FEAT_GUI_W32
/*
* Get the canonicalized encoding of the current locale.
* Get the canonicalized encoding from the specified locale string "locale"
* or from the environment variables LC_ALL, LC_CTYPE and LANG.
* Returns an allocated string when successful, NULL when not.
*/
char_u *
enc_locale(void)
enc_locale_env(char *locale)
{
#ifndef WIN3264
char *s;
char *s = locale;
char *p;
int i;
#endif
char buf[50];
#ifdef WIN3264
long acp = GetACP();
if (acp == 1200)
STRCPY(buf, "ucs-2le");
else if (acp == 1252) /* cp1252 is used as latin1 */
STRCPY(buf, "latin1");
else
sprintf(buf, "cp%ld", acp);
#else
# ifdef HAVE_NL_LANGINFO_CODESET
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
# endif
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
# endif
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
s = getenv("LANG");
if (s == NULL || *s == NUL)
return FAIL;
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
s = getenv("LANG");
if (s == NULL || *s == NUL)
return NULL;
/* The most generic locale format is:
* language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]]
@@ -4458,12 +4444,46 @@ enc_locale(void)
break;
}
buf[i] = NUL;
#endif
return enc_canonize((char_u *)buf);
}
# endif
#if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
/*
* Get the canonicalized encoding of the current locale.
* Returns an allocated string when successful, NULL when not.
*/
char_u *
enc_locale(void)
{
# ifdef WIN3264
char buf[50];
long acp = GetACP();
if (acp == 1200)
STRCPY(buf, "ucs-2le");
else if (acp == 1252) /* cp1252 is used as latin1 */
STRCPY(buf, "latin1");
else
sprintf(buf, "cp%ld", acp);
return enc_canonize((char_u *)buf);
# else
char *s;
# ifdef HAVE_NL_LANGINFO_CODESET
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
# endif
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
# endif
s = NULL;
return enc_locale_env(s);
# endif
}
# if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
/*
* Convert an encoding name to an MS-Windows codepage.
* Returns zero if no codepage can be figured out.
@@ -4490,7 +4510,7 @@ encname2codepage(char_u *name)
return cp;
return 0;
}
#endif
# endif
# if defined(USE_ICONV) || defined(PROTO)
+27 -5
View File
@@ -88,7 +88,7 @@ static const char *toolbar_names[] =
static int
menu_is_winbar(char_u *name)
{
return (STRNCMP(name, "WinBar", 5) == 0);
return (STRNCMP(name, "WinBar", 6) == 0);
}
int
@@ -1808,6 +1808,7 @@ menu_is_menubar(char_u *name)
{
return (!menu_is_popup(name)
&& !menu_is_toolbar(name)
&& !menu_is_winbar(name)
&& *name != MNU_HIDDEN_CHAR);
}
@@ -2248,7 +2249,7 @@ gui_destroy_tearoffs_recurse(vimmenu_T *menu)
execute_menu(exarg_T *eap, vimmenu_T *menu)
{
char_u *mode;
int idx;
int idx = -1;
#ifdef FEAT_GUI_MACVIM
char_u *old_arg;
#endif
@@ -2315,7 +2316,9 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
if (*p_sel == 'e' && gchar_cursor() != NUL)
++curwin->w_cursor.col;
}
else
/* For the WinBar menu always use the Normal mode menu. */
if (idx == -1 || eap == NULL)
{
mode = (char_u *)"Normal";
idx = MENU_INDEX_NORMAL;
@@ -2333,8 +2336,16 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
|| current_SID != 0
#endif
)
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
{
save_state_T save_state;
++ex_normal_busy;
if (save_current_state(&save_state))
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
menu->silent[idx]);
restore_current_state(&save_state);
--ex_normal_busy;
}
else
ins_typebuf(menu->strings[idx], menu->noremap[idx], 0,
TRUE, menu->silent[idx]);
@@ -2433,12 +2444,18 @@ winbar_click(win_T *wp, int col)
if (col >= item->wb_startcol && col <= item->wb_endcol)
{
win_T *save_curwin = NULL;
pos_T save_visual = VIsual;
int save_visual_active = VIsual_active;
int save_visual_select = VIsual_select;
int save_visual_reselect = VIsual_reselect;
int save_visual_mode = VIsual_mode;
if (wp != curwin)
{
/* Clicking in the window toolbar of a not-current window.
* Make that window the current one and go to Normal mode. */
* Make that window the current one and save Visual mode. */
save_curwin = curwin;
VIsual_active = FALSE;
curwin = wp;
curbuf = curwin->w_buffer;
check_cursor();
@@ -2450,6 +2467,11 @@ winbar_click(win_T *wp, int col)
{
curwin = save_curwin;
curbuf = curwin->w_buffer;
VIsual = save_visual;
VIsual_active = save_visual_active;
VIsual_select = save_visual_select;
VIsual_reselect = save_visual_reselect;
VIsual_mode = save_visual_mode;
}
}
}
+3 -3
View File
@@ -495,7 +495,7 @@ get_breakindent_win(
static varnumber_T prev_tick = 0; /* changedtick of cached value */
int bri = 0;
/* window width minus window margin space, i.e. what rests for text */
const int eff_wwidth = W_WIDTH(wp)
const int eff_wwidth = wp->w_width
- ((wp->w_p_nu || wp->w_p_rnu)
&& (vim_strchr(p_cpo, CPO_NUMCOL) == NULL)
? number_width(wp) + 1 : 0);
@@ -2026,7 +2026,7 @@ plines_win_nofold(win_T *wp, linenr_T lnum)
/*
* Add column offset for 'number', 'relativenumber' and 'foldcolumn'.
*/
width = W_WIDTH(wp) - win_col_off(wp);
width = wp->w_width - win_col_off(wp);
if (width <= 0)
return 32000;
if (col <= width)
@@ -2083,7 +2083,7 @@ plines_win_col(win_T *wp, linenr_T lnum, long column)
/*
* Add column offset for 'number', 'relativenumber', 'foldcolumn', etc.
*/
width = W_WIDTH(wp) - win_col_off(wp);
width = wp->w_width - win_col_off(wp);
if (width <= 0)
return 9999;
+3 -3
View File
@@ -165,7 +165,7 @@ coladvance2(
else
{
#ifdef FEAT_VIRTUALEDIT
int width = W_WIDTH(curwin) - win_col_off(curwin);
int width = curwin->w_width - win_col_off(curwin);
if (finetune
&& curwin->w_p_wrap
@@ -310,7 +310,7 @@ coladvance2(
int b = (int)wcol - (int)col;
/* The difference between wcol and col is used to set coladd. */
if (b > 0 && b < (MAXCOL - 2 * W_WIDTH(curwin)))
if (b > 0 && b < (MAXCOL - 2 * curwin->w_width))
pos->coladd = b;
col += b;
@@ -662,7 +662,7 @@ leftcol_changed(void)
int retval = FALSE;
changed_cline_bef_curs();
lastcol = curwin->w_leftcol + W_WIDTH(curwin) - curwin_col_off() - 1;
lastcol = curwin->w_leftcol + curwin->w_width - curwin_col_off() - 1;
validate_virtcol();
/*
+11 -11
View File
@@ -884,14 +884,14 @@ validate_cursor_col(void)
col = curwin->w_virtcol;
off = curwin_col_off();
col += off;
width = W_WIDTH(curwin) - off + curwin_col_off2();
width = curwin->w_width - off + curwin_col_off2();
/* long line wrapping, adjust curwin->w_wrow */
if (curwin->w_p_wrap
&& col >= (colnr_T)W_WIDTH(curwin)
&& col >= (colnr_T)curwin->w_width
&& width > 0)
/* use same formula as what is used in curs_columns() */
col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
col -= ((col - curwin->w_width) / width + 1) * width;
if (col > (int)curwin->w_leftcol)
col -= curwin->w_leftcol;
else
@@ -1004,11 +1004,11 @@ curs_columns(
*/
curwin->w_wrow = curwin->w_cline_row;
textwidth = W_WIDTH(curwin) - extra;
textwidth = curwin->w_width - extra;
if (textwidth <= 0)
{
/* No room for text, put cursor in last char of window. */
curwin->w_wcol = W_WIDTH(curwin) - 1;
curwin->w_wcol = curwin->w_width - 1;
curwin->w_wrow = curwin->w_height - 1;
}
else if (curwin->w_p_wrap && curwin->w_width != 0)
@@ -1016,10 +1016,10 @@ curs_columns(
width = textwidth + curwin_col_off2();
/* long line wrapping, adjust curwin->w_wrow */
if (curwin->w_wcol >= W_WIDTH(curwin))
if (curwin->w_wcol >= curwin->w_width)
{
/* this same formula is used in validate_cursor_col() */
n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
n = (curwin->w_wcol - curwin->w_width) / width + 1;
curwin->w_wcol -= n * width;
curwin->w_wrow += n;
@@ -1050,7 +1050,7 @@ curs_columns(
* extra
*/
off_left = (int)startcol - (int)curwin->w_leftcol - p_siso;
off_right = (int)endcol - (int)(curwin->w_leftcol + W_WIDTH(curwin)
off_right = (int)endcol - (int)(curwin->w_leftcol + curwin->w_width
- p_siso) + 1;
if (off_left < 0 || off_right > 0)
{
@@ -1278,7 +1278,7 @@ scrolldown(
validate_virtcol();
validate_cheight();
wrow += curwin->w_cline_height - 1 -
curwin->w_virtcol / W_WIDTH(curwin);
curwin->w_virtcol / curwin->w_width;
}
while (wrow >= curwin->w_height && curwin->w_cursor.lnum > 1)
{
@@ -1483,7 +1483,7 @@ scrolldown_clamp(void)
validate_cheight();
validate_virtcol();
end_row += curwin->w_cline_height - 1 -
curwin->w_virtcol / W_WIDTH(curwin);
curwin->w_virtcol / curwin->w_width;
}
if (end_row < curwin->w_height - p_so)
{
@@ -1541,7 +1541,7 @@ scrollup_clamp(void)
if (curwin->w_p_wrap && curwin->w_width != 0)
{
validate_virtcol();
start_row -= curwin->w_virtcol / W_WIDTH(curwin);
start_row -= curwin->w_virtcol / curwin->w_width;
}
if (start_row >= p_so)
{
+1 -1
View File
@@ -2872,7 +2872,7 @@ netbeans_button_release(int button)
if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
{
int col = mouse_col - W_WINCOL(curwin)
int col = mouse_col - curwin->w_wincol
- ((curwin->w_p_nu || curwin->w_p_rnu) ? 9 : 1);
long off = pos2off(curbuf, &curwin->w_cursor);
+17 -11
View File
@@ -2796,6 +2796,12 @@ do_mouse(
*/
jump_flags = jump_to_mouse(jump_flags,
oap == NULL ? NULL : &(oap->inclusive), which_button);
#ifdef FEAT_MENU
/* A click in the window toolbar has no side effects. */
if (jump_flags & MOUSE_WINBAR)
return FALSE;
#endif
moved = (jump_flags & CURSOR_MOVED);
in_status_line = (jump_flags & IN_STATUS_LINE);
in_sep_line = (jump_flags & IN_SEP_LINE);
@@ -4453,8 +4459,8 @@ nv_screengo(oparg_T *oap, int dir, long dist)
col_off1 = curwin_col_off();
col_off2 = col_off1 - curwin_col_off2();
width1 = W_WIDTH(curwin) - col_off1;
width2 = W_WIDTH(curwin) - col_off2;
width1 = curwin->w_width - col_off1;
width2 = curwin->w_width - col_off2;
if (width2 == 0)
width2 = 1; /* avoid divide by zero */
@@ -4659,7 +4665,7 @@ nv_mousescroll(cmdarg_T *cap)
step = scroll_wheel_force;
# endif
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
step = W_WIDTH(curwin);
step = curwin->w_width;
val = curwin->w_leftcol + (cap->arg == MSCR_RIGHT ? -step : +step);
if (val < 0)
val = 0;
@@ -4911,7 +4917,7 @@ dozet:
/* "zH" - scroll screen right half-page */
case 'H':
cap->count1 *= W_WIDTH(curwin) / 2;
cap->count1 *= curwin->w_width / 2;
/* FALLTHROUGH */
/* "zh" - scroll screen to the right */
@@ -4928,7 +4934,7 @@ dozet:
break;
/* "zL" - scroll screen left half-page */
case 'L': cap->count1 *= W_WIDTH(curwin) / 2;
case 'L': cap->count1 *= curwin->w_width / 2;
/* FALLTHROUGH */
/* "zl" - scroll screen to the left */
@@ -4972,7 +4978,7 @@ dozet:
else
#endif
getvcol(curwin, &curwin->w_cursor, NULL, NULL, &col);
n = W_WIDTH(curwin) - curwin_col_off();
n = curwin->w_width - curwin_col_off();
if ((long)col + p_siso < n)
col = 0;
else
@@ -8107,7 +8113,7 @@ nv_g_cmd(cmdarg_T *cap)
oap->inclusive = FALSE;
if (curwin->w_p_wrap && curwin->w_width != 0)
{
int width1 = W_WIDTH(curwin) - curwin_col_off();
int width1 = curwin->w_width - curwin_col_off();
int width2 = width1 + curwin_col_off2();
validate_virtcol();
@@ -8121,7 +8127,7 @@ nv_g_cmd(cmdarg_T *cap)
* 'relativenumber' is on and lines are wrapping the middle can be more
* to the left. */
if (cap->nchar == 'm')
i += (W_WIDTH(curwin) - curwin_col_off()
i += (curwin->w_width - curwin_col_off()
+ ((curwin->w_p_wrap && i > 0)
? curwin_col_off2() : 0)) / 2;
coladvance((colnr_T)i);
@@ -8173,7 +8179,7 @@ nv_g_cmd(cmdarg_T *cap)
curwin->w_curswant = MAXCOL; /* so we stay at the end */
if (cap->count1 == 1)
{
int width1 = W_WIDTH(curwin) - col_off;
int width1 = curwin->w_width - col_off;
int width2 = width1 + curwin_col_off2();
validate_virtcol();
@@ -8205,7 +8211,7 @@ nv_g_cmd(cmdarg_T *cap)
}
else
{
i = curwin->w_leftcol + W_WIDTH(curwin) - col_off - 1;
i = curwin->w_leftcol + curwin->w_width - col_off - 1;
coladvance((colnr_T)i);
/* Make sure we stick in this column. */
@@ -9599,7 +9605,7 @@ get_op_vcol(
colnr_T start, end;
if (VIsual_mode != Ctrl_V
|| (!initial && oap->end.col < W_WIDTH(curwin)))
|| (!initial && oap->end.col < curwin->w_width))
return;
oap->block_mode = TRUE;
-3
View File
@@ -9085,9 +9085,6 @@ set_num_option(
{
if (p_imst != IM_ON_THE_SPOT && p_imst != IM_OVER_THE_SPOT)
errmsg = e_invarg;
# ifdef FEAT_GUI_MACVIM
gui_macvim_set_imstyle(p_imst);
# endif
}
#endif
+12 -4
View File
@@ -5352,6 +5352,9 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
channel = add_channel();
if (channel == NULL)
goto failed;
if (job->jv_tty_out != NULL)
ch_log(channel, "using pty %s on fd %d",
job->jv_tty_out, pty_master_fd);
}
BLOCK_SIGNALS(&curset);
@@ -5724,6 +5727,9 @@ mch_create_pty_channel(job_T *job, jobopt_T *options)
close(pty_master_fd);
return FAIL;
}
if (job->jv_tty_out != NULL)
ch_log(channel, "using pty %s on fd %d",
job->jv_tty_out, pty_master_fd);
job->jv_channel = channel; /* ch_refcount was set by add_channel() */
channel->ch_keep_open = TRUE;
@@ -5991,7 +5997,7 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
}
# endif
#ifdef FEAT_JOB_CHANNEL
nfd = channel_poll_setup(nfd, &fds);
nfd = channel_poll_setup(nfd, &fds, &towait);
#endif
if (interrupted != NULL)
*interrupted = FALSE;
@@ -6043,7 +6049,8 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
}
# endif
#ifdef FEAT_JOB_CHANNEL
if (ret > 0)
/* also call when ret == 0, we may be polling a keep-open channel */
if (ret >= 0)
ret = channel_poll_check(ret, &fds);
#endif
@@ -6119,7 +6126,7 @@ select_eintr:
}
# endif
# ifdef FEAT_JOB_CHANNEL
maxfd = channel_select_setup(maxfd, &rfds, &wfds);
maxfd = channel_select_setup(maxfd, &rfds, &wfds, &tv, &tvp);
# endif
if (interrupted != NULL)
*interrupted = FALSE;
@@ -6205,7 +6212,8 @@ select_eintr:
}
# endif
#ifdef FEAT_JOB_CHANNEL
if (ret > 0)
/* also call when ret == 0, we may be polling a keep-open channel */
if (ret >= 0)
ret = channel_select_check(ret, &rfds, &wfds);
#endif
+2
View File
@@ -22,6 +22,7 @@ LANGUAGES = \
ja \
ko \
ko.UTF-8 \
lv \
nb \
nl \
no \
@@ -63,6 +64,7 @@ MOFILES = \
ja.mo \
ko.mo \
ko.UTF-8.mo \
lv.mo \
nb.mo \
nl.mo \
no.mo \
+102 -132
View File
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: vim 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-28 10:54+0200\n"
"PO-Revision-Date: 2017-05-28 23:45+0200\n"
"POT-Creation-Date: 2017-09-24 16:26+0200\n"
"PO-Revision-Date: 2017-09-24 18:40+0200\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Antonio Colombo <azc100@gmail.com>\n"
"Language: Italian\n"
@@ -96,7 +96,6 @@ msgstr "E90: Non riesco a scaricare l'ultimo buffer"
msgid "E84: No modified buffer found"
msgstr "E84: Nessun buffer risulta modificato"
#. back where we started, didn't find anything.
msgid "E85: There is no listed buffer"
msgstr "E85: Non c'è alcun buffer elencato"
@@ -111,6 +110,18 @@ msgid "E89: No write since last change for buffer %ld (add ! to override)"
msgstr ""
"E89: Buffer %ld non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E948: Job still running (add ! to end the job)"
msgstr "E948: Lavoro ancora in esecuzione (aggiungi! per terminarlo)"
msgid "E37: No write since last change (add ! to override)"
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E948: Job still running"
msgstr "E948: Lavoro ancora attivo"
msgid "E37: No write since last change"
msgstr "E37: Non salvato dopo l'ultima modifica"
msgid "W14: Warning: List of file names overflow"
msgstr "W14: Avviso: Superato limite della lista dei nomi di file"
@@ -166,7 +177,6 @@ msgstr "riga %ld di %ld --%d%%-- col "
msgid "[No Name]"
msgstr "[Senza nome]"
#. must be a help buffer
msgid "help"
msgstr "aiuto"
@@ -192,6 +202,9 @@ msgstr ""
"\n"
"# Lista Buffer:\n"
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
msgid "[Scratch]"
msgstr "[Volatile]"
@@ -228,6 +241,7 @@ msgstr "E904: l'ultimo argomento per espressione/chiamata dev'essere numerico"
msgid "E904: third argument for call must be a list"
msgstr "E904: il terzo argomento della chiamata dev'essere una Lista"
#, c-format
msgid "E905: received unknown command: %s"
msgstr "E905: recevuto comando non conosciuto: %s"
@@ -235,6 +249,7 @@ msgstr "E905: recevuto comando non conosciuto: %s"
msgid "E630: %s(): write while not connected"
msgstr "E630: %s(): scrittura in mancanza di connessione"
#, c-format
msgid "E631: %s(): write failed"
msgstr "E631: %s(): scrittura non riuscita"
@@ -299,6 +314,7 @@ msgstr "argomento di extend()"
msgid "E737: Key already exists: %s"
msgstr "E737: Chiave già esistente: %s"
#, c-format
msgid "E96: Cannot diff more than %ld buffers"
msgstr "E96: Non supporto differenze fra più di %ld buffer"
@@ -355,7 +371,6 @@ msgstr "E791: Nessuna keymap per questo tasto"
msgid " Keyword completion (^N^P)"
msgstr " Completamento Keyword (^N^P)"
#. ctrl_x_mode == 0, ^P/^N compl.
msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
msgstr " modalità ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
@@ -433,10 +448,6 @@ msgstr "corrispondenza nel file"
msgid " Adding"
msgstr " Aggiungo"
#. showmode might reset the internal line pointers, so it must
#. * be called before line = ml_get(), or when this address is no
#. * longer needed. -- Acevedo.
#.
msgid "-- Searching..."
msgstr "-- Ricerca..."
@@ -457,7 +468,6 @@ msgstr "corrispondenza %d di %d"
msgid "match %d"
msgstr "corrispondenza %d"
#. maximum nesting of lists and dicts
msgid "E18: Unexpected characters in :let"
msgstr "E18: Caratteri non previsti in :let"
@@ -518,8 +528,7 @@ msgstr "E690: Manca \"in\" dopo :for"
msgid "E108: No such variable: \"%s\""
msgstr "E108: Variabile inesistente: \"%s\""
#. For historic reasons this error is not given for a list or dict.
#. * E.g., the b: dict could be locked/unlocked.
#, c-format
msgid "E940: Cannot lock or unlock variable %s"
msgstr "E940: Non riesco a bloccare o sbloccare la variabile %s"
@@ -693,11 +702,6 @@ msgstr "argomento di add()"
msgid "E785: complete() can only be used in Insert mode"
msgstr "E785: complete() può essere usata solo in modalità inserimento"
#.
#. * Yes this is ugly, I don't particularly like it either. But doing it
#. * this way has the compelling advantage that translations need not to
#. * be touched at all. See below what 'ok' and 'ync' are used for.
#.
msgid "&Ok"
msgstr "&OK"
@@ -794,6 +798,7 @@ msgstr "E882: Funzione confronto in uniq non riuscita"
msgid "(Invalid)"
msgstr "(Non valido)"
#, c-format
msgid "E935: invalid submatch number: %d"
msgstr "E935: nomeri di sotto-corrispondenza non valido: %d"
@@ -858,7 +863,6 @@ msgstr " file elaborati in precedenza"
msgid " FAILED"
msgstr " FALLITO"
#. avoid a wait_return for this message, it's annoying
#, c-format
msgid "E137: Viminfo file is not writable: %s"
msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura"
@@ -879,7 +883,6 @@ msgstr "Scrivo file viminfo \"%s\""
msgid "E886: Can't rename viminfo file to %s!"
msgstr "E886: Non riesco a rinominare il file viminfo a %s!"
#. Write the info:
#, c-format
msgid "# This viminfo file was generated by Vim %s.\n"
msgstr "# Questo file viminfo è stato generato da Vim %s.\n"
@@ -999,8 +1002,8 @@ msgstr " in 1 riga"
msgid " on %ld lines"
msgstr " in %ld righe"
msgid "E147: Cannot do :global recursive"
msgstr "E147: :global non può essere usato ricorsivamente"
msgid "E147: Cannot do :global recursive with a range"
msgstr "E147: :global non può essere usato ricorsivamente con un intervallo"
msgid "E148: Regular expression missing from global"
msgstr "E148: Manca espressione regolare nel comando 'global'"
@@ -1037,6 +1040,7 @@ msgstr "E149: Spiacente, nessun aiuto per %s"
msgid "Sorry, help file \"%s\" not found"
msgstr "Spiacente, non trovo file di aiuto \"%s\""
#, c-format
msgid "E151: No match: %s"
msgstr "E151: Nessuna corrispondenza: %s"
@@ -1148,8 +1152,8 @@ msgstr "E750: Usare prima \":profile start {fname}\""
msgid "Save changes to \"%s\"?"
msgstr "Salvare modifiche a \"%s\"?"
msgid "Untitled"
msgstr "Senza Nome"
msgid "E947: Job still running in buffer \"%s\""
msgstr "E947: Lavoro ancora in esecuzione nel buffer \"%s\""
#, c-format
msgid "E162: No write since last change for buffer \"%s\""
@@ -1186,11 +1190,13 @@ msgstr "non trovato in '%s': \"%s\""
#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
msgstr ""
"W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
#, c-format
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
msgstr ""
"W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
msgid "Source Vim script"
msgstr "Esegui script Vim"
@@ -1459,7 +1465,6 @@ msgstr "E189: \"%s\" esiste (aggiungi ! per eseguire comunque)"
msgid "E190: Cannot open \"%s\" for writing"
msgstr "E190: Non riesco ad aprire \"%s\" in scrittura"
#. set mark
msgid "E191: Argument must be a letter or forward/backward quote"
msgstr ""
"E191: L'argomento deve essere una lettera, oppure un apice/apice retroverso"
@@ -1501,13 +1506,15 @@ msgstr "E500: Il valore
msgid "E195: Cannot open viminfo file for reading"
msgstr "E195: Non posso aprire il file viminfo in lettura"
msgid "Untitled"
msgstr "Senza Nome"
msgid "E196: No digraphs in this version"
msgstr "E196: Digrammi non supportati in questa versione"
msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
msgstr "E608: Impossibile lanciare eccezioni con prefisso 'Vim'"
#. always scroll up, don't overwrite
#, c-format
msgid "Exception thrown: %s"
msgstr "Eccezione lanciata: %s"
@@ -1524,7 +1531,6 @@ msgstr "Eccezione scartata: %s"
msgid "%s, line %ld"
msgstr "%s, riga %ld"
#. always scroll up, don't overwrite
#, c-format
msgid "Exception caught: %s"
msgstr "Eccezione intercettata: %s"
@@ -1550,7 +1556,6 @@ msgstr "Errore ed interruzione"
msgid "Error"
msgstr "Errore"
#. if (pending & CSTP_INTERRUPT)
msgid "Interrupt"
msgstr "Interruzione"
@@ -1593,15 +1598,12 @@ msgstr "E601: nidificazione di :try troppo estesa"
msgid "E603: :catch without :try"
msgstr "E603: :catch senza :try"
#. Give up for a ":catch" after ":finally" and ignore it.
#. * Just parse.
msgid "E604: :catch after :finally"
msgstr "E604: :catch dopo :finally"
msgid "E606: :finally without :try"
msgstr "E606: :finally senza :try"
#. Give up for a multiple ":finally" and ignore it.
msgid "E607: multiple :finally"
msgstr "E607: :finally multipli"
@@ -1694,7 +1696,6 @@ msgstr "Vim: Leggo da 'stdin'...\n"
msgid "Reading from stdin..."
msgstr "Leggo da 'stdin'..."
#. Re-opening the original file failed!
msgid "E202: Conversion made file unreadable!"
msgstr "E202: La conversione ha reso il file illeggibile!"
@@ -1911,9 +1912,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[Manca carattere di fine riga]"
#. don't overwrite messages here
#. must give this prompt
#. don't use emsg() here, don't want to flush the buffers
msgid "WARNING: The file has been changed since reading it!!!"
msgstr "AVVISO: File modificato dopo essere stato letto!!!"
@@ -1992,7 +1990,6 @@ msgstr "--Cancellato--"
msgid "auto-removing autocommand: %s <buffer=%d>"
msgstr "auto-rimozione dell'autocomando: %s <buffer=%d>"
#. the group doesn't exist
#, c-format
msgid "E367: No such group: \"%s\""
msgstr "E367: Gruppo inesistente: \"%s\""
@@ -2015,7 +2012,6 @@ msgstr "E216: Evento inesistente: %s"
msgid "E216: No such group or event: %s"
msgstr "E216: Evento o gruppo inesistente: %s"
#. Highlight title
msgid ""
"\n"
"--- Auto-Commands ---"
@@ -2196,18 +2192,15 @@ msgstr "Trova cosa:"
msgid "Replace with:"
msgstr "Sostituisci con:"
#. whole word only button
msgid "Match whole word only"
msgstr "Cerca solo la parola intera"
#. match case button
msgid "Match case"
msgstr "Maiuscole/minuscole"
msgid "Direction"
msgstr "Direzione"
#. 'Up' and 'Down' buttons
msgid "Up"
msgstr "Su"
@@ -2286,8 +2279,6 @@ msgstr "Stringa di ricerca (usa '\\\\' per cercare un '\\')"
msgid "Find & Replace (use '\\\\' to find a '\\')"
msgstr "Sostituisci (usa '\\\\' per cercare un '\\')"
#. We fake this: Use a filter that doesn't select anything and a default
#. * file name that won't be used.
msgid "Not Used"
msgstr "Non Utilizzato"
@@ -2361,7 +2352,6 @@ msgstr "Vim - Selettore Font"
msgid "Name:"
msgstr "Nome:"
#. create toggle button
msgid "Show size in Points"
msgstr "Mostra dimensione in Punti"
@@ -2606,7 +2596,6 @@ msgstr "E261: connessione cscope %s non trovata"
msgid "cscope connection %s closed"
msgstr "connessione cscope %s chiusa"
#. should not reach here
msgid "E570: fatal error in cs_manage_matches"
msgstr "E570: errore irreparabile in cs_manage_matches"
@@ -2768,7 +2757,6 @@ msgstr "numero buffer non valido"
msgid "not implemented yet"
msgstr "non ancora implementato"
#. ???
msgid "cannot set line(s)"
msgstr "non posso impostare riga(he)"
@@ -2809,7 +2797,6 @@ msgid ""
msgstr ""
"non posso registrare comando callback: buffer/finestra già in cancellazione"
#. This should never happen. Famous last word?
msgid ""
"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
"org"
@@ -2848,8 +2835,9 @@ msgstr "E573: Identificativo di server non valido: %s"
msgid "E251: VIM instance registry property is badly formed. Deleted!"
msgstr "E251: Proprietà registry relative a VIM non adeguate. Cancellate!"
#, c-format
msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: Chiave duplicata in JSON: \"%s\""
msgstr "E938: Chiave duplicata in JSON: \"%s\""
#, c-format
msgid "E696: Missing comma in List: %s"
@@ -2912,7 +2900,6 @@ msgstr "Vim: Avviso: Output non diretto a un terminale\n"
msgid "Vim: Warning: Input is not from a terminal\n"
msgstr "Vim: Avviso: Input non proveniente da un terminale\n"
#. just in case..
msgid "pre-vimrc command line"
msgstr "riga comandi prima di vimrc"
@@ -3171,6 +3158,9 @@ msgstr ""
msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
msgstr "-i <viminfo>\t\tUsa <viminfo> invece di .viminfo"
msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"
msgstr "--clean\t\t'nocompatible', default di Vim, no plugin, no viminfo"
msgid "-h or --help\tPrint Help (this message) and exit"
msgstr "-h opp. --help\tStampa Aiuto (questo messaggio) ed esci"
@@ -3271,11 +3261,9 @@ msgstr "--windowid <HWND>\tApri Vim dentro un altro widget win32"
msgid "No display"
msgstr "Manca display"
#. Failed to send, abort.
msgid ": Send failed.\n"
msgstr ": Invio fallito.\n"
#. Let vim start normally.
msgid ": Send failed. Trying to execute locally\n"
msgstr ": Invio fallito. Tento di eseguire localmente\n"
@@ -3296,7 +3284,6 @@ msgstr "Nessun mark impostato"
msgid "E283: No marks matching \"%s\""
msgstr "E283: Nessun mark corrispondente a \"%s\""
#. Highlight title
msgid ""
"\n"
"mark line col file/text"
@@ -3304,7 +3291,6 @@ msgstr ""
"\n"
"mark riga col.file/testo"
#. Highlight title
msgid ""
"\n"
" jump line col file/text"
@@ -3312,7 +3298,6 @@ msgstr ""
"\n"
" salt.riga col.file/testo"
#. Highlight title
msgid ""
"\n"
"change line col text"
@@ -3327,7 +3312,6 @@ msgstr ""
"\n"
"# File mark:\n"
#. Write the jumplist with -'
msgid ""
"\n"
"# Jumplist (newest first):\n"
@@ -3396,7 +3380,6 @@ msgstr "E298: Non riesco a leggere blocco numero 2?"
msgid "E843: Error while updating swap file crypt"
msgstr "E843: Errore aggiornando cifratura dello swap file"
#. could not (re)open the swap file, what can we do????
msgid "E301: Oops, lost the swap file!!!"
msgstr "E301: Ahimè, lo swap file è perduto!!!"
@@ -3580,7 +3563,6 @@ msgstr ""
msgid "Using crypt key from swap file for the text file.\n"
msgstr "Uso la chiave di cifratura del file swap per il file di testo.\n"
#. use msg() to start the scrolling properly
msgid "Swap files found:"
msgstr "Swap file trovati:"
@@ -3750,8 +3732,6 @@ msgstr "Mentre aprivo file \""
msgid " NEWER than swap file!\n"
msgstr " più RECENTE dello swap file!\n"
#. Some of these messages are long to allow translation to
#. * other languages.
msgid ""
"\n"
"(1) Another program may be editing the same file. If this is the case,\n"
@@ -3840,7 +3820,6 @@ msgstr "E328: I Menu esistono solo in un'altra modalit
msgid "E329: No menu \"%s\""
msgstr "E329: Nessun Menu \"%s\""
#. Only a mnemonic or accelerator is not valid.
msgid "E792: Empty menu name"
msgstr "E792: Nome menu non valido"
@@ -3854,8 +3833,6 @@ msgstr ""
msgid "E332: Separator cannot be part of a menu path"
msgstr "E332: Il separatore non può far parte di un percorso di Menu"
#. Now we have found the matching menu, and we list the mappings
#. Highlight title
msgid ""
"\n"
"--- Menus ---"
@@ -3866,6 +3843,10 @@ msgstr ""
msgid "Tear off this menu"
msgstr "Togli questo Menu"
#, c-format
msgid "E335: Menu not defined for %s mode"
msgstr "E335: Menu non definito per la modalità %s"
msgid "E333: Menu path must lead to a menu item"
msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
@@ -3873,10 +3854,6 @@ msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
msgid "E334: Menu not found: %s"
msgstr "E334: Menu non trovato: %s"
#, c-format
msgid "E335: Menu not defined for %s mode"
msgstr "E335: Menu non definito per la modalità %s"
msgid "E336: Menu path must lead to a sub-menu"
msgstr "E336: Il percorso Menu deve condurre ad un sotto-Menu"
@@ -3946,7 +3923,6 @@ msgstr "Salva File dialogo"
msgid "Open File dialog"
msgstr "Apri File dialogo"
#. TODO: non-GUI file selector here
msgid "E338: Sorry, no file browser in console mode"
msgstr "E338: Spiacente, niente esplorazione file in modalità console"
@@ -4111,8 +4087,8 @@ msgstr "E662: All'inizio della lista modifiche"
msgid "E663: At end of changelist"
msgstr "E663: Alla fine della lista modifiche"
msgid "Type :quit<Enter> to exit Vim"
msgstr "Batti :quit<Invio> per uscire da Vim"
msgid "Type :qa! and press <Enter> to abandon all changes and exit Vim"
msgstr "Batti :qa! e premi <Invio> per ignorare le modifiche e uscire da Vim"
#, c-format
msgid "1 line %sed 1 time"
@@ -4144,7 +4120,6 @@ msgstr "%ld righe rientrate "
msgid "E748: No previously used register"
msgstr "E748: Nessun registro usato in precedenza"
#. must display the prompt
msgid "cannot yank; delete anyway"
msgstr "non riesco a salvare in un registro; cancello comunque"
@@ -4159,25 +4134,27 @@ msgstr "%ld righe cambiate"
msgid "freeing %ld lines"
msgstr "libero %ld righe"
msgid "block of 1 line yanked"
msgstr "blocco di 1 riga messo in registro"
msgid "1 line yanked"
msgstr "1 riga messa in registro"
#, c-format
msgid "block of %ld lines yanked"
msgstr "blocco di %ld righe messo in registro"
msgid " into \"%c"
msgstr " in \"%c"
#, c-format
msgid "%ld lines yanked"
msgstr "%ld righe messe in registro"
#
msgid "block of 1 line yanked%s"
msgstr "blocco di 1 riga messo in registro%s"
msgid "1 line yanked%s"
msgstr "1 riga messa in registro%s"
msgid "block of %ld lines yanked%s"
msgstr "blocco di %ld righe messo in registro%s"
msgid "%ld lines yanked%s"
msgstr "%ld righe messe in registro%s"
#, c-format
msgid "E353: Nothing in register %s"
msgstr "E353: Niente nel registro %s"
#. Highlight title
msgid ""
"\n"
"--- Registers ---"
@@ -4240,9 +4217,6 @@ msgstr ""
msgid "(+%ld for BOM)"
msgstr "(+%ld per BOM)"
msgid "%<%f%h%m%=Page %N"
msgstr "%<%f%h%m%=Pagina %N"
msgid "Thanks for flying Vim"
msgstr "Grazie per aver volato con Vim"
@@ -4350,6 +4324,10 @@ msgstr "E541: troppi elementi"
msgid "E542: unbalanced groups"
msgstr "E542: gruppi sbilanciati"
msgid "E946: Cannot make a terminal with running job modifiable"
msgstr "E946: Non posso aprire un terminale mentre ci sono lavori "
"modificabili in esecuzione"
msgid "E590: A preview window already exists"
msgstr "E590: Una finestra di pre-visualizzazione esiste già"
@@ -4368,9 +4346,6 @@ msgstr "E594: Servono almeno %d colonne"
msgid "E355: Unknown option: %s"
msgstr "E355: Opzione inesistente: %s"
#. There's another character after zeros or the string
#. * is empty. In both cases, we are trying to set a
#. * num option using a string.
#, c-format
msgid "E521: Number required: &%s = '%s'"
msgstr "E521: Ci vuole un numero: &%s = '%s'"
@@ -4443,7 +4418,6 @@ msgstr "non posso modificare modalit
msgid "mch_get_shellsize: not a console??\n"
msgstr "mch_get_shellsize: non una console??\n"
#. if Vim opened a window: Executing a shell may cause crashes
msgid "E360: Cannot execute shell with -f option"
msgstr "E360: Non posso eseguire lo shell con l'opzione -f"
@@ -4667,7 +4641,6 @@ msgstr "E376: %%%c non valido nel prefisso della stringa di 'format'"
msgid "E377: Invalid %%%c in format string"
msgstr "E377: %%%c non valido nella stringa di 'format'"
#. nothing found
msgid "E378: 'errorformat' contains no pattern"
msgstr "E378: 'errorformat' non contiene alcun modello"
@@ -4693,6 +4666,7 @@ msgstr "(%d di %d)%s%s: "
msgid " (line deleted)"
msgstr " (riga cancellata)"
#, c-format
msgid "%serror list %d of %d; %d errors "
msgstr "%slista errori %d di %d; %d errori"
@@ -4705,9 +4679,6 @@ msgstr "E381: In cima allo stack di quickfix"
msgid "No entries"
msgstr "Nessun elemento"
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
msgid "Error file"
msgstr "File errori"
@@ -4732,6 +4703,12 @@ msgstr "E369: elemento non valido in %s%%[]"
msgid "E769: Missing ] after %s["
msgstr "E769: Manca ] dopo %s["
msgid "E944: Reverse range in character class"
msgstr "E944: Intervallo invertito nella classe di caratteri"
msgid "E945: Range too large in character class"
msgstr "E945: Intervallo troppo ampio nella classe di caratteri"
#, c-format
msgid "E53: Unmatched %s%%("
msgstr "E53: Senza riscontro: %s%%("
@@ -4758,6 +4735,9 @@ msgstr "E69: Manca ] dopo %s%%["
msgid "E70: Empty %s%%[]"
msgstr "E70: %s%%[] vuoto"
msgid "E65: Illegal back reference"
msgstr "E65: Riferimento all'indietro non ammesso"
msgid "E339: Pattern too long"
msgstr "E339: Espressione troppo lunga"
@@ -4794,9 +4774,6 @@ msgstr "E63: uso non valido di \\_"
msgid "E64: %s%c follows nothing"
msgstr "E64: %s%c senza nulla prima"
msgid "E65: Illegal back reference"
msgstr "E65: Riferimento all'indietro non ammesso"
msgid "E68: Invalid character after \\z"
msgstr "E68: Carattere non ammesso dopo \\z"
@@ -4848,7 +4825,6 @@ msgstr "E867: (NFA) Operatore sconosciuto '\\z%c'"
msgid "E867: (NFA) Unknown operator '\\%%%c'"
msgstr "E867: (NFA) Operatore sconosciuto '\\%%%c'"
#. should never happen
msgid "E868: Error building NFA with equivalence class!"
msgstr "E868: Errore nel build di NFA con classe di equivalenza!"
@@ -4859,11 +4835,9 @@ msgstr "E869: (NFA) Operatore sconosciuto '\\@%c'"
msgid "E870: (NFA regexp) Error reading repetition limits"
msgstr "E870: (NFA regexp) Errore nella lettura dei limiti di ripetizione"
#. Can't have a multi follow a multi.
msgid "E871: (NFA regexp) Can't have a multi follow a multi !"
msgstr "E871: (NFA regexp) Non si può avere multi dopo multi !"
#. Too many `('
msgid "E872: (NFA regexp) Too many '('"
msgstr "E872: (NFA regexp) Troppi '('"
@@ -4970,7 +4944,6 @@ msgstr "E386: '?' o '/' atteso dopo ';'"
msgid " (includes previously listed match)"
msgstr " (comprese corrispondenze elencate prima)"
#. cursor at status line
msgid "--- Included files "
msgstr "--- File inclusi "
@@ -5047,8 +5020,6 @@ msgstr "Spiacente, nessun suggerimento"
msgid "Sorry, only %ld suggestions"
msgstr "Spiacente, solo %ld suggerimenti"
#. for when 'cmdheight' > 1
#. avoid more prompt
#, c-format
msgid "Change \"%.*s\" to:"
msgstr "Cambiare \"%.*s\" in:"
@@ -5330,10 +5301,6 @@ msgstr "%d di %d nodi compressi; ne restano %d (%d%%)"
msgid "Reading back spell file..."
msgstr "Rilettura file ortografico..."
#.
#. * Go through the trie of good words, soundfold each word and add it to
#. * the soundfold trie.
#.
msgid "Performing soundfolding..."
msgstr "Eseguo soundfolding..."
@@ -5388,19 +5355,17 @@ msgstr "Parola '%.*s' aggiunta a %s"
msgid "E763: Word characters differ between spell files"
msgstr "E763: Caratteri di parola differenti nei file ortografici"
#. This should have been checked when generating the .spl
#. * file.
msgid "E783: duplicate char in MAP entry"
msgstr "E783: carattere duplicato nell'elemento MAP"
msgid "No Syntax items defined for this buffer"
msgstr "Nessun elemento sintattico definito per questo buffer"
msgid "syn conceal on"
msgstr "syn conceal attivo"
msgid "syntax conceal on"
msgstr "syntax conceal attivo"
msgid "syn conceal off"
msgstr "syn conceal inattivo"
msgid "syntax conceal off"
msgstr "syntax conceal inattivo"
#, c-format
msgid "E390: Illegal argument: %s"
@@ -5656,7 +5621,6 @@ msgstr "E428: Non posso andare oltre l'ultimo tag corrispondente"
msgid "File \"%s\" does not exist"
msgstr "Il file \"%s\" non esiste"
#. Give an indication of the number of matching tags
#, c-format
msgid "tag %d of %d%s"
msgstr "tag %d di %d%s"
@@ -5671,7 +5635,6 @@ msgstr " Uso tag ignorando maiuscole/minuscole!"
msgid "E429: File \"%s\" does not exist"
msgstr "E429: Il file \"%s\" non esiste"
#. Highlight title
msgid ""
"\n"
" # TO tag FROM line in file/text"
@@ -5702,7 +5665,6 @@ msgstr "Prima del byte %ld"
msgid "E432: Tags file not sorted: %s"
msgstr "E432: Tag file non ordinato alfabeticamente: %s"
#. never opened any tags file
msgid "E433: No tags file"
msgstr "E433: Nessun tag file"
@@ -5738,7 +5700,6 @@ msgstr "E436: Nessuna descrizione per \"%s\" in 'termcap'"
msgid "E437: terminal capability \"cm\" required"
msgstr "E437: capacità \"cm\" del terminale necessaria"
#. Highlight title
msgid ""
"\n"
"--- Terminal keys ---"
@@ -5749,6 +5710,21 @@ msgstr ""
msgid "Cannot open $VIMRUNTIME/rgb.txt"
msgstr "Non riesco ad aprire $VIMRUNTIME/rgb.txt"
msgid "Terminal"
msgstr "Terminale"
msgid "Terminal-finished"
msgstr "Terminale-terminato"
msgid "active"
msgstr "attivo"
msgid "running"
msgstr "in esecuzione"
msgid "finished"
msgstr "terminato"
msgid "new shell started\n"
msgstr "fatto eseguire nuovo shell\n"
@@ -5758,12 +5734,9 @@ msgstr "Vim: Errore leggendo l'input, esco...\n"
msgid "Used CUT_BUFFER0 instead of empty selection"
msgstr "Uso CUT_BUFFER0 invece che una scelta nulla"
#. This happens when the FileChangedRO autocommand changes the
#. * file in a way it becomes shorter.
msgid "E881: Line count changed unexpectedly"
msgstr "E881: Contatore righe è inaspettatamente cambiato"
#. must display the prompt
msgid "No undo possible; continue anyway"
msgstr "'undo' non più possibile; continuo comunque"
@@ -5953,6 +5926,7 @@ msgstr "E699: Troppi argomenti"
msgid "E117: Unknown function: %s"
msgstr "E117: Funzione sconosciuta: %s"
#, c-format
msgid "E933: Function was deleted: %s"
msgstr "E933: Funzione eliminata: %s"
@@ -5992,11 +5966,15 @@ msgstr "E862: Non si pu
#, c-format
msgid "E932: Closure function should not be at top level: %s"
msgstr "E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
msgstr ""
"E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
msgid "E126: Missing :endfunction"
msgstr "E126: Manca :endfunction"
msgid "W22: Text found after :endfunction: %s"
msgstr "W22: Trovato testo dopo :endfunction: %s"
#, c-format
msgid "E707: Function name conflicts with variable: %s"
msgstr "E707: Nome funzione in conflitto con la variabile: %s"
@@ -6336,6 +6314,7 @@ msgstr "E446: Nessun nome file sotto il cursore"
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Non riesco a trovare il file \"%s\" nel percorso"
#, c-format
msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E799: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
@@ -6346,9 +6325,11 @@ msgstr "E801: ID gi
msgid "List or number required"
msgstr "È necessaria una Lista o un numero"
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E802: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
#, c-format
msgid "E803: ID not found: %ld"
msgstr "E803: ID non trovato: %ld"
@@ -6377,7 +6358,6 @@ msgstr "Differenza con Vim"
msgid "Edit with &Vim"
msgstr "Apri con &Vim"
#. Now concatenate
msgid "Edit with existing Vim - "
msgstr "Apri con Vim esistente - "
@@ -6398,10 +6378,6 @@ msgstr "Percorso file troppo lungo!"
msgid "--No lines in buffer--"
msgstr "--File vuoto--"
#.
#. * The error messages that can be shared are included here.
#. * Excluded are errors that are only used once and debugging messages.
#.
msgid "E470: Command aborted"
msgstr "E470: Comando finito male"
@@ -6586,12 +6562,6 @@ msgstr "E484: Non riesco ad aprire il file %s"
msgid "E485: Can't read file %s"
msgstr "E485: Non riesco a leggere il file %s"
msgid "E37: No write since last change (add ! to override)"
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E37: No write since last change"
msgstr "E37: Non salvato dopo l'ultima modifica"
msgid "E38: Null argument"
msgstr "E38: Argomento nullo"
@@ -6878,7 +6848,6 @@ msgstr "il costruttore di lista non accetta parole chiave come argomenti"
msgid "list index out of range"
msgstr "indice di lista non nell'intervallo"
#. No more suitable format specifications in python-2.3
#, c-format
msgid "internal error: failed to get vim list item %d"
msgstr "errore interno: non ho potuto ottenere l'elemento di vim list %d"
@@ -7045,3 +7014,4 @@ msgstr ""
"Impostazione di percorso non riuscita: sys.path non è una Lista\n"
"Dovresti aggiungere vim.VIM_SPECIAL_PATH a sys.path"
+282
View File
@@ -0,0 +1,282 @@
# Latvian Translation for Vim vim:set foldmethod=marker:
#
# Do ":help uganda" in Vim to read copying and usage conditions.
# Do ":help credits" in Vim to see a list of people who contributed.
#
# FIRST AUTHOR Valdis Vitolins <valdis.vitolins@odo.lv>, 2017.
#
#
msgid ""
msgstr ""
"Project-Id-Version: Vim (Latvian)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-03 18:03+0100\n"
"PO-Revision-Date: 2017-05-03 18:08+0300\n"
"Last-Translator: Valdis Vītoliņš <valdis.vitolins@odo.lv>\n"
"Language-Team: Bram Moolenaar <Bram@vim.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lv\n"
"X-Generator: Poedit 1.8.7.1\n"
#, c-format
msgid "E96: Can not diff more than %ld buffers"
msgstr "E96: Nevar salīdzināt vairāk kā %ld buferus"
msgid "E101: More than two buffers in diff mode, don't know which one to use"
msgstr "E101: Vairāk par vienu buferi diff režīmā, nav skaidrs, kuru izmantot"
#, c-format
msgid "E102: Can't find buffer \"%s\""
msgstr "E102: Nevar atrast buferi \"%s\""
#, c-format
msgid "E738: Can't list variables for %s"
msgstr "E738: Nevar parādīt %s mainīgos"
#, c-format
msgid "E138: Can't write viminfo file %s!"
msgstr "E138: Nevar ierakstīt viminfo failu %s!"
msgid ""
"# You may edit it if you're careful!\n"
"\n"
msgstr ""
"# Ja rediģējat, esiet uzmanīgs!\n"
"\n"
msgid "E146: Regular expressions can't be delimited by letters"
msgstr "E146: Regulārās izteiksmes nedrīkst atdalīt ar burtiem"
msgid "E493: Backwards range given"
msgstr "E493: Uzdots pretējs diapazons"
msgid "Backwards range given, OK to swap"
msgstr "Diapazons pretējā secībā, OK lai apvērstu"
#, c-format
msgid "E185: Cannot find color scheme %s"
msgstr "E185: Nevar atrast krāsu shēmu %s"
msgid "Can't find temp file for conversion"
msgstr "Nevar atrast konvertējamo īslaicīgo failu"
msgid "can't read output of 'charconvert'"
msgstr "nevar nolasīt 'charconvert' izeju"
msgid "E506: Can't write to backup file (add ! to override)"
msgstr "E506: Nevar ierakstīt rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E508: Can't read file for backup (add ! to override)"
msgstr "E508: Nevar nolasīt rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E510: Can't make backup file (add ! to override)"
msgstr "E510: Nevar izveidot rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E214: Can't find temp file for writing"
msgstr "E214: Nevar atvērt īslaicīgo failu rakstīšanai"
msgid "E166: Can't open linked file for writing"
msgstr "E166: Nevar atvērt rakstīšanai saistīto failu"
msgid "E212: Can't open file for writing"
msgstr "E212: Nevar atvērt failu rakstīšanai"
msgid "E205: Patchmode: can't save original file"
msgstr "E205: Patchmode: nevar saglabāt oriģinālo failu"
msgid "E206: patchmode: can't touch empty original file"
msgstr "E206: patchmode: nevar izveidot jaunu oriģinālo failu"
msgid "E207: Can't delete backup file"
msgstr "E207: nevar izdzēst kopijas failu"
msgid "don't quit the editor until the file is successfully written!"
msgstr "neizejiet no redaktora pirms fails nav veiksmīgi saglabāts!"
msgid "E217: Can't execute autocommands for ALL events"
msgstr "E217: Nevar izpildīt autokomandu VISIEM notikumiem"
#, c-format
msgid "E482: Can't create file %s"
msgstr "E482: Nevar izveidot failu %s"
msgid "E483: Can't get temp file name"
msgstr "E483: Nevar iegūt īslaicīgā faila nosaukumu"
#, c-format
msgid "E484: Can't open file %s"
msgstr "E484: Nevar atvērt failu %s"
#, c-format
msgid "E485: Can't read file %s"
msgstr "E485: Nevar nolasīt failu %s"
#, c-format
msgid "E40: Can't open errorfile %s"
msgstr "E40: Nevar atvērt kļūdu failu %s"
msgid "E255: Couldn't read in sign data!"
msgstr "E255: Nevar nolasīt zīmes datus!"
#, c-format
msgid "E254: Cannot allocate color %s"
msgstr "E254: Nevar izdalīt krāsu %s"
#, c-format
msgid "E616: vim_SelFile: can't get font %s"
msgstr "E616: vim_SelFile: nevar iegūt fontu %s"
msgid "E614: vim_SelFile: can't return to current directory"
msgstr "E614: vim_SelFile: nevar atgriezties uz tekošo mapi"
msgid "E615: vim_SelFile: can't get current directory"
msgstr "E615: vim_SelFile: nevar iegūt tekošo mapi"
msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
msgstr "Vim E458: Nevar izveidot krāsu karti, iespējams, ir kāda nepareiza krāsa"
#, c-format
msgid "E624: Can't open file \"%s\""
msgstr "E624: Nevar atvērt failu \"%s\""
#, c-format
msgid "E457: Can't read PostScript resource file \"%s\""
msgstr "E457: Nevar nolasīt PostScript resursu failu \"%s\""
msgid "E324: Can't open PostScript output file"
msgstr "E324: Nevar atvērt PostScript izejas failu"
#, c-format
msgid "E456: Can't open file \"%s\""
msgstr "E456: Nevar atrast failu \"%s\""
msgid "E456: Can't find PostScript resource file \"prolog.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"prolog.ps\""
msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"cidfont.ps\""
#, c-format
msgid "E456: Can't find PostScript resource file \"%s.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"%s.ps\""
msgid "couldn't open buffer"
msgstr "nevar atvērt buferi"
msgid "can't delete OutputObject attributes"
msgstr "nevar izdzēst OutputObject vērtības"
msgid "--literal\t\tDon't expand wildcards"
msgstr "--literal\t\tNeizvērst aizstājējzīmes"
msgid "-f or --nofork\tForeground: Don't fork when starting GUI"
msgstr "-f jeb --nofork\tPriekšplānā: startējot GUI, neveidot jaunu pavedienu"
msgid "-f\t\t\tDon't use newcli to open window"
msgstr "-f\t\t\tAtverot logu, neveidot jaunu klientu"
msgid "--noplugin\t\tDon't load plugin scripts"
msgstr "--noplugin\t\tNeielādēt spraudņu skriptus"
msgid "--remote-silent <files> Same, don't complain if there is no server"
msgstr "--remote-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
msgid "--remote-wait-silent <files> Same, don't complain if there is no server"
msgstr "--remote-wait-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <krāsa>\tLietot <krāsa> kā fonu (arī: -bg)"
msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
msgstr "-foreground <krāsa>\tLietot <krāsa> normālam tekstam (arī: -fg)"
msgid "+reverse\t\tDon't use reverse video (also: +rv)"
msgstr "+reverse\t\tNelietot reversu video (arī: +rv)"
msgid "E288: input method doesn't support any style"
msgstr "E288: ievades veids neatbalsta nevienu stilu"
msgid "E289: input method doesn't support my preedit type"
msgstr "E289: ievades veids neatbalsta šādu preedit veidu"
msgid "E298: Didn't get block nr 0?"
msgstr "E298: Neizdevās iegūt bloku nr 0?"
msgid "E298: Didn't get block nr 1?"
msgstr "E298: Neizdevās iegūt blok nr 1?"
msgid "E298: Didn't get block nr 2?"
msgstr "E298: Neizdevās iegūt bloku nr 2?"
msgid "E304: ml_upd_block0(): Didn't get block 0??"
msgstr "E304: ml_upd_block0(): Neizdevās iegūt bloku 0??"
msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
msgstr "Messages maintainer: Valdis Vitolins <valdis.vitolins@odo.lv>"
msgid "Keys don't match!"
msgstr "Atslēgas neatbilst!"
#, c-format
msgid "E344: Can't find directory \"%s\" in cdpath"
msgstr "E344: cdpath nevar atrast mapi \"%s\""
#, c-format
msgid "E345: Can't find file \"%s\" in path"
msgstr "E345: ceļā nevar atrast failu \"%s\""
msgid "E597: can't select fontset"
msgstr "E597: nevar izvēlēties fontu kopu"
msgid "E533: can't select wide font"
msgstr "E533: nevar izvēlēties plato fontu"
msgid "VIM: Can't open window!\n"
msgstr "VIM: Nevar atvērt logu!\n"
msgid "E388: Couldn't find definition"
msgstr "E388: neatradu definīciju"
msgid "E389: Couldn't find pattern"
msgstr "E389: neatradu šablonu"
#, c-format
msgid "Unrecognized or duplicate item in %s line %d: %s"
msgstr "Neatpazīts vai dublēts vienums %s rindā %d: %s"
#, c-format
msgid "Unrecognized flags in %s line %d: %s"
msgstr "Neatpazīti karodziņi %s rindā %d: %s"
#, c-format
msgid "E781: .sug file doesn't match .spl file: %s"
msgstr "E781: .sug fails neatbilst .spl failam: %s"
#, c-format
msgid "E394: Didn't find region item for %s"
msgstr "E394: Neatradu vienuma %s reģionu"
msgid "E419: FG color unknown"
msgstr "E419: Nezināma priekšplāna krāsa"
msgid "E420: BG color unknown"
msgstr "E420: Nezināma fona krāsa"
#, c-format
msgid "E421: Color name or number not recognized: %s"
msgstr "E421: Nezināms krāsas %s nosaukums vai numurs"
msgid "E434: Can't find tag pattern"
msgstr "E434: Neatradu tagu paraugu"
msgid "E435: Couldn't find tag, just guessing!"
msgstr "E435: Neatradu tagu, mēģinu uzminēt!"
msgid "E442: Can't split topleft and botright at the same time"
msgstr "E442: Nevar sadalīt kreiso augšu un labo apakšu vienlaicīgi"
#, c-format
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Failu \"%s\" ceļā nevar atrast"
+2659 -1880
View File
File diff suppressed because it is too large Load Diff
+172 -171
View File
@@ -64,206 +64,207 @@ pum_display(
win_T *pvwin;
#endif
redo:
def_width = PUM_DEF_WIDTH;
max_width = 0;
kind_width = 0;
extra_width = 0;
above_row = 0;
below_row = cmdline_row;
do
{
def_width = PUM_DEF_WIDTH;
max_width = 0;
kind_width = 0;
extra_width = 0;
above_row = 0;
below_row = cmdline_row;
/* Pretend the pum is already there to avoid that must_redraw is set when
* 'cuc' is on. */
pum_array = (pumitem_T *)1;
validate_cursor_col();
pum_array = NULL;
/* Pretend the pum is already there to avoid that must_redraw is set
* when 'cuc' is on. */
pum_array = (pumitem_T *)1;
validate_cursor_col();
pum_array = NULL;
row = curwin->w_wrow + W_WINROW(curwin);
row = curwin->w_wrow + W_WINROW(curwin);
#if defined(FEAT_QUICKFIX)
FOR_ALL_WINDOWS(pvwin)
if (pvwin->w_p_pvw)
break;
if (pvwin != NULL)
{
if (W_WINROW(pvwin) < W_WINROW(curwin))
above_row = W_WINROW(pvwin) + pvwin->w_height;
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
below_row = W_WINROW(pvwin);
}
FOR_ALL_WINDOWS(pvwin)
if (pvwin->w_p_pvw)
break;
if (pvwin != NULL)
{
if (W_WINROW(pvwin) < W_WINROW(curwin))
above_row = W_WINROW(pvwin) + pvwin->w_height;
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
below_row = W_WINROW(pvwin);
}
#endif
/*
* Figure out the size and position of the pum.
*/
if (size < PUM_DEF_HEIGHT)
pum_height = size;
else
pum_height = PUM_DEF_HEIGHT;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
/* Put the pum below "row" if possible. If there are few lines decide on
* where there is more room. */
if (row + 2 >= below_row - pum_height
&& row - above_row > (below_row - above_row) / 2)
{
/* pum above "row" */
/* Leave two lines of context if possible */
if (curwin->w_wrow - curwin->w_cline_row >= 2)
context_lines = 2;
else
context_lines = curwin->w_wrow - curwin->w_cline_row;
if (row >= size + context_lines)
{
pum_row = row - size - context_lines;
/*
* Figure out the size and position of the pum.
*/
if (size < PUM_DEF_HEIGHT)
pum_height = size;
}
else
{
pum_row = 0;
pum_height = row - context_lines;
}
if (p_ph > 0 && pum_height > p_ph)
{
pum_row += pum_height - p_ph;
pum_height = p_ph;
}
}
else
{
/* pum below "row" */
/* Leave two lines of context if possible */
if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
context_lines = 3;
else
context_lines = curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow;
pum_row = row + context_lines;
if (size > below_row - pum_row)
pum_height = below_row - pum_row;
else
pum_height = size;
pum_height = PUM_DEF_HEIGHT;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
}
/* don't display when we only have room for one line */
if (pum_height < 1 || (pum_height == 1 && size > 1))
return;
/* Put the pum below "row" if possible. If there are few lines decide
* on where there is more room. */
if (row + 2 >= below_row - pum_height
&& row - above_row > (below_row - above_row) / 2)
{
/* pum above "row" */
/* Leave two lines of context if possible */
if (curwin->w_wrow - curwin->w_cline_row >= 2)
context_lines = 2;
else
context_lines = curwin->w_wrow - curwin->w_cline_row;
if (row >= size + context_lines)
{
pum_row = row - size - context_lines;
pum_height = size;
}
else
{
pum_row = 0;
pum_height = row - context_lines;
}
if (p_ph > 0 && pum_height > p_ph)
{
pum_row += pum_height - p_ph;
pum_height = p_ph;
}
}
else
{
/* pum below "row" */
/* Leave two lines of context if possible */
if (curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow >= 3)
context_lines = 3;
else
context_lines = curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow;
pum_row = row + context_lines;
if (size > below_row - pum_row)
pum_height = below_row - pum_row;
else
pum_height = size;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
}
/* don't display when we only have room for one line */
if (pum_height < 1 || (pum_height == 1 && size > 1))
return;
#if defined(FEAT_QUICKFIX)
/* If there is a preview window at the above avoid drawing over it. */
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
{
pum_row += above_row;
pum_height -= above_row;
}
#endif
/* Compute the width of the widest match and the widest extra. */
for (i = 0; i < size; ++i)
{
w = vim_strsize(array[i].pum_text);
if (max_width < w)
max_width = w;
if (array[i].pum_kind != NULL)
/* If there is a preview window at the above avoid drawing over it. */
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
{
w = vim_strsize(array[i].pum_kind) + 1;
if (kind_width < w)
kind_width = w;
pum_row += above_row;
pum_height -= above_row;
}
if (array[i].pum_extra != NULL)
#endif
/* Compute the width of the widest match and the widest extra. */
for (i = 0; i < size; ++i)
{
w = vim_strsize(array[i].pum_extra) + 1;
if (extra_width < w)
extra_width = w;
w = vim_strsize(array[i].pum_text);
if (max_width < w)
max_width = w;
if (array[i].pum_kind != NULL)
{
w = vim_strsize(array[i].pum_kind) + 1;
if (kind_width < w)
kind_width = w;
}
if (array[i].pum_extra != NULL)
{
w = vim_strsize(array[i].pum_extra) + 1;
if (extra_width < w)
extra_width = w;
}
}
}
pum_base_width = max_width;
pum_kind_width = kind_width;
/* Calculate column */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
col = W_WINCOL(curwin) + W_WIDTH(curwin) - curwin->w_wcol - 1;
else
#endif
col = W_WINCOL(curwin) + curwin->w_wcol;
/* if there are more items than room we need a scrollbar */
if (pum_height < size)
{
pum_scrollbar = 1;
++max_width;
}
else
pum_scrollbar = 0;
if (def_width < max_width)
def_width = max_width;
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
#ifdef FEAT_RIGHTLEFT
&& !curwin->w_p_rl)
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
#endif
))
{
/* align pum column with "col" */
pum_col = col;
pum_base_width = max_width;
pum_kind_width = kind_width;
/* Calculate column */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_width = pum_col - pum_scrollbar + 1;
col = curwin->w_wincol + curwin->w_width - curwin->w_wcol - 1;
else
#endif
pum_width = Columns - pum_col - pum_scrollbar;
col = curwin->w_wincol + curwin->w_wcol;
if (pum_width > max_width + kind_width + extra_width + 1
&& pum_width > PUM_DEF_WIDTH)
/* if there are more items than room we need a scrollbar */
if (pum_height < size)
{
pum_width = max_width + kind_width + extra_width + 1;
if (pum_width < PUM_DEF_WIDTH)
pum_width = PUM_DEF_WIDTH;
pum_scrollbar = 1;
++max_width;
}
}
else if (Columns < def_width)
{
/* not enough room, will use what we have */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = Columns - 1;
else
#endif
pum_col = 0;
pum_width = Columns - 1;
}
else
{
if (max_width > PUM_DEF_WIDTH)
max_width = PUM_DEF_WIDTH; /* truncate */
pum_scrollbar = 0;
if (def_width < max_width)
def_width = max_width;
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = max_width - 1;
else
&& !curwin->w_p_rl)
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
#endif
pum_col = Columns - max_width;
pum_width = max_width - pum_scrollbar;
}
))
{
/* align pum column with "col" */
pum_col = col;
pum_array = array;
pum_size = size;
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_width = pum_col - pum_scrollbar + 1;
else
#endif
pum_width = Columns - pum_col - pum_scrollbar;
/* Set selected item and redraw. If the window size changed need to redo
* the positioning. Limit this to two times, when there is not much
* room the window size will keep changing. */
if (pum_set_selected(selected, redo_count) && ++redo_count <= 2)
goto redo;
if (pum_width > max_width + kind_width + extra_width + 1
&& pum_width > PUM_DEF_WIDTH)
{
pum_width = max_width + kind_width + extra_width + 1;
if (pum_width < PUM_DEF_WIDTH)
pum_width = PUM_DEF_WIDTH;
}
}
else if (Columns < def_width)
{
/* not enough room, will use what we have */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = Columns - 1;
else
#endif
pum_col = 0;
pum_width = Columns - 1;
}
else
{
if (max_width > PUM_DEF_WIDTH)
max_width = PUM_DEF_WIDTH; /* truncate */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = max_width - 1;
else
#endif
pum_col = Columns - max_width;
pum_width = max_width - pum_scrollbar;
}
pum_array = array;
pum_size = size;
/* Set selected item and redraw. If the window size changed need to
* redo the positioning. Limit this to two times, when there is not
* much room the window size will keep changing. */
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
}
/*
@@ -312,7 +313,7 @@ pum_redraw(void)
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
{
if (pum_col < W_WINCOL(curwin) + W_WIDTH(curwin) - 1)
if (pum_col < curwin->w_wincol + curwin->w_width - 1)
screen_putchar(' ', row, pum_col + 1, attr);
}
else
+2 -2
View File
@@ -40,9 +40,9 @@ void channel_set_nonblock(channel_T *channel, ch_part_T part);
int channel_send(channel_T *channel, ch_part_T part, char_u *buf_arg, int len_arg, char *fun);
void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval);
void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval);
int channel_poll_setup(int nfd_in, void *fds_in);
int channel_poll_setup(int nfd_in, void *fds_in, int *towait);
int channel_poll_check(int ret_in, void *fds_in);
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in);
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in, struct timeval *tv, struct timeval **tvp);
int channel_select_check(int ret_in, void *rfds_in, void *wfds_in);
int channel_parse_messages(void);
int channel_any_readahead(void);
+2
View File
@@ -51,6 +51,8 @@ void ex_redraw(exarg_T *eap);
int vim_mkdir_emsg(char_u *name, int prot);
FILE *open_exfile(char_u *fname, int forceit, char *mode);
void update_topline_cursor(void);
int save_current_state(save_state_T *sst);
void restore_current_state(save_state_T *sst);
void ex_normal(exarg_T *eap);
void exec_normal_cmd(char_u *cmd, int remap, int silent);
void exec_normal(int was_typed);
-2
View File
@@ -235,8 +235,6 @@ gui_mch_find_dialog(exarg_T *eap);
gui_mch_replace_dialog(exarg_T *eap);
void
im_set_control(int enable);
void
gui_macvim_set_imstyle(long imstyle);
void *
gui_macvim_add_channel(channel_T *channel, ch_part_T part);
+1
View File
@@ -71,6 +71,7 @@ int mb_lefthalve(int row, int col);
int mb_fix_col(int col, int row);
char_u *enc_skip(char_u *p);
char_u *enc_canonize(char_u *enc);
char_u *enc_locale_env(char *locale);
char_u *enc_locale(void);
int encname2codepage(char_u *name);
void *my_iconv_open(char_u *to, char_u *from);
+2 -1
View File
@@ -1,5 +1,6 @@
/* syntax.c */
void syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm);
void syn_set_timeout(proftime_T *tm);
void syntax_start(win_T *wp, linenr_T lnum);
void syn_stack_free_all(synblock_T *block);
void syn_stack_apply_changes(buf_T *buf);
void syntax_end_parsing(linenr_T lnum);
+3 -2
View File
@@ -267,10 +267,11 @@ OpenPTY(char **ttyn)
}
#endif
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) \
&& !(defined(MACOS_X) && !defined(MAC_OS_X_VERSION_10_6))
/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
* Same for Mac OS X Leopard. */
* Same for Mac OS X Leopard (10.5). */
#define PTY_DONE
int
OpenPTY(char **ttyn)
+3 -3
View File
@@ -443,8 +443,8 @@ parse_efm_option(char_u *efm)
i = (FMT_PATTERNS * 3) + ((int)STRLEN(efm) << 2);
for (round = FMT_PATTERNS; round > 0; )
i += (int)STRLEN(fmt_pat[--round].pattern);
#ifdef COLON_IN_FILENAME
i += 12; /* "%f" can become twelve chars longer */
#ifdef BACKSLASH_IN_FILENAME
i += 12; /* "%f" can become twelve chars longer (see efm_to_regpat) */
#else
i += 2; /* "%f" can become two chars longer */
#endif
@@ -3148,7 +3148,7 @@ ex_copen(exarg_T *eap)
{
if (cmdmod.split & WSP_VERT)
{
if (height != W_WIDTH(win))
if (height != win->w_width)
win_setwidth(height);
}
else if (height != win->w_height)
+121 -111
View File
@@ -131,7 +131,7 @@ static void fold_line(win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T
static void fill_foldcolumn(char_u *p, win_T *wp, int closed, linenr_T lnum);
static void copy_text_attr(int off, char_u *buf, int len, int attr);
#endif
static int win_line(win_T *, linenr_T, int, int, int nochange, proftime_T *syntax_tm);
static int win_line(win_T *, linenr_T, int, int, int nochange);
static int char_needs_redraw(int off_from, int off_to, int cols);
static void draw_vsep_win(win_T *wp, int row);
#ifdef FEAT_STL_OPT
@@ -622,8 +622,8 @@ update_screen(int type_arg)
else
{
wp->w_redr_type = NOT_VALID;
if (W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp)
<= msg_scrolled)
if (W_WINROW(wp) + wp->w_height + wp->w_status_height
<= msg_scrolled)
wp->w_redr_status = TRUE;
}
}
@@ -930,6 +930,7 @@ update_single_line(win_T *wp, linenr_T lnum)
#ifdef SYN_TIME_LIMIT
/* Set the time limit to 'redrawtime'. */
profile_setlimit(p_rdt, &syntax_tm);
syn_set_timeout(&syntax_tm);
#endif
update_prepare();
@@ -944,13 +945,7 @@ update_single_line(win_T *wp, linenr_T lnum)
start_search_hl();
prepare_search_hl(wp, lnum);
# endif
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE,
#ifdef SYN_TIME_LIMIT
&syntax_tm
#else
NULL
#endif
);
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE);
# if defined(FEAT_SEARCH_EXTRA)
end_search_hl();
# endif
@@ -960,6 +955,10 @@ update_single_line(win_T *wp, linenr_T lnum)
}
update_finish();
#ifdef SYN_TIME_LIMIT
syn_set_timeout(NULL);
#endif
}
need_cursor_line_redraw = FALSE;
}
@@ -1805,6 +1804,7 @@ win_update(win_T *wp)
#ifdef SYN_TIME_LIMIT
/* Set the time limit to 'redrawtime'. */
profile_setlimit(p_rdt, &syntax_tm);
syn_set_timeout(&syntax_tm);
#endif
#ifdef FEAT_FOLDING
win_foldinfo.fi_level = 0;
@@ -2109,13 +2109,7 @@ win_update(win_T *wp)
/*
* Display one line.
*/
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0,
#ifdef SYN_TIME_LIMIT
&syntax_tm
#else
NULL
#endif
);
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0);
#ifdef FEAT_FOLDING
wp->w_lines[idx].wl_folded = FALSE;
@@ -2217,10 +2211,10 @@ win_update(win_T *wp)
/*
* Last line isn't finished: Display "@@@" in the last screen line.
*/
screen_puts_len((char_u *)"@@", 2, scr_row, W_WINCOL(wp),
screen_puts_len((char_u *)"@@", 2, scr_row, wp->w_wincol,
HL_ATTR(HLF_AT));
screen_fill(scr_row, scr_row + 1,
(int)W_WINCOL(wp) + 2, (int)W_ENDCOL(wp),
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
'@', ' ', HL_ATTR(HLF_AT));
set_empty_rows(wp, srow);
wp->w_botline = lnum;
@@ -2275,6 +2269,10 @@ win_update(win_T *wp)
win_draw_end(wp, '~', ' ', row, wp->w_height, HLF_EOB);
}
#ifdef SYN_TIME_LIMIT
syn_set_timeout(NULL);
#endif
/* Reset the type of redrawing required, the window has been updated. */
wp->w_redr_type = 0;
#ifdef FEAT_DIFF
@@ -2355,8 +2353,8 @@ win_draw_end(
if (n > 0)
{
/* draw the fold column at the right */
if (n > W_WIDTH(wp))
n = W_WIDTH(wp);
if (n > wp->w_width)
n = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - n, (int)W_ENDCOL(wp),
' ', ' ', HL_ATTR(HLF_FC));
@@ -2368,8 +2366,8 @@ win_draw_end(
int nn = n + 2;
/* draw the sign column left of the fold column */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - nn, (int)W_ENDCOL(wp) - n,
' ', ' ', HL_ATTR(HLF_SC));
@@ -2377,7 +2375,7 @@ win_draw_end(
}
# endif
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp), W_ENDCOL(wp) - 1 - FDC_OFF,
wp->w_wincol, W_ENDCOL(wp) - 1 - FDC_OFF,
c2, c2, HL_ATTR(hl));
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - 1 - FDC_OFF, W_ENDCOL(wp) - FDC_OFF,
@@ -2394,7 +2392,7 @@ win_draw_end(
if (n > wp->w_width)
n = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp), (int)W_WINCOL(wp) + n,
wp->w_wincol, (int)wp->w_wincol + n,
cmdwin_type, ' ', HL_ATTR(HLF_AT));
}
#endif
@@ -2404,10 +2402,10 @@ win_draw_end(
int nn = n + fdc;
/* draw the fold column at the left */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
wp->w_wincol + n, (int)wp->w_wincol + nn,
' ', ' ', HL_ATTR(HLF_FC));
n = nn;
}
@@ -2418,16 +2416,16 @@ win_draw_end(
int nn = n + 2;
/* draw the sign column after the fold column */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
wp->w_wincol + n, (int)wp->w_wincol + nn,
' ', ' ', HL_ATTR(HLF_SC));
n = nn;
}
#endif
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + FDC_OFF, (int)W_ENDCOL(wp),
wp->w_wincol + FDC_OFF, (int)W_ENDCOL(wp),
c1, c2, HL_ATTR(hl));
}
set_empty_rows(wp, row);
@@ -2484,7 +2482,7 @@ text_to_screenline(win_T *wp, char_u *text, int col)
{
cells = (*mb_ptr2cells)(p);
c_len = (*mb_ptr2len)(p);
if (col + cells > W_WIDTH(wp)
if (col + cells > wp->w_width
# ifdef FEAT_RIGHTLEFT
- (wp->w_p_rl ? col : 0)
# endif
@@ -2568,8 +2566,8 @@ text_to_screenline(win_T *wp, char_u *text, int col)
{
int len = (int)STRLEN(text);
if (len > W_WIDTH(wp) - col)
len = W_WIDTH(wp) - col;
if (len > wp->w_width - col)
len = wp->w_width - col;
if (len > 0)
{
#ifdef FEAT_RIGHTLEFT
@@ -2595,7 +2593,7 @@ compute_foldcolumn(win_T *wp, int col)
{
int fdc = wp->w_p_fdc;
int wmw = wp == curwin && p_wmw == 0 ? 1 : p_wmw;
int wwidth = W_WIDTH(wp);
int wwidth = wp->w_width;
if (fdc > wwidth - (col + wmw))
fdc = wwidth - (col + wmw);
@@ -2664,11 +2662,11 @@ fold_line(
{
int i;
copy_text_attr(off + W_WIDTH(wp) - fdc - col, buf, fdc,
copy_text_attr(off + wp->w_width - fdc - col, buf, fdc,
HL_ATTR(HLF_FC));
/* reverse the fold column */
for (i = 0; i < fdc; ++i)
ScreenLines[off + W_WIDTH(wp) - i - 1 - col] = buf[i];
ScreenLines[off + wp->w_width - i - 1 - col] = buf[i];
}
else
#endif
@@ -2679,7 +2677,7 @@ fold_line(
#ifdef FEAT_RIGHTLEFT
# define RL_MEMSET(p, v, l) if (wp->w_p_rl) \
for (ri = 0; ri < l; ++ri) \
ScreenAttrs[off + (W_WIDTH(wp) - (p) - (l)) + ri] = v; \
ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
else \
for (ri = 0; ri < l; ++ri) \
ScreenAttrs[off + (p) + ri] = v
@@ -2690,13 +2688,13 @@ fold_line(
/* Set all attributes of the 'number' or 'relativenumber' column and the
* text */
RL_MEMSET(col, HL_ATTR(HLF_FL), W_WIDTH(wp) - col);
RL_MEMSET(col, HL_ATTR(HLF_FL), wp->w_width - col);
#ifdef FEAT_SIGNS
/* If signs are being displayed, add two spaces. */
if (signcolumn_on(wp))
{
len = W_WIDTH(wp) - col;
len = wp->w_width - col;
if (len > 0)
{
if (len > 2)
@@ -2704,7 +2702,7 @@ fold_line(
# ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
/* the line number isn't reversed */
copy_text_attr(off + W_WIDTH(wp) - len - col,
copy_text_attr(off + wp->w_width - len - col,
(char_u *)" ", len, HL_ATTR(HLF_FL));
else
# endif
@@ -2719,7 +2717,7 @@ fold_line(
*/
if (wp->w_p_nu || wp->w_p_rnu)
{
len = W_WIDTH(wp) - col;
len = wp->w_width - col;
if (len > 0)
{
int w = number_width(wp);
@@ -2749,7 +2747,7 @@ fold_line(
#ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
/* the line number isn't reversed */
copy_text_attr(off + W_WIDTH(wp) - len - col, buf, len,
copy_text_attr(off + wp->w_width - len - col, buf, len,
HL_ATTR(HLF_FL));
else
#endif
@@ -2777,7 +2775,7 @@ fold_line(
if (wp->w_p_rl)
col -= txtcol;
#endif
while (col < W_WIDTH(wp)
while (col < wp->w_width
#ifdef FEAT_RIGHTLEFT
- (wp->w_p_rl ? txtcol : 0)
#endif
@@ -2839,14 +2837,14 @@ fold_line(
if (VIsual_mode == Ctrl_V)
{
/* Visual block mode: highlight the chars part of the block */
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)wp->w_width)
{
if (wp->w_old_cursor_lcol != MAXCOL
&& wp->w_old_cursor_lcol + txtcol
< (colnr_T)W_WIDTH(wp))
< (colnr_T)wp->w_width)
len = wp->w_old_cursor_lcol;
else
len = W_WIDTH(wp) - txtcol;
len = wp->w_width - txtcol;
RL_MEMSET(wp->w_old_cursor_fcol + txtcol, HL_ATTR(HLF_V),
len - (int)wp->w_old_cursor_fcol);
}
@@ -2854,7 +2852,7 @@ fold_line(
else
{
/* Set all attributes of the text */
RL_MEMSET(txtcol, HL_ATTR(HLF_V), W_WIDTH(wp) - txtcol);
RL_MEMSET(txtcol, HL_ATTR(HLF_V), wp->w_width - txtcol);
}
}
}
@@ -2874,7 +2872,7 @@ fold_line(
txtcol -= wp->w_skipcol;
else
txtcol -= wp->w_leftcol;
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
if (txtcol >= 0 && txtcol < wp->w_width)
ScreenAttrs[off + txtcol] = hl_combine_attr(
ScreenAttrs[off + txtcol], HL_ATTR(HLF_MC));
txtcol = old_txtcol;
@@ -2890,14 +2888,14 @@ fold_line(
txtcol -= wp->w_skipcol;
else
txtcol -= wp->w_leftcol;
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
if (txtcol >= 0 && txtcol < wp->w_width)
ScreenAttrs[off + txtcol] = hl_combine_attr(
ScreenAttrs[off + txtcol], HL_ATTR(HLF_CUC));
}
#endif
screen_line(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
(int)W_WIDTH(wp), FALSE);
screen_line(row + W_WINROW(wp), wp->w_wincol, (int)wp->w_width,
(int)wp->w_width, FALSE);
/*
* Update w_cline_height and w_cline_folded if the cursor line was
@@ -3000,8 +2998,7 @@ win_line(
linenr_T lnum,
int startrow,
int endrow,
int nochange UNUSED, /* not updating for changed text */
proftime_T *syntax_tm UNUSED)
int nochange UNUSED) /* not updating for changed text */
{
int col = 0; /* visual column on screen */
unsigned off; /* offset in ScreenLines/ScreenAttrs */
@@ -3216,7 +3213,7 @@ win_line(
* error, stop syntax highlighting. */
save_did_emsg = did_emsg;
did_emsg = FALSE;
syntax_start(wp, lnum, syntax_tm);
syntax_start(wp, lnum);
if (did_emsg)
wp->w_s->b_syn_error = TRUE;
else
@@ -3614,7 +3611,7 @@ win_line(
# ifdef FEAT_SYN_HL
/* Need to restart syntax highlighting for this line. */
if (has_syntax)
syntax_start(wp, lnum, syntax_tm);
syntax_start(wp, lnum);
# endif
}
#endif
@@ -3727,7 +3724,7 @@ win_line(
/* Rightleft window: process the text in the normal direction, but put
* it in current_ScreenLine[] from right to left. Start at the
* rightmost column of the window. */
col = W_WIDTH(wp) - 1;
col = wp->w_width - 1;
off += col;
}
#endif
@@ -3966,7 +3963,7 @@ win_line(
n_extra = col + 1;
else
# endif
n_extra = W_WIDTH(wp) - col;
n_extra = wp->w_width - col;
char_attr = HL_ATTR(HLF_DED);
}
# endif
@@ -4019,7 +4016,7 @@ win_line(
#endif
)
{
screen_line(screen_row, W_WINCOL(wp), col, -(int)W_WIDTH(wp),
screen_line(screen_row, wp->w_wincol, col, -(int)wp->w_width,
HAS_RIGHTLEFT(wp->w_p_rl));
/* Pretend we have finished updating the window. Except when
* 'cursorcolumn' is set. */
@@ -4171,6 +4168,10 @@ win_line(
if (shl != &search_hl && cur != NULL)
cur = cur->next;
}
/* Only highlight one character after the last column. */
if (*ptr == NUL && (did_line_attr >= 1
|| (wp->w_p_list && lcs_eol_one == -1)))
search_attr = 0;
}
#endif
@@ -4288,7 +4289,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col <= 0) :
# endif
(col >= W_WIDTH(wp) - 1))
(col >= wp->w_width - 1))
&& (*mb_char2cells)(mb_c) == 2)
{
c = '>';
@@ -4489,7 +4490,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col <= 0) :
# endif
(col >= W_WIDTH(wp) - 1))
(col >= wp->w_width - 1))
&& (*mb_char2cells)(mb_c) == 2)
{
c = '>';
@@ -4706,7 +4707,7 @@ win_line(
/* TODO: is passing p for start of the line OK? */
n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
NULL) - 1;
if (c == TAB && n_extra + col > W_WIDTH(wp))
if (c == TAB && n_extra + col > wp->w_width)
n_extra = (int)wp->w_buffer->b_p_ts
- vcol % (int)wp->w_buffer->b_p_ts - 1;
@@ -4923,7 +4924,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col >= 0) :
# endif
(col < W_WIDTH(wp)))
(col < wp->w_width))
&& !(noinvcur
&& lnum == wp->w_cursor.lnum
&& (colnr_T)vcol == wp->w_virtcol)))
@@ -5034,7 +5035,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col >= 0) :
# endif
(col < W_WIDTH(wp))))
(col < wp->w_width)))
{
c = ' ';
--ptr; /* put it back at the NUL */
@@ -5057,7 +5058,7 @@ win_line(
# ifdef FEAT_CONCEAL
- boguscols
# endif
< W_WIDTH(wp))))
< wp->w_width)))
{
/* Highlight until the right side of the window */
c = ' ';
@@ -5067,7 +5068,9 @@ win_line(
++did_line_attr;
/* don't do search HL for the rest of the line */
if (line_attr != 0 && char_attr == search_attr && col > 0)
if (line_attr != 0 && char_attr == search_attr
&& (did_line_attr > 1
|| (wp->w_p_list && lcs_eol > 0)))
char_attr = line_attr;
# ifdef FEAT_DIFF
if (diff_hlf == HLF_TXD)
@@ -5178,7 +5181,7 @@ win_line(
{
# ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
wp->w_wcol = W_WIDTH(wp) - col + boguscols - 1;
wp->w_wcol = wp->w_width - col + boguscols - 1;
else
# endif
wp->w_wcol = col - boguscols;
@@ -5327,6 +5330,13 @@ win_line(
#ifdef FEAT_SEARCH_EXTRA
/* highlight 'hlsearch' match at end of line */
|| (prevcol_hl_flag == TRUE
# ifdef FEAT_SYN_HL
&& !(wp->w_p_cul && lnum == wp->w_cursor.lnum
&& !(wp == curwin && VIsual_active))
# endif
# ifdef FEAT_DIFF
&& diff_hlf == (hlf_T)0
# endif
# if defined(LINE_ATTR)
&& did_line_attr <= 1
# endif
@@ -5345,7 +5355,7 @@ win_line(
else
#endif
{
if (col >= W_WIDTH(wp))
if (col >= wp->w_width)
n = -1;
}
if (n != 0)
@@ -5449,7 +5459,7 @@ win_line(
if (((wp->w_p_cuc
&& (int)wp->w_virtcol >= VCOL_HLC - eol_hl_off
&& (int)wp->w_virtcol <
W_WIDTH(wp) * (row - startrow + 1) + v
wp->w_width * (row - startrow + 1) + v
&& lnum != wp->w_cursor.lnum)
|| draw_color_col)
# ifdef FEAT_RIGHTLEFT
@@ -5468,7 +5478,7 @@ win_line(
if (rightmost_vcol < color_cols[i])
rightmost_vcol = color_cols[i];
while (col < W_WIDTH(wp))
while (col < wp->w_width)
{
ScreenLines[off] = ' ';
#ifdef FEAT_MBYTE
@@ -5495,8 +5505,8 @@ win_line(
}
#endif
screen_line(screen_row, W_WINCOL(wp), col,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
row++;
/*
@@ -5526,7 +5536,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? col == 0 :
#endif
col == W_WIDTH(wp) - 1)
col == wp->w_width - 1)
&& (*ptr != NUL
|| (wp->w_p_list && lcs_eol_one > 0)
|| (n_extra && (c_extra != NUL || *p_extra != NUL))))
@@ -5791,7 +5801,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col < 0) :
#endif
(col >= W_WIDTH(wp)))
(col >= wp->w_width))
&& (*ptr != NUL
#ifdef FEAT_DIFF
|| filler_todo > 0
@@ -5801,12 +5811,12 @@ win_line(
)
{
#ifdef FEAT_CONCEAL
screen_line(screen_row, W_WINCOL(wp), col - boguscols,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col - boguscols,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
boguscols = 0;
#else
screen_line(screen_row, W_WINCOL(wp), col,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
#endif
++row;
++screen_row;
@@ -5843,7 +5853,7 @@ win_line(
#ifdef FEAT_DIFF
&& filler_todo <= 0
#endif
&& W_WIDTH(wp) == Columns)
&& wp->w_width == Columns)
{
/* Remember that the line wraps, used for modeless copy. */
LineWraps[screen_row - 1] = TRUE;
@@ -5880,7 +5890,7 @@ win_line(
* then output the same character again to let the
* terminal know about the wrap. If the terminal doesn't
* auto-wrap, we overwrite the character. */
if (screen_cur_col != W_WIDTH(wp))
if (screen_cur_col != wp->w_width)
screen_char(LineOffset[screen_row - 1]
+ (unsigned)Columns - 1,
screen_row - 1, (int)(Columns - 1));
@@ -5906,7 +5916,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
{
col = W_WIDTH(wp) - 1; /* col is not used if breaking! */
col = wp->w_width - 1; /* col is not used if breaking! */
off += col;
}
#endif
@@ -6903,9 +6913,9 @@ win_redr_status(win_T *wp)
len += (int)STRLEN(p + len);
}
this_ru_col = ru_col - (Columns - W_WIDTH(wp));
if (this_ru_col < (W_WIDTH(wp) + 1) / 2)
this_ru_col = (W_WIDTH(wp) + 1) / 2;
this_ru_col = ru_col - (Columns - wp->w_width);
if (this_ru_col < (wp->w_width + 1) / 2)
this_ru_col = (wp->w_width + 1) / 2;
if (this_ru_col <= 1)
{
p = (char_u *)"<"; /* No room for file name! */
@@ -6944,14 +6954,14 @@ win_redr_status(win_T *wp)
}
row = W_WINROW(wp) + wp->w_height;
screen_puts(p, row, W_WINCOL(wp), attr);
screen_fill(row, row + 1, len + W_WINCOL(wp),
this_ru_col + W_WINCOL(wp), fillchar, fillchar, attr);
screen_puts(p, row, wp->w_wincol, attr);
screen_fill(row, row + 1, len + wp->w_wincol,
this_ru_col + wp->w_wincol, fillchar, fillchar, attr);
if (get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL)
&& (int)(this_ru_col - len) > (int)(STRLEN(NameBuff) + 1))
screen_puts(NameBuff, row, (int)(this_ru_col - STRLEN(NameBuff)
- 1 + W_WINCOL(wp)), attr);
- 1 + wp->w_wincol), attr);
#ifdef FEAT_CMDL_INFO
win_redr_ruler(wp, TRUE);
@@ -7136,7 +7146,7 @@ win_redr_custom(
{
row = W_WINROW(wp) + wp->w_height;
fillchar = fillchar_status(&attr, wp);
maxwidth = W_WIDTH(wp);
maxwidth = wp->w_width;
if (draw_ruler)
{
@@ -7152,10 +7162,10 @@ win_redr_custom(
if (*stl++ != '(')
stl = p_ruf;
}
col = ru_col - (Columns - W_WIDTH(wp));
if (col < (W_WIDTH(wp) + 1) / 2)
col = (W_WIDTH(wp) + 1) / 2;
maxwidth = W_WIDTH(wp) - col;
col = ru_col - (Columns - wp->w_width);
if (col < (wp->w_width + 1) / 2)
col = (wp->w_width + 1) / 2;
maxwidth = wp->w_width - col;
if (!wp->w_status_height)
{
row = Rows - 1;
@@ -7180,7 +7190,7 @@ win_redr_custom(
# endif
}
col += W_WINCOL(wp);
col += wp->w_wincol;
}
if (maxwidth <= 0)
@@ -9448,11 +9458,11 @@ setcursor(void)
{
validate_cursor();
windgoto(W_WINROW(curwin) + curwin->w_wrow,
W_WINCOL(curwin) + (
curwin->w_wincol + (
#ifdef FEAT_RIGHTLEFT
/* With 'rightleft' set and the cursor on a double-wide
* character, position it on the leftmost column. */
curwin->w_p_rl ? ((int)W_WIDTH(curwin) - curwin->w_wcol - (
curwin->w_p_rl ? ((int)curwin->w_width - curwin->w_wcol - (
# ifdef FEAT_MBYTE
(has_mbyte
&& (*mb_ptr2cells)(ml_get_cursor()) == 2
@@ -9520,12 +9530,12 @@ win_ins_lines(
{
wp->w_redr_status = TRUE;
redraw_cmdline = TRUE;
nextrow = W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp);
nextrow = W_WINROW(wp) + wp->w_height + wp->w_status_height;
lastrow = nextrow + line_count;
if (lastrow > Rows)
lastrow = Rows;
screen_fill(nextrow - line_count, lastrow - line_count,
W_WINCOL(wp), (int)W_ENDCOL(wp),
wp->w_wincol, (int)W_ENDCOL(wp),
' ', ' ', 0);
}
@@ -9636,7 +9646,7 @@ win_do_lines(
if (row + line_count >= wp->w_height)
{
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height,
W_WINCOL(wp), (int)W_ENDCOL(wp),
wp->w_wincol, (int)W_ENDCOL(wp),
' ', ' ', 0);
return OK;
}
@@ -9658,7 +9668,7 @@ win_do_lines(
* a character in the lower right corner of the scroll region may cause a
* scroll-up .
*/
if (scroll_region || W_WIDTH(wp) != Columns)
if (scroll_region || wp->w_width != Columns)
{
if (scroll_region && (wp->w_width == Columns || *T_CSV != NUL))
scroll_region_set(wp, row);
@@ -10760,21 +10770,21 @@ redraw_win_toolbar(win_T *wp)
/* TODO: use fewer spaces if there is not enough room */
for (menu = wp->w_winbar->children;
menu != NULL && col < W_WIDTH(wp); menu = menu->next)
menu != NULL && col < wp->w_width; menu = menu->next)
{
space_to_screenline(off + col, fill_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
if (col > 1)
{
space_to_screenline(off + col, fill_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
}
wp->w_winbar_items[item_idx].wb_startcol = col;
space_to_screenline(off + col, button_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
next_col = text_to_screenline(wp, menu->name, col);
@@ -10787,20 +10797,20 @@ redraw_win_toolbar(win_T *wp)
wp->w_winbar_items[item_idx].wb_menu = menu;
++item_idx;
if (col >= W_WIDTH(wp))
if (col >= wp->w_width)
break;
space_to_screenline(off + col, button_attr);
++col;
}
while (col < W_WIDTH(wp))
while (col < wp->w_width)
{
space_to_screenline(off + col, fill_attr);
++col;
}
wp->w_winbar_items[item_idx].wb_menu = NULL; /* end marker */
screen_line(wp->w_winrow, W_WINCOL(wp), (int)W_WIDTH(wp),
(int)W_WIDTH(wp), FALSE);
screen_line(wp->w_winrow, wp->w_wincol, (int)wp->w_width,
(int)wp->w_width, FALSE);
}
#endif
/*
@@ -10931,8 +10941,8 @@ win_redr_ruler(win_T *wp, int always)
{
row = W_WINROW(wp) + wp->w_height;
fillchar = fillchar_status(&attr, wp);
off = W_WINCOL(wp);
width = W_WIDTH(wp);
off = wp->w_wincol;
width = wp->w_width;
}
else
{
+15 -10
View File
@@ -2617,7 +2617,7 @@ showmatch(
if (!curwin->w_p_wrap)
getvcol(curwin, lpos, NULL, &vcol, NULL);
if (curwin->w_p_wrap || (vcol >= curwin->w_leftcol
&& vcol < curwin->w_leftcol + W_WIDTH(curwin)))
&& vcol < curwin->w_leftcol + curwin->w_width))
{
mpos = *lpos; /* save the pos, update_screen() may change it */
save_cursor = curwin->w_cursor;
@@ -4620,7 +4620,7 @@ current_quote(
#endif /* FEAT_TEXTOBJ */
static int is_one_char(char_u *pattern, int move, pos_T *cur);
static int is_one_char(char_u *pattern, int move, pos_T *cur, int direction);
/*
* Find next search match under cursor, cursor at end.
@@ -4641,6 +4641,7 @@ current_search(
int flags = 0;
pos_T save_VIsual = VIsual;
int one_char;
int direction = forward ? FORWARD : BACKWARD;
/* wrapping should not occur */
p_ws = FALSE;
@@ -4667,8 +4668,10 @@ current_search(
else
orig_pos = pos = curwin->w_cursor;
/* Is the pattern is zero-width? */
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor);
/* Is the pattern is zero-width?, this time, don't care about the direction
*/
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor,
FORWARD);
if (one_char == -1)
{
p_ws = old_p_ws;
@@ -4727,11 +4730,11 @@ current_search(
}
start_pos = pos;
flags = forward ? SEARCH_END : 0;
flags = forward ? SEARCH_END : SEARCH_START;
/* Check again from the current cursor position,
* since the next match might actually by only one char wide */
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos);
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos, direction);
if (one_char < 0)
/* search failed, abort */
return FAIL;
@@ -4739,7 +4742,7 @@ current_search(
/* move to match, except for zero-width matches, in which case, we are
* already on the next match */
if (!one_char)
result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
result = searchit(curwin, curbuf, &pos, direction,
spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0,
NULL, NULL);
@@ -4788,10 +4791,11 @@ current_search(
* Check if the pattern is one character long or zero-width.
* If move is TRUE, check from the beginning of the buffer, else from position
* "cur".
* "direction" is FORWARD or BACKWARD.
* Returns TRUE, FALSE or -1 for failure.
*/
static int
is_one_char(char_u *pattern, int move, pos_T *cur)
is_one_char(char_u *pattern, int move, pos_T *cur, int direction)
{
regmmatch_T regmatch;
int nmatched = 0;
@@ -4821,7 +4825,7 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
flag = SEARCH_START;
}
if (searchit(curwin, curbuf, &pos, FORWARD, pattern, 1,
if (searchit(curwin, curbuf, &pos, direction, pattern, 1,
SEARCH_KEEP + flag, RE_SEARCH, 0, NULL, NULL) != FAIL)
{
/* Zero-width pattern should match somewhere, then we can check if
@@ -4834,7 +4838,8 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
pos.lnum, regmatch.startpos[0].col, NULL, NULL);
if (!nmatched)
break;
} while (regmatch.startpos[0].col < pos.col);
} while (direction == FORWARD ? regmatch.startpos[0].col < pos.col
: regmatch.startpos[0].col > pos.col);
if (!called_emsg)
{
+17 -6
View File
@@ -2712,12 +2712,10 @@ struct window_S
int w_height; /* number of rows in window, excluding
status/command/winbar line(s) */
int w_status_height; /* number of status lines (0 or 1) */
int w_wincol; /* Leftmost column of window in screen.
use W_WINCOL() */
int w_width; /* Width of window, excluding separation.
use W_WIDTH() */
int w_vsep_width; /* Number of separator columns (0 or 1).
use W_VSEP_WIDTH() */
int w_wincol; /* Leftmost column of window in screen. */
int w_width; /* Width of window, excluding separation. */
int w_vsep_width; /* Number of separator columns (0 or 1). */
/*
* === start of cached values ====
*/
@@ -3426,3 +3424,16 @@ typedef struct lval_S
dictitem_T *ll_di; /* The dictitem or NULL */
char_u *ll_newkey; /* New key for Dict in alloc. mem or NULL. */
} lval_T;
/* Structure used to save the current state. Used when executing Normal mode
* commands while in any other mode. */
typedef struct {
int save_msg_scroll;
int save_restart_edit;
int save_msg_didout;
int save_State;
int save_insertmode;
int save_finish_op;
int save_opcount;
tasave_T tabuf;
} save_state_T;
+94 -36
View File
@@ -368,7 +368,7 @@ static win_T *syn_win; /* current window for highlighting */
static buf_T *syn_buf; /* current buffer for highlighting */
static synblock_T *syn_block; /* current buffer for highlighting */
#ifdef FEAT_RELTIME
static proftime_T *syn_tm;
static proftime_T *syn_tm; /* timeout limit */
#endif
static linenr_T current_lnum = 0; /* lnum of current state */
static colnr_T current_col = 0; /* column of current state */
@@ -489,6 +489,18 @@ static int get_id_list(char_u **arg, int keylen, short **list, int skip);
static void syn_combine_list(short **clstr1, short **clstr2, int list_op);
static void syn_incl_toplevel(int id, int *flagsp);
#if defined(FEAT_RELTIME) || defined(PROTO)
/*
* Set the timeout used for syntax highlighting.
* Use NULL to reset, no timeout.
*/
void
syn_set_timeout(proftime_T *tm)
{
syn_tm = tm;
}
#endif
/*
* Start the syntax recognition for a line. This function is normally called
* from the screen updating, once for each displayed line.
@@ -497,7 +509,7 @@ static void syn_incl_toplevel(int id, int *flagsp);
* window.
*/
void
syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
syntax_start(win_T *wp, linenr_T lnum)
{
synstate_T *p;
synstate_T *last_valid = NULL;
@@ -527,9 +539,6 @@ syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
}
changedtick = CHANGEDTICK(syn_buf);
syn_win = wp;
#ifdef FEAT_RELTIME
syn_tm = syntax_tm;
#endif
/*
* Allocate syntax stack when needed.
@@ -6569,7 +6578,7 @@ syn_get_id(
if (wp->w_buffer != syn_buf
|| lnum != current_lnum
|| col < current_col)
syntax_start(wp, lnum, NULL);
syntax_start(wp, lnum);
else if (wp->w_buffer == syn_buf
&& lnum == current_lnum
&& col > current_col)
@@ -6645,7 +6654,7 @@ syn_get_foldlevel(win_T *wp, long lnum)
# endif
)
{
syntax_start(wp, lnum, NULL);
syntax_start(wp, lnum);
for (i = 0; i < current_state.ga_len; ++i)
if (CUR_STATE(i).si_flags & HL_FOLD)
@@ -7006,7 +7015,7 @@ static char *(highlight_init_light[]) = {
CENT("ToolbarLine term=underline ctermbg=LightGrey",
"ToolbarLine term=underline ctermbg=LightGrey guibg=LightGrey"),
CENT("ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey",
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=DarkGrey"),
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=Grey40"),
#endif
NULL
};
@@ -7102,7 +7111,7 @@ static char *(highlight_init_dark[]) = {
#endif
#ifdef FEAT_MENU
CENT("ToolbarLine term=underline ctermbg=DarkGrey",
"ToolbarLine term=underline ctermbg=DarkGrey guibg=DarkGrey"),
"ToolbarLine term=underline ctermbg=DarkGrey guibg=Grey50"),
CENT("ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey",
"ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey gui=bold guifg=Black guibg=LightGrey"),
#endif
@@ -7341,6 +7350,12 @@ lookup_color(int idx, int foreground, int *boldp)
else
color = color_numbers_8[idx];
}
#ifdef FEAT_TERMRESPONSE
if (t_colors >= 256 && color == 15 && is_mac_terminal)
/* Terminal.app has a bug: 15 is light grey. Use white
* from the color cube instead. */
color = 231;
#endif
}
return color;
}
@@ -7369,6 +7384,7 @@ do_highlight(
int id;
int idx;
struct hl_group item_before;
int did_change = FALSE;
int dodefault = FALSE;
int doclear = FALSE;
int dolink = FALSE;
@@ -7779,6 +7795,7 @@ do_highlight(
/* GUI not started yet, always accept the name. */
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
{
@@ -7807,6 +7824,7 @@ do_highlight(
gui_mch_free_fontset(temp_sg_fontset);
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
HL_TABLE()[idx].sg_fontset = temp_sg_fontset;
@@ -7818,6 +7836,7 @@ do_highlight(
gui_mch_free_font(temp_sg_font);
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
HL_TABLE()[idx].sg_font = temp_sg_font;
@@ -7962,6 +7981,8 @@ do_highlight(
else if (STRCMP(key, "GUIFG") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_fg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -7974,22 +7995,34 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_fg = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_fg_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_fg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_fg_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group)
if (is_menu_group && gui.menu_fg_pixel != i)
{
gui.menu_fg_pixel = i;
if (is_scrollbar_group)
do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_fg_pixel != i)
{
gui.scroll_fg_pixel = i;
do_colors = TRUE;
}
# ifdef FEAT_BEVAL
if (is_tooltip_group)
if (is_tooltip_group && gui.tooltip_fg_pixel != i)
{
gui.tooltip_fg_pixel = i;
do_colors = TRUE;
}
# endif
do_colors = TRUE;
# endif
}
# endif
@@ -7999,6 +8032,8 @@ do_highlight(
else if (STRCMP(key, "GUIBG") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_bg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -8011,22 +8046,34 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_bg = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_bg_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_bg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_bg_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group)
if (is_menu_group && gui.menu_bg_pixel != i)
{
gui.menu_bg_pixel = i;
if (is_scrollbar_group)
do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_bg_pixel != i)
{
gui.scroll_bg_pixel = i;
do_colors = TRUE;
}
# ifdef FEAT_BEVAL
if (is_tooltip_group)
if (is_tooltip_group && gui.tooltip_bg_pixel != i)
{
gui.tooltip_bg_pixel = i;
do_colors = TRUE;
}
# endif
do_colors = TRUE;
# endif
}
# endif
@@ -8036,6 +8083,8 @@ do_highlight(
else if (STRCMP(key, "GUISP") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_sp_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -8047,11 +8096,15 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_sp = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_sp_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_sp_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_sp_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# ifdef FEAT_GUI
}
# endif
@@ -8220,13 +8273,18 @@ do_highlight(
/* Only call highlight_changed() once, after a sequence of highlight
* commands, and only if an attribute actually changed. */
if (memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0
if ((did_change
|| memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0)
#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
&& !did_highlight_changed
#endif
)
{
redraw_all_later(NOT_VALID);
/* Do not trigger a redraw when highlighting is changed while
* redrawing. This may happen when evaluating 'statusline' changes the
* StatusLine group. */
if (!updating_screen)
redraw_all_later(NOT_VALID);
need_highlight_changed = TRUE;
}
}
@@ -9548,7 +9606,7 @@ syn_name2attr(char_u *name)
int id = syn_name2id(name);
if (id != 0)
return syn_id2attr(syn_get_final_id(id));
return syn_id2attr(id);
return 0;
}
@@ -9747,7 +9805,7 @@ syn_id2colors(int hl_id, guicolor_T *fgp, guicolor_T *bgp)
}
#endif
#if defined(FEAT_TERMINAL) || defined(PROT)
#if defined(FEAT_TERMINAL) || defined(PROTO)
void
syn_id2cterm_bg(int hl_id, int *fgp, int *bgp)
{
+7 -5
View File
@@ -3277,11 +3277,10 @@ set_shellsize(int width, int height, int mustset)
if (pum_visible())
{
redraw_later(NOT_VALID);
ins_compl_show_pum(); /* This includes the redraw. */
ins_compl_show_pum();
}
else
#endif
update_screen(NOT_VALID);
update_screen(NOT_VALID);
if (redrawing())
setcursor();
}
@@ -3822,8 +3821,8 @@ scroll_region_set(win_T *wp, int off)
OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1,
W_WINROW(wp) + off));
if (*T_CSV != NUL && wp->w_width != Columns)
OUT_STR(tgoto((char *)T_CSV, W_WINCOL(wp) + wp->w_width - 1,
W_WINCOL(wp)));
OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1,
wp->w_wincol));
screen_start(); /* don't know where cursor is now */
}
@@ -4564,7 +4563,10 @@ check_termcode(
/* Mac Terminal.app sends 1;95;0 */
if (version == 95
&& STRNCMP(tp + extra - 2, "1;95;0c", 7) == 0)
{
is_not_xterm = TRUE;
is_mac_terminal = TRUE;
}
/* Gnome terminal sends 1;3801;0, 1;4402;0 or 1;2501;0.
* xfce4-terminal sends 1;2802;0.
+55 -17
View File
@@ -41,10 +41,13 @@
* - in GUI vertical split causes problems. Cursor is flickering. (Hirohito
* Higashi, 2017 Sep 19)
* - Shift-Tab does not work.
* - click in Window toolbar of other window: save/restore Insert and Visual
* - after resizing windows overlap. (Boris Staletic, #2164)
* - double click in Window toolbar starts Visual mode.
* - Redirecting output does not work on MS-Windows, Test_terminal_redir_file()
* is disabled.
* - cursor blinks in terminal on widows with a timer. (xtal8, #2142)
* - implement term_setsize()
* - MS-Windows GUI: WinBar has tearoff item
* - MS-Windows GUI: still need to type a key after shell exits? #1924
* - add test for giving error for invalid 'termsize' value.
* - support minimal size when 'termsize' is "rows*cols".
@@ -53,6 +56,7 @@
* - GUI: when 'confirm' is set and trying to exit Vim, dialog offers to save
* changes to "!shell".
* (justrajdeep, 2017 Aug 22)
* - Redrawing is slow with Athena and Motif.
* - For the GUI fill termios with default values, perhaps like pangoterm:
* http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
* - if the job in the terminal does not support the mouse, we can use the
@@ -132,7 +136,7 @@ struct terminal_S {
char_u *tl_status_text; /* NULL or allocated */
/* Range of screen rows to update. Zero based. */
int tl_dirty_row_start; /* -1 if nothing dirty */
int tl_dirty_row_start; /* MAX_ROW if nothing dirty */
int tl_dirty_row_end; /* row below last one to update */
garray_T tl_scrollback;
@@ -448,6 +452,12 @@ term_start(typval_T *argvar, jobopt_T *opt, int forceit)
* a deadlock if the job is waiting for Vim to read. */
channel_set_nonblock(term->tl_job->jv_channel, PART_IN);
#ifdef FEAT_AUTOCMD
++curbuf->b_locked;
apply_autocmds(EVENT_BUFWINENTER, NULL, NULL, FALSE, curbuf);
--curbuf->b_locked;
#endif
if (old_curbuf != NULL)
{
--curbuf->b_nwindows;
@@ -729,7 +739,7 @@ term_send_mouse(VTerm *vterm, int button, int pressed)
VTermModifier mod = VTERM_MOD_NONE;
vterm_mouse_move(vterm, mouse_row - W_WINROW(curwin),
mouse_col - W_WINCOL(curwin), mod);
mouse_col - curwin->w_wincol, mod);
vterm_mouse_button(vterm, button, pressed, mod);
return TRUE;
}
@@ -1307,7 +1317,7 @@ send_keys_to_term(term_T *term, int c, int typed)
case K_MOUSERIGHT:
if (mouse_row < W_WINROW(curwin)
|| mouse_row >= (W_WINROW(curwin) + curwin->w_height)
|| mouse_col < W_WINCOL(curwin)
|| mouse_col < curwin->w_wincol
|| mouse_col >= W_ENDCOL(curwin)
|| dragging_outside)
{
@@ -1790,23 +1800,38 @@ color2index(VTermColor *color, int fg, int *boldp)
{
if (red == blue && red == green)
{
/* 24-color greyscale */
/* 24-color greyscale plus white and black */
static int cutoff[23] = {
0x05, 0x10, 0x1B, 0x26, 0x31, 0x3C, 0x47, 0x52,
0x5D, 0x68, 0x73, 0x7F, 0x8A, 0x95, 0xA0, 0xAB,
0xB6, 0xC1, 0xCC, 0xD7, 0xE2, 0xED, 0xF9};
0x0D, 0x17, 0x21, 0x2B, 0x35, 0x3F, 0x49, 0x53, 0x5D, 0x67,
0x71, 0x7B, 0x85, 0x8F, 0x99, 0xA3, 0xAD, 0xB7, 0xC1, 0xCB,
0xD5, 0xDF, 0xE9};
int i;
if (red < 5)
return 17; /* 00/00/00 */
if (red > 245) /* ff/ff/ff */
return 232;
for (i = 0; i < 23; ++i)
if (red < cutoff[i])
return i + 233;
return 256;
}
{
static int cutoff[5] = {0x2F, 0x73, 0x9B, 0xC3, 0xEB};
int ri, gi, bi;
/* 216-color cube */
return 17 + ((red + 25) / 0x33) * 36
+ ((green + 25) / 0x33) * 6
+ (blue + 25) / 0x33;
/* 216-color cube */
for (ri = 0; ri < 5; ++ri)
if (red < cutoff[ri])
break;
for (gi = 0; gi < 5; ++gi)
if (green < cutoff[gi])
break;
for (bi = 0; bi < 5; ++bi)
if (blue < cutoff[bi])
break;
return 17 + ri * 36 + gi * 6 + bi;
}
}
return 0;
}
@@ -1907,6 +1932,10 @@ handle_moverect(VTermRect dest, VTermRect src, void *user)
clear_attr);
}
}
term->tl_dirty_row_start = MIN(term->tl_dirty_row_start, dest.start_row);
term->tl_dirty_row_end = MIN(term->tl_dirty_row_end, dest.end_row);
redraw_buf_later(term->tl_buffer, NOT_VALID);
return 1;
}
@@ -2215,6 +2244,12 @@ term_update_window(win_T *wp)
screen = vterm_obtain_screen(vterm);
state = vterm_obtain_state(vterm);
if (wp->w_redr_type >= NOT_VALID)
{
term->tl_dirty_row_start = 0;
term->tl_dirty_row_end = MAX_ROW;
}
/*
* If the window was resized a redraw will be triggered and we get here.
* Adjust the size of the vterm unless 'termsize' specifies a fixed size.
@@ -2250,8 +2285,8 @@ term_update_window(win_T *wp)
vterm_state_get_cursorpos(state, &pos);
position_cursor(wp, &pos);
/* TODO: Only redraw what changed. */
for (pos.row = 0; pos.row < wp->w_height; ++pos.row)
for (pos.row = term->tl_dirty_row_start; pos.row < term->tl_dirty_row_end
&& pos.row < wp->w_height; ++pos.row)
{
int off = screen_get_current_line_off();
int max_col = MIN(wp->w_width, term->tl_cols);
@@ -2334,6 +2369,8 @@ term_update_window(win_T *wp)
screen_line(wp->w_winrow + pos.row, wp->w_wincol,
pos.col, wp->w_width, FALSE);
}
term->tl_dirty_row_start = MAX_ROW;
term->tl_dirty_row_end = 0;
return OK;
}
@@ -2425,16 +2462,17 @@ static VTermColor ansi_table[16] = {
};
static int cube_value[] = {
0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF,
0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF
};
static int grey_ramp[] = {
0x00, 0x0B, 0x16, 0x21, 0x2C, 0x37, 0x42, 0x4D, 0x58, 0x63, 0x6E, 0x79,
0x85, 0x90, 0x9B, 0xA6, 0xB1, 0xBC, 0xC7, 0xD2, 0xDD, 0xE8, 0xF3, 0xFF,
0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,
0x80, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE
};
/*
* Convert a cterm color number 0 - 255 to RGB.
* This is compatible with xterm.
*/
static void
cterm_color2rgb(int nr, VTermColor *rgb)
-6
View File
@@ -25,23 +25,17 @@ SCRIPTS_ALL = \
test28.out \
test29.out \
test31.out \
test33.out \
test34.out \
test36.out \
test37.out \
test38.out \
test39.out \
test40.out \
test41.out \
test42.out \
test43.out \
test44.out \
test45.out \
test48.out \
test53.out \
test55.out \
test56.out \
test57.out \
test60.out \
test64.out \
test66.out \
+5 -5
View File
@@ -78,11 +78,11 @@ SCRIPT = test1.out test3.out test4.out test5.out \
test14.out test15.out \
test19.out test20.out \
test28.out test29.out test30.out test31.out test32.out \
test33.out test34.out test36.out test37.out \
test38.out test39.out test40.out test41.out test42.out \
test43.out test44.out test45.out \
test48.out test49.out test53.out test54.out \
test55.out test56.out test57.out test60.out \
test34.out test36.out test37.out \
test38.out test39.out test40.out test42.out \
test44.out test45.out \
test48.out test49.out test54.out \
test55.out test60.out \
test64.out \
test66.out test68.out test69.out \
test72.out \
+3 -3
View File
@@ -10,9 +10,9 @@ Scripts = test1.out test2.out test3.out test4.out test5.out test6.out
test18.out test19.out test20.out test21.out
test25.out test27.out
test28.out test29.out test30.out test31.out test32.out
test33.out test34.out test36.out test37.out
test38.out test39.out test40.out test41.out test42.out
test43.out test44.out test45.out test46.out test47.out
test34.out test36.out test37.out
test38.out test39.out test40.out test42.out
test44.out test45.out test46.out test47.out
test48.out test49.out test74.out
ScriptsGUI = test16.out
+5
View File
@@ -1,5 +1,10 @@
" Functions shared by several tests.
" Only load this script once.
if exists('*WaitFor')
finish
endif
" Get the name of the Python executable.
" Also keeps it in s:python.
func PythonProg()
-34
View File
@@ -1,34 +0,0 @@
Test for 'lisp'
If the lisp feature is not enabled, this will fail!
STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST
(defun html-file (base)
(format nil "~(~A~).html" base))
(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center
(as h2 (string-upcase ,ti)))
(brs 3)
,@body))))
;;; Utilities for generating links
(defmacro with-link (dest &rest body)
`(progn
(format t "<a href=\"~A\">" (html-file ,dest))
,@body
(princ "</a>")))
-23
View File
@@ -1,23 +0,0 @@
(defun html-file (base)
(format nil "~(~A~).html" base))
(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center
(as h2 (string-upcase ,ti)))
(brs 3)
,@body))))
;;; Utilities for generating links
(defmacro with-link (dest &rest body)
`(progn
(format t "<a href=\"~A\">" (html-file ,dest))
,@body
(princ "</a>")))
-24
View File
@@ -1,24 +0,0 @@
Test for writing and reading a file of over 100 Kbyte
1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"
STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the endkY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST
-3
View File
@@ -1,3 +0,0 @@
This is the start
This is the middle
This is the end
-34
View File
@@ -1,34 +0,0 @@
Tests for regexp with various magic settings.
STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:$
:set undolevels=100
dv?bar?
Yup:"
:?^1?,$w! test.out
:qa!
ENDTEST
1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
9 foobar

Some files were not shown because too many files have changed in this diff Show More