mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-07 15:37:14 +02:00
Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 06f8b8e667 | |||
| 4116a647ac | |||
| c902609f69 | |||
| a0a6f2776e | |||
| c8aa5fbeb7 | |||
| 19a3d68b2c | |||
| 2a6a6c3014 | |||
| 712549e04e | |||
| f33606112a | |||
| 5ece3e359c | |||
| 0aa398f55a | |||
| c233aed6c3 | |||
| 3a497e1a41 | |||
| c958b31638 | |||
| 9c2f5e7b8d | |||
| f52c383156 | |||
| 65ed136844 | |||
| c79977a437 | |||
| 660b85e39a | |||
| a5e6621aad | |||
| 816968defc | |||
| 7bfaf0665e | |||
| d371bbe0ab | |||
| db51007108 | |||
| 24a98a0eb7 | |||
| 9cf39cc57f | |||
| 1ec96c9269 | |||
| 0410900dea | |||
| d1bc96ce24 | |||
| 1b38344e00 | |||
| 97fbc404fc | |||
| 2a02745709 | |||
| 09ca932f8e | |||
| 6edeaf387c | |||
| a8fc0d3817 | |||
| 22ab547dc2 | |||
| 7c456a4511 | |||
| 783f28115f | |||
| 452030e530 | |||
| 0c6a32963d | |||
| 0b05e491b4 | |||
| aeddf7cbe5 | |||
| e0de17d84e | |||
| 378daf87d3 | |||
| 96e7a6ee45 | |||
| bb3e6416f1 | |||
| a21a6a9ade | |||
| eb163d73b1 | |||
| e745d75c3e | |||
| 0263146b5d | |||
| 53f8174eae | |||
| 76301956f0 | |||
| f3d769a585 | |||
| 8b21de33bb | |||
| c9262f4ff3 | |||
| fc7649f8b8 | |||
| b00fdf6eed |
@@ -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 \
|
||||
|
||||
@@ -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
@@ -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
@@ -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>
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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 :
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -1255,7 +1255,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>137</string>
|
||||
<string>138</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
@@ -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 \
|
||||
|
||||
Vendored
+5
-3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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? */
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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]) */
|
||||
|
||||
@@ -1472,7 +1472,6 @@ Msg(text, hl=NULL)
|
||||
|
||||
PREINIT:
|
||||
int attr;
|
||||
int id;
|
||||
|
||||
PPCODE:
|
||||
if (text != NULL)
|
||||
|
||||
+2
-2
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
+12
-4
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+172
-171
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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>")))
|
||||
@@ -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>")))
|
||||
@@ -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
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
This is the start
|
||||
This is the middle
|
||||
This is the end
|
||||
@@ -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
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
1 a aa abb abbcc
|
||||
2 d dd dee deeff
|
||||
3 g gg ghh ghhii
|
||||
4 j jj jkk jkkll
|
||||
5 m mm mnn mnnoo
|
||||
6 x aa$ x
|
||||
7 (a)(b) abba
|
||||
8 axx ab]xx
|
||||
9 foobar
|
||||
9 foo
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
Tests for string and html text objects. vim: set ft=vim :
|
||||
|
||||
Note that the end-of-line moves the cursor to the next test line.
|
||||
|
||||
Also test match() and matchstr()
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
/^start:/
|
||||
da"
|
||||
0va'a'rx
|
||||
02f`da`
|
||||
0fXdi"
|
||||
03f'vi'ry
|
||||
:set quoteescape=+*-
|
||||
di`
|
||||
$F"va"oha"i"rz
|
||||
:"
|
||||
/^<begin
|
||||
jfXdit
|
||||
0fXdit
|
||||
fXdat
|
||||
0fXdat
|
||||
dit
|
||||
:"
|
||||
:put =matchstr(\"abcd\", \".\", 0, 2) " b
|
||||
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc
|
||||
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)
|
||||
:put =matchstr(\"abcd\", \".\", 0, -1) " a
|
||||
:put =match(\"abcd\", \".\", 0, 5) " -1
|
||||
:put =match(\"abcd\", \".\", 0, -1) " 0
|
||||
:put =match('abc', '.', 0, 1) " 0
|
||||
:put =match('abc', '.', 0, 2) " 1
|
||||
:put =match('abc', '.', 0, 3) " 2
|
||||
:put =match('abc', '.', 0, 4) " -1
|
||||
:put =match('abc', '.', 1, 1) " 1
|
||||
:put =match('abc', '.', 2, 1) " 2
|
||||
:put =match('abc', '.', 3, 1) " -1
|
||||
:put =match('abc', '$', 0, 1) " 3
|
||||
:put =match('abc', '$', 0, 2) " -1
|
||||
:put =match('abc', '$', 1, 1) " 3
|
||||
:put =match('abc', '$', 2, 1) " 3
|
||||
:put =match('abc', '$', 3, 1) " 3
|
||||
:put =match('abc', '$', 4, 1) " -1
|
||||
:put =match('abc', '\zs', 0, 1) " 0
|
||||
:put =match('abc', '\zs', 0, 2) " 1
|
||||
:put =match('abc', '\zs', 0, 3) " 2
|
||||
:put =match('abc', '\zs', 0, 4) " 3
|
||||
:put =match('abc', '\zs', 0, 5) " -1
|
||||
:put =match('abc', '\zs', 1, 1) " 1
|
||||
:put =match('abc', '\zs', 2, 1) " 2
|
||||
:put =match('abc', '\zs', 3, 1) " 3
|
||||
:put =match('abc', '\zs', 4, 1) " -1
|
||||
:/^start:/,/^end:/wq! test.out
|
||||
ENDTEST
|
||||
|
||||
start: "wo\"rd\\" foo
|
||||
'foo' 'bar' 'piep'
|
||||
bla bla `quote` blah
|
||||
out " in "noXno"
|
||||
"'" 'blah' rep 'buh'
|
||||
bla `s*`d-`+++`l**` b`la
|
||||
voo "nah" sdf " asdf" sdf " sdf" sd
|
||||
|
||||
<begin>
|
||||
-<b>asdf<i>Xasdf</i>asdf</b>-
|
||||
-<b>asdX<i>a<i />sdf</i>asdf</b>-
|
||||
-<b>asdf<i>Xasdf</i>asdf</b>-
|
||||
-<b>asdX<i>as<b />df</i>asdf</b>-
|
||||
-<b>
|
||||
innertext object
|
||||
</b>
|
||||
</begin>
|
||||
SEARCH:
|
||||
end:
|
||||
@@ -1,45 +0,0 @@
|
||||
start: foo
|
||||
xxxxxxxxxxxx'piep'
|
||||
bla bla blah
|
||||
out " in ""
|
||||
"'" 'blah'yyyyy'buh'
|
||||
bla `` b`la
|
||||
voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzzsd
|
||||
|
||||
<begin>
|
||||
-<b>asdf<i></i>asdf</b>-
|
||||
-<b></b>-
|
||||
-<b>asdfasdf</b>-
|
||||
--
|
||||
-<b></b>
|
||||
</begin>
|
||||
b
|
||||
bc
|
||||
c
|
||||
a
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
2
|
||||
-1
|
||||
1
|
||||
2
|
||||
-1
|
||||
3
|
||||
-1
|
||||
3
|
||||
3
|
||||
3
|
||||
-1
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
-1
|
||||
1
|
||||
2
|
||||
3
|
||||
-1
|
||||
SEARCH:
|
||||
end:
|
||||
@@ -1,21 +0,0 @@
|
||||
Test for script-local function. vim: set ft=vim :
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:"
|
||||
:set nocp viminfo+=nviminfo
|
||||
:/^start:/+1,/^end:/-1w! Xtest.vim
|
||||
:source Xtest.vim
|
||||
_x
|
||||
:$-1,$wq! test.out
|
||||
ENDTEST
|
||||
|
||||
start:
|
||||
fun <SID>DoLast()
|
||||
call append(line('$'), "last line")
|
||||
endfun
|
||||
fun s:DoNothing()
|
||||
call append(line('$'), "nothing line")
|
||||
endfun
|
||||
nnoremap <buffer> _x :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
|
||||
end:
|
||||
@@ -1,2 +0,0 @@
|
||||
nothing line
|
||||
last line
|
||||
@@ -1,545 +0,0 @@
|
||||
Tests for :sort command. vim: set ft=vim :
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:"
|
||||
:/^t01:/+1,/^t02/-1sort
|
||||
:/^t02:/+1,/^t03/-1sort n
|
||||
:/^t03:/+1,/^t04/-1sort x
|
||||
:/^t04:/+1,/^t05/-1sort u
|
||||
:/^t05:/+1,/^t06/-1sort!
|
||||
:/^t06:/+1,/^t07/-1sort! n
|
||||
:/^t07:/+1,/^t08/-1sort! u
|
||||
:/^t08:/+1,/^t09/-1sort o
|
||||
:/^t09:/+1,/^t10/-1sort! x
|
||||
:/^t10:/+1,/^t11/-1sort/./
|
||||
:/^t11:/+1,/^t12/-1sort/../
|
||||
:/^t12:/+1,/^t13/-1sort/../u
|
||||
:/^t13:/+1,/^t14/-1sort/./n
|
||||
:/^t14:/+1,/^t15/-1sort/./r
|
||||
:/^t15:/+1,/^t16/-1sort/../r
|
||||
:/^t16:/+1,/^t17/-1sort/./rn
|
||||
:/^t17:/+1,/^t18/-1sort/\d/
|
||||
:/^t18:/+1,/^t19/-1sort/\d/r
|
||||
:/^t19:/+1,/^t20/-1sort/\d/n
|
||||
:/^t20:/+1,/^t21/-1sort/\d/rn
|
||||
:/^t21:/+1,/^t22/-1sort/\d\d/
|
||||
:/^t22:/+1,/^t23/-1sort/\d\d/n
|
||||
:/^t23:/+1,/^t24/-1sort/\d\d/x
|
||||
:/^t24:/+1,/^t25/-1sort/\d\d/r
|
||||
:/^t25:/+1,/^t26/-1sort/\d\d/rn
|
||||
:/^t26:/+1,/^t27/-1sort/\d\d/rx
|
||||
:/^t27:/+1,/^t28/-1sort no
|
||||
:/^t28:/+1,/^t29/-1sort b
|
||||
:/^t29:/+1,/^t30/-1sort b
|
||||
:/^t30:/+1,/^t31/-1sort f
|
||||
:/^t01:/,$wq! test.out
|
||||
ENDTEST
|
||||
|
||||
t01: alphebetical
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t02: numeric
|
||||
abc
|
||||
ab
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
a
|
||||
x-22
|
||||
b321
|
||||
b123
|
||||
|
||||
c123d
|
||||
-24
|
||||
123b
|
||||
c321d
|
||||
0
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t03: hexadecimal
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t04: alpha, unique
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t05: alpha, reverse
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t06: numeric, reverse
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t07: unique, reverse
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t08: octal
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t09: reverse, hexadecimal
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t10: alpha, skip first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t11: alpha, skip first 2 characters
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t12: alpha, unique, skip first 2 characters
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t13: numeric, skip first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t14: alpha, sort on first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t15: alpha, sort on first 2 characters
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t16: numeric, sort on first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t17: alpha, skip past first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t18: alpha, sort on first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t19: numeric, skip past first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t20: numeric, sort on first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t21: alpha, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t22: numeric, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t23: hexadecimal, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t24: alpha, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t25: numeric, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t26: hexadecimal, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t27: wrong arguments
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t28: binary
|
||||
0b111000
|
||||
0b101100
|
||||
0b101001
|
||||
0b101001
|
||||
0b101000
|
||||
0b000000
|
||||
0b001000
|
||||
0b010000
|
||||
0b101000
|
||||
0b100000
|
||||
0b101010
|
||||
0b100010
|
||||
0b100100
|
||||
0b100010
|
||||
|
||||
|
||||
t29: binary with leading characters
|
||||
0b100010
|
||||
0b010000
|
||||
0b101001
|
||||
b0b101100
|
||||
0b100010
|
||||
0b100100
|
||||
a0b001000
|
||||
0b101000
|
||||
0b101000
|
||||
a0b101001
|
||||
ab0b100000
|
||||
0b101010
|
||||
0b000000
|
||||
b0b111000
|
||||
|
||||
|
||||
t30: float
|
||||
1.234
|
||||
0.88
|
||||
123.456
|
||||
1.15e-6
|
||||
-1.1e3
|
||||
-1.01e3
|
||||
|
||||
|
||||
t31: done
|
||||
@@ -1,501 +0,0 @@
|
||||
t01: alphebetical
|
||||
|
||||
|
||||
123b
|
||||
a
|
||||
a122
|
||||
a123
|
||||
a321
|
||||
ab
|
||||
abc
|
||||
b123
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
c123d
|
||||
c321d
|
||||
t02: numeric
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
|
||||
-24
|
||||
x-22
|
||||
0
|
||||
a122
|
||||
a123
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
t03: hexadecimal
|
||||
|
||||
|
||||
a
|
||||
ab
|
||||
abc
|
||||
123b
|
||||
a122
|
||||
a123
|
||||
a321
|
||||
b123
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
c123d
|
||||
c321d
|
||||
t04: alpha, unique
|
||||
|
||||
123b
|
||||
a
|
||||
a122
|
||||
a123
|
||||
a321
|
||||
ab
|
||||
abc
|
||||
b123
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
c123d
|
||||
c321d
|
||||
t05: alpha, reverse
|
||||
c321d
|
||||
c123d
|
||||
b322b
|
||||
b321b
|
||||
b321
|
||||
b321
|
||||
b123
|
||||
abc
|
||||
ab
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
a
|
||||
123b
|
||||
|
||||
|
||||
t06: numeric, reverse
|
||||
b322b
|
||||
b321b
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
a321
|
||||
123b
|
||||
c123d
|
||||
b123
|
||||
a123
|
||||
a122
|
||||
|
||||
|
||||
a
|
||||
ab
|
||||
abc
|
||||
t07: unique, reverse
|
||||
c321d
|
||||
c123d
|
||||
b322b
|
||||
b321b
|
||||
b321
|
||||
b123
|
||||
abc
|
||||
ab
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
a
|
||||
123b
|
||||
|
||||
t08: octal
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a122
|
||||
a123
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
t09: reverse, hexadecimal
|
||||
c321d
|
||||
c123d
|
||||
b322b
|
||||
b321b
|
||||
b321
|
||||
b321
|
||||
b123
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
123b
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
t10: alpha, skip first character
|
||||
a
|
||||
|
||||
|
||||
a122
|
||||
a123
|
||||
b123
|
||||
123b
|
||||
c123d
|
||||
a321
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
c321d
|
||||
b322b
|
||||
ab
|
||||
abc
|
||||
t11: alpha, skip first 2 characters
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
c321d
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
123b
|
||||
c123d
|
||||
abc
|
||||
t12: alpha, unique, skip first 2 characters
|
||||
ab
|
||||
a
|
||||
|
||||
a321
|
||||
b321
|
||||
b321b
|
||||
c321d
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
123b
|
||||
c123d
|
||||
abc
|
||||
t13: numeric, skip first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a122
|
||||
a123
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
b321b
|
||||
b322b
|
||||
t14: alpha, sort on first character
|
||||
|
||||
|
||||
123b
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
c123d
|
||||
c321d
|
||||
t15: alpha, sort on first 2 characters
|
||||
a
|
||||
|
||||
|
||||
123b
|
||||
a123
|
||||
a122
|
||||
a321
|
||||
abc
|
||||
ab
|
||||
b123
|
||||
b321
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
c123d
|
||||
c321d
|
||||
t16: numeric, sort on first character
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t17: alpha, skip past first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
c321d
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
123b
|
||||
c123d
|
||||
t18: alpha, sort on first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a123
|
||||
a122
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
t19: numeric, skip past first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
b321b
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
t20: numeric, sort on first digit
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a123
|
||||
a122
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
t21: alpha, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
b321
|
||||
b321b
|
||||
c321d
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
123b
|
||||
c123d
|
||||
t22: numeric, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b321
|
||||
b321b
|
||||
a122
|
||||
b322b
|
||||
a123
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
t23: hexadecimal, skip past first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a321
|
||||
b321
|
||||
b321
|
||||
a122
|
||||
a123
|
||||
b123
|
||||
b321b
|
||||
c321d
|
||||
b322b
|
||||
123b
|
||||
c123d
|
||||
t24: alpha, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a123
|
||||
a122
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
t25: numeric, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a123
|
||||
a122
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
t26: hexadecimal, sort on first 2 digits
|
||||
abc
|
||||
ab
|
||||
a
|
||||
|
||||
|
||||
a123
|
||||
a122
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
a321
|
||||
b321
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
t27: wrong arguments
|
||||
abc
|
||||
ab
|
||||
a
|
||||
a321
|
||||
a123
|
||||
a122
|
||||
b321
|
||||
b123
|
||||
c123d
|
||||
123b
|
||||
c321d
|
||||
b322b
|
||||
b321
|
||||
b321b
|
||||
|
||||
|
||||
t28: binary
|
||||
|
||||
|
||||
0b000000
|
||||
0b001000
|
||||
0b010000
|
||||
0b100000
|
||||
0b100010
|
||||
0b100010
|
||||
0b100100
|
||||
0b101000
|
||||
0b101000
|
||||
0b101001
|
||||
0b101001
|
||||
0b101010
|
||||
0b101100
|
||||
0b111000
|
||||
t29: binary with leading characters
|
||||
|
||||
|
||||
0b000000
|
||||
a0b001000
|
||||
0b010000
|
||||
ab0b100000
|
||||
0b100010
|
||||
0b100010
|
||||
0b100100
|
||||
0b101000
|
||||
0b101000
|
||||
0b101001
|
||||
a0b101001
|
||||
0b101010
|
||||
b0b101100
|
||||
b0b111000
|
||||
t30: float
|
||||
|
||||
|
||||
-1.1e3
|
||||
-1.01e3
|
||||
1.15e-6
|
||||
0.88
|
||||
1.234
|
||||
123.456
|
||||
t31: done
|
||||
@@ -1,8 +1,6 @@
|
||||
" A series of tests that can run in one Vim invocation.
|
||||
" This makes testing go faster, since Vim doesn't need to restart.
|
||||
|
||||
source shared.vim
|
||||
|
||||
set belloff=all
|
||||
source test_assign.vim
|
||||
source test_bufline.vim
|
||||
|
||||
@@ -29,3 +29,17 @@ func Test_let_termcap()
|
||||
let &t_xx = ""
|
||||
call assert_fails('let x = &t_xx', 'E15')
|
||||
endfunc
|
||||
|
||||
func Test_let_option_error()
|
||||
let _w = &tw
|
||||
let &tw = 80
|
||||
call assert_fails('let &tw .= 1', 'E734')
|
||||
call assert_equal(80, &tw)
|
||||
let &tw = _w
|
||||
|
||||
let _w = &fillchars
|
||||
let &fillchars = "vert:|"
|
||||
call assert_fails('let &fillchars += "diff:-"', 'E734')
|
||||
call assert_equal("vert:|", &fillchars)
|
||||
let &fillchars = _w
|
||||
endfunc
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
" Tests for setbufline() and getbufline()
|
||||
|
||||
if !exists('*GetVimCommand')
|
||||
source shared.vim
|
||||
endif
|
||||
source shared.vim
|
||||
|
||||
func Test_setbufline_getbufline()
|
||||
new
|
||||
|
||||
@@ -420,7 +420,7 @@ func Test_setting_cursor()
|
||||
new Xtest2
|
||||
put =range(1,100)
|
||||
wq
|
||||
|
||||
|
||||
tabe Xtest2
|
||||
$
|
||||
diffsp Xtest1
|
||||
@@ -501,7 +501,7 @@ func Test_diffpatch()
|
||||
3
|
||||
+ 4
|
||||
.
|
||||
saveas Xpatch
|
||||
saveas! Xpatch
|
||||
bwipe!
|
||||
new
|
||||
call assert_fails('diffpatch Xpatch', 'E816:')
|
||||
@@ -547,6 +547,47 @@ func Test_diff_nomodifiable()
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_diff_hlID()
|
||||
new
|
||||
call setline(1, [1, 2, 3])
|
||||
diffthis
|
||||
vnew
|
||||
call setline(1, ['1x', 2, 'x', 3])
|
||||
diffthis
|
||||
redraw
|
||||
|
||||
call assert_equal(synIDattr(diff_hlID(-1, 1), "name"), "")
|
||||
|
||||
call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange")
|
||||
call assert_equal(synIDattr(diff_hlID(1, 2), "name"), "DiffText")
|
||||
call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "")
|
||||
call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "DiffAdd")
|
||||
call assert_equal(synIDattr(diff_hlID(4, 1), "name"), "")
|
||||
|
||||
wincmd w
|
||||
call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange")
|
||||
call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "")
|
||||
call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "")
|
||||
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_diff_filler()
|
||||
new
|
||||
call setline(1, [1, 2, 3, 'x', 4])
|
||||
diffthis
|
||||
vnew
|
||||
call setline(1, [1, 2, 'y', 'y', 3, 4])
|
||||
diffthis
|
||||
redraw
|
||||
|
||||
call assert_equal([0, 0, 0, 0, 0, 0, 0, 1, 0], map(range(-1, 7), 'diff_filler(v:val)'))
|
||||
wincmd w
|
||||
call assert_equal([0, 0, 0, 0, 2, 0, 0, 0], map(range(-1, 6), 'diff_filler(v:val)'))
|
||||
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_diff_lastline()
|
||||
enew!
|
||||
only!
|
||||
|
||||
@@ -314,6 +314,33 @@ func! Test_edit_11()
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
func! Test_edit_11_indentexpr()
|
||||
" Test that indenting kicks in
|
||||
new
|
||||
" Use indentexpr instead of cindenting
|
||||
func! Do_Indent()
|
||||
let pline=prevnonblank(v:lnum)
|
||||
if empty(getline(v:lnum))
|
||||
if getline(pline) =~ 'if\|then'
|
||||
return shiftwidth()
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunc
|
||||
setl indentexpr=Do_Indent() indentkeys+=0=then,0=fi
|
||||
call setline(1, ['if [ $this ]'])
|
||||
call cursor(1, 1)
|
||||
call feedkeys("othen\<cr>that\<cr>fi", 'tnix')
|
||||
call assert_equal(['if [ $this ]', "then", "\<tab>that", "fi"], getline(1, '$'))
|
||||
set cinkeys&vim indentkeys&vim
|
||||
set nocindent indentexpr=
|
||||
delfu Do_Indent
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
func! Test_edit_12()
|
||||
" Test changing indent in replace mode
|
||||
new
|
||||
|
||||
@@ -28,3 +28,31 @@ func Test_File_Size()
|
||||
call delete('Xtest')
|
||||
set belloff& fileformat& undolevels&
|
||||
endfunc
|
||||
|
||||
" Test for writing and reading a file of over 100 Kbyte
|
||||
func Test_File_Read_Write()
|
||||
enew!
|
||||
|
||||
" Create a file with the following contents
|
||||
" 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"
|
||||
call append(0, "This is the start")
|
||||
call append(1, repeat(["This is the leader"], 3001))
|
||||
call append(3002, "This is the middle")
|
||||
call append(3003, repeat(["This is the trailer"], 3001))
|
||||
call append(6004, "This is the end")
|
||||
|
||||
write! Xtest
|
||||
enew!
|
||||
edit! Xtest
|
||||
|
||||
call assert_equal("This is the start", getline(1))
|
||||
call assert_equal("This is the middle", getline(3003))
|
||||
call assert_equal("This is the end", getline(6005))
|
||||
|
||||
enew!
|
||||
call delete("Xtest")
|
||||
endfunc
|
||||
|
||||
@@ -86,3 +86,19 @@ func Test_var()
|
||||
call assert_equal(1, gettabwinvar(2, 3, '&nux', 1))
|
||||
tabonly
|
||||
endfunc
|
||||
|
||||
" It was discovered that "gettabvar()" would fail if called from within the
|
||||
" tabline when the user closed a window. This test confirms the fix.
|
||||
func Test_gettabvar_in_tabline()
|
||||
let t:var_str = 'value'
|
||||
|
||||
set tabline=%{assert_equal('value',gettabvar(1,'var_str'))}
|
||||
set showtabline=2
|
||||
|
||||
" Simulate the user opening a split (which becomes window #1) and then
|
||||
" closing the split, which triggers the redrawing of the tabline.
|
||||
leftabove split
|
||||
redrawstatus!
|
||||
close
|
||||
redrawstatus!
|
||||
endfunc
|
||||
|
||||
@@ -111,6 +111,15 @@ func Test_gn_command()
|
||||
call assert_equal(['foo baz'], getline(1,'$'))
|
||||
sil! %d_
|
||||
|
||||
" search upwards with nowrapscan set
|
||||
call setline('.', ['foo', 'bar', 'foo', 'baz'])
|
||||
set nowrapscan
|
||||
let @/='foo'
|
||||
$
|
||||
norm! dgN
|
||||
call assert_equal(['foo', 'bar', '', 'baz'], getline(1,'$'))
|
||||
sil! %d_
|
||||
|
||||
set wrapscan&vim
|
||||
set belloff&vim
|
||||
endfu
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
" Tests for ":highlight".
|
||||
" Tests for ":highlight" and highlighting.
|
||||
|
||||
source view_util.vim
|
||||
|
||||
func Test_highlight()
|
||||
" basic test if ":highlight" doesn't crash
|
||||
highlight
|
||||
@@ -34,3 +37,480 @@ func Test_highlight()
|
||||
\ split(execute("hi Group3"), "\n")[0])
|
||||
call assert_fails("hi Crash term='asdf", "E475:")
|
||||
endfunc
|
||||
|
||||
function! HighlightArgs(name)
|
||||
return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\<xxx\>', '', '')
|
||||
endfunction
|
||||
|
||||
function! IsColorable()
|
||||
return has('gui_running') || str2nr(&t_Co) >= 8
|
||||
endfunction
|
||||
|
||||
function! HiCursorLine()
|
||||
let hiCursorLine = HighlightArgs('CursorLine')
|
||||
if has('gui_running')
|
||||
let guibg = matchstr(hiCursorLine, 'guibg=\w\+')
|
||||
let hi_ul = 'hi CursorLine gui=underline guibg=NONE'
|
||||
let hi_bg = 'hi CursorLine gui=NONE ' . guibg
|
||||
else
|
||||
let hi_ul = 'hi CursorLine cterm=underline ctermbg=NONE'
|
||||
let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray'
|
||||
endif
|
||||
return [hiCursorLine, hi_ul, hi_bg]
|
||||
endfunction
|
||||
|
||||
function! Check_lcs_eol_attrs(attrs, row, col)
|
||||
let save_lcs = &lcs
|
||||
set list
|
||||
|
||||
call assert_equal(a:attrs, ScreenAttrs(a:row, a:col)[0])
|
||||
|
||||
set nolist
|
||||
let &lcs = save_lcs
|
||||
endfunction
|
||||
|
||||
func Test_highlight_eol_with_cursorline()
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 20)
|
||||
call setline(1, 'abcd')
|
||||
call matchadd('Search', '\n')
|
||||
|
||||
" expected:
|
||||
" 'abcd '
|
||||
" ^^^^ ^^^^^ no highlight
|
||||
" ^ 'Search' highlight
|
||||
let attrs0 = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs0[0]], 4), attrs0[0:3])
|
||||
call assert_equal(repeat([attrs0[0]], 5), attrs0[5:9])
|
||||
call assert_notequal(attrs0[0], attrs0[4])
|
||||
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" 'abcd '
|
||||
" ^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^^^ underline
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal([attrs[4]] + repeat([attrs[5]], 5), attrs[4:9])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[4], attrs[4])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" 'abcd '
|
||||
" ^^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal(repeat([attrs[5]], 5), attrs[5:9])
|
||||
call assert_equal(attrs0[4], attrs[4])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[5], attrs[5])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
endif
|
||||
|
||||
call CloseWindow()
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_with_cursorline_vertsplit()
|
||||
if !has('vertsplit')
|
||||
return
|
||||
endif
|
||||
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 5)
|
||||
call setline(1, 'abcd')
|
||||
call matchadd('Search', '\n')
|
||||
|
||||
let expected = "abcd |abcd "
|
||||
let actual = ScreenLines(1, 15)[0]
|
||||
call assert_equal(expected, actual)
|
||||
|
||||
" expected:
|
||||
" 'abcd |abcd '
|
||||
" ^^^^ ^^^^^^^^^ no highlight
|
||||
" ^ 'Search' highlight
|
||||
" ^ 'VertSplit' highlight
|
||||
let attrs0 = ScreenAttrs(1, 15)[0]
|
||||
call assert_equal(repeat([attrs0[0]], 4), attrs0[0:3])
|
||||
call assert_equal(repeat([attrs0[0]], 9), attrs0[6:14])
|
||||
call assert_notequal(attrs0[0], attrs0[4])
|
||||
call assert_notequal(attrs0[0], attrs0[5])
|
||||
call assert_notequal(attrs0[4], attrs0[5])
|
||||
|
||||
setlocal cursorline
|
||||
|
||||
" expected:
|
||||
" 'abcd |abcd '
|
||||
" ^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^ 'VertSplit' highlight
|
||||
" ^^^^^^^^^ no highlight
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
let actual = ScreenLines(1, 15)[0]
|
||||
call assert_equal(expected, actual)
|
||||
|
||||
let attrs = ScreenAttrs(1, 15)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal(repeat([attrs[6]], 9), attrs[6:14])
|
||||
call assert_equal(attrs0[5:14], attrs[5:14])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[0], attrs[5])
|
||||
call assert_notequal(attrs[0], attrs[6])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs[5], attrs[6])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[4], attrs[4])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 15)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
let actual = ScreenLines(1, 15)[0]
|
||||
call assert_equal(expected, actual)
|
||||
|
||||
let attrs = ScreenAttrs(1, 15)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal(repeat([attrs[6]], 9), attrs[6:14])
|
||||
call assert_equal(attrs0[5:14], attrs[5:14])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[0], attrs[5])
|
||||
call assert_notequal(attrs[0], attrs[6])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs[5], attrs[6])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_equal(attrs0[4], attrs[4])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 15)
|
||||
endif
|
||||
|
||||
call CloseWindow()
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_with_cursorline_rightleft()
|
||||
if !has('rightleft')
|
||||
return
|
||||
endif
|
||||
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 10)
|
||||
setlocal rightleft
|
||||
call setline(1, 'abcd')
|
||||
call matchadd('Search', '\n')
|
||||
let attrs0 = ScreenAttrs(1, 10)[0]
|
||||
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" ' dcba'
|
||||
" ^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^^^ underline
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[9]], 4), attrs[6:9])
|
||||
call assert_equal(repeat([attrs[4]], 5) + [attrs[5]], attrs[0:5])
|
||||
call assert_notequal(attrs[9], attrs[5])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs0[9], attrs[9])
|
||||
call assert_notequal(attrs0[5], attrs[5])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" ' dcba'
|
||||
" ^^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[9]], 4), attrs[6:9])
|
||||
call assert_equal(repeat([attrs[4]], 5), attrs[0:4])
|
||||
call assert_equal(attrs0[5], attrs[5])
|
||||
call assert_notequal(attrs[9], attrs[5])
|
||||
call assert_notequal(attrs[5], attrs[4])
|
||||
call assert_notequal(attrs0[9], attrs[9])
|
||||
call assert_notequal(attrs0[4], attrs[4])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
endif
|
||||
|
||||
call CloseWindow()
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_with_cursorline_linewrap()
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 10)
|
||||
call setline(1, [repeat('a', 51) . 'bcd', ''])
|
||||
call matchadd('Search', '\n')
|
||||
|
||||
setlocal wrap
|
||||
normal! gg$
|
||||
let attrs0 = ScreenAttrs(5, 10)[0]
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" 'abcd '
|
||||
" ^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^^^ underline
|
||||
let attrs = ScreenAttrs(5, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal([attrs[4]] + repeat([attrs[5]], 5), attrs[4:9])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[4], attrs[4])
|
||||
call Check_lcs_eol_attrs(attrs, 5, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" 'abcd '
|
||||
" ^^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(5, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 4), attrs[0:3])
|
||||
call assert_equal(repeat([attrs[5]], 5), attrs[5:9])
|
||||
call assert_equal(attrs0[4], attrs[4])
|
||||
call assert_notequal(attrs[0], attrs[4])
|
||||
call assert_notequal(attrs[4], attrs[5])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[5], attrs[5])
|
||||
call Check_lcs_eol_attrs(attrs, 5, 10)
|
||||
endif
|
||||
|
||||
setlocal nocursorline nowrap
|
||||
normal! gg$
|
||||
let attrs0 = ScreenAttrs(1, 10)[0]
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" 'aaabcd '
|
||||
" ^^^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^ underline
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 6), attrs[0:5])
|
||||
call assert_equal([attrs[6]] + repeat([attrs[7]], 3), attrs[6:9])
|
||||
call assert_notequal(attrs[0], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[6], attrs[6])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" 'aaabcd '
|
||||
" ^^^^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 6), attrs[0:5])
|
||||
call assert_equal(repeat([attrs[7]], 3), attrs[7:9])
|
||||
call assert_equal(attrs0[6], attrs[6])
|
||||
call assert_notequal(attrs[0], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs0[7], attrs[7])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
endif
|
||||
|
||||
call CloseWindow()
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_with_cursorline_sign()
|
||||
if !has('signs')
|
||||
return
|
||||
endif
|
||||
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 10)
|
||||
call setline(1, 'abcd')
|
||||
call matchadd('Search', '\n')
|
||||
|
||||
sign define Sign text=>>
|
||||
exe 'sign place 1 line=1 name=Sign buffer=' . bufnr('')
|
||||
let attrs0 = ScreenAttrs(1, 10)[0]
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" '>>abcd '
|
||||
" ^^ sign
|
||||
" ^^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^ underline
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[2]], 4), attrs[2:5])
|
||||
call assert_equal([attrs[6]] + repeat([attrs[7]], 3), attrs[6:9])
|
||||
call assert_notequal(attrs[2], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[2], attrs[2])
|
||||
call assert_notequal(attrs0[6], attrs[6])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" '>>abcd '
|
||||
" ^^ sign
|
||||
" ^^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[2]], 4), attrs[2:5])
|
||||
call assert_equal(repeat([attrs[7]], 3), attrs[7:9])
|
||||
call assert_equal(attrs0[6], attrs[6])
|
||||
call assert_notequal(attrs[2], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[2], attrs[2])
|
||||
call assert_notequal(attrs0[7], attrs[7])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
endif
|
||||
|
||||
sign unplace 1
|
||||
call CloseWindow()
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_with_cursorline_breakindent()
|
||||
if !has('linebreak')
|
||||
return
|
||||
endif
|
||||
|
||||
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
|
||||
|
||||
call NewWindow('topleft 5', 10)
|
||||
setlocal breakindent breakindentopt=min:0,shift:1 showbreak=>
|
||||
call setline(1, ' ' . repeat('a', 9) . 'bcd')
|
||||
call matchadd('Search', '\n')
|
||||
let attrs0 = ScreenAttrs(2, 10)[0]
|
||||
setlocal cursorline
|
||||
|
||||
" underline
|
||||
exe hi_ul
|
||||
|
||||
" expected:
|
||||
" ' >bcd '
|
||||
" ^^^ breakindent and showbreak
|
||||
" ^^^ underline
|
||||
" ^ 'Search' highlight with underline
|
||||
" ^^^ underline
|
||||
let attrs = ScreenAttrs(2, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 2), attrs[0:1])
|
||||
call assert_equal(repeat([attrs[3]], 3), attrs[3:5])
|
||||
call assert_equal([attrs[6]] + repeat([attrs[7]], 3), attrs[6:9])
|
||||
call assert_equal(attrs0[0], attrs[0])
|
||||
call assert_notequal(attrs[0], attrs[2])
|
||||
call assert_notequal(attrs[2], attrs[3])
|
||||
call assert_notequal(attrs[3], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[2], attrs[2])
|
||||
call assert_notequal(attrs0[3], attrs[3])
|
||||
call assert_notequal(attrs0[6], attrs[6])
|
||||
call Check_lcs_eol_attrs(attrs, 2, 10)
|
||||
|
||||
if IsColorable()
|
||||
" bg-color
|
||||
exe hi_bg
|
||||
|
||||
" expected:
|
||||
" ' >bcd '
|
||||
" ^^^ breakindent and showbreak
|
||||
" ^^^ bg-color of 'CursorLine'
|
||||
" ^ 'Search' highlight
|
||||
" ^^^ bg-color of 'CursorLine'
|
||||
let attrs = ScreenAttrs(2, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 2), attrs[0:1])
|
||||
call assert_equal(repeat([attrs[3]], 3), attrs[3:5])
|
||||
call assert_equal(repeat([attrs[7]], 3), attrs[7:9])
|
||||
call assert_equal(attrs0[0], attrs[0])
|
||||
call assert_equal(attrs0[6], attrs[6])
|
||||
call assert_notequal(attrs[0], attrs[2])
|
||||
call assert_notequal(attrs[2], attrs[3])
|
||||
call assert_notequal(attrs[3], attrs[6])
|
||||
call assert_notequal(attrs[6], attrs[7])
|
||||
call assert_notequal(attrs0[2], attrs[2])
|
||||
call assert_notequal(attrs0[3], attrs[3])
|
||||
call assert_notequal(attrs0[7], attrs[7])
|
||||
call Check_lcs_eol_attrs(attrs, 2, 10)
|
||||
endif
|
||||
|
||||
call CloseWindow()
|
||||
set showbreak=
|
||||
exe hiCursorLine
|
||||
endfunc
|
||||
|
||||
func Test_highlight_eol_on_diff()
|
||||
call setline(1, ['abcd', ''])
|
||||
call matchadd('Search', '\n')
|
||||
let attrs0 = ScreenAttrs(1, 10)[0]
|
||||
|
||||
diffthis
|
||||
botright new
|
||||
diffthis
|
||||
|
||||
" expected:
|
||||
" ' abcd '
|
||||
" ^^ sign
|
||||
" ^^^^ ^^^ 'DiffAdd' highlight
|
||||
" ^ 'Search' highlight
|
||||
let attrs = ScreenAttrs(1, 10)[0]
|
||||
call assert_equal(repeat([attrs[0]], 2), attrs[0:1])
|
||||
call assert_equal(repeat([attrs[2]], 4), attrs[2:5])
|
||||
call assert_equal(repeat([attrs[2]], 3), attrs[7:9])
|
||||
call assert_equal(attrs0[4], attrs[6])
|
||||
call assert_notequal(attrs[0], attrs[2])
|
||||
call assert_notequal(attrs[0], attrs[6])
|
||||
call assert_notequal(attrs[2], attrs[6])
|
||||
call Check_lcs_eol_attrs(attrs, 1, 10)
|
||||
|
||||
bwipe!
|
||||
diffoff
|
||||
endfunc
|
||||
|
||||
@@ -14,3 +14,68 @@ func Test_global_local_lispwords()
|
||||
call assert_equal('foo,bar,baz', &l:lispwords)
|
||||
call assert_equal('foo,bar,baz', &lispwords)
|
||||
endfunc
|
||||
|
||||
func Test_lisp_indent()
|
||||
enew!
|
||||
|
||||
call append(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>")))'
|
||||
\ ])
|
||||
set lisp
|
||||
set lispwords&
|
||||
let save_copt = &cpoptions
|
||||
set cpoptions+=p
|
||||
normal 1G=G
|
||||
|
||||
call assert_equal([
|
||||
\ '(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>")))',
|
||||
\ ''
|
||||
\ ], getline(1, "$"))
|
||||
|
||||
enew!
|
||||
let &cpoptions=save_copt
|
||||
endfunc
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
" Test for completion menu
|
||||
|
||||
source shared.vim
|
||||
|
||||
let g:months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
let g:setting = ''
|
||||
|
||||
@@ -36,6 +38,7 @@ endfu
|
||||
func! Test_popup_complete()
|
||||
new
|
||||
inoremap <f5> <c-r>=ListMonths()<cr>
|
||||
set belloff=all
|
||||
|
||||
" <C-E> - select original typed text before the completion started
|
||||
call feedkeys("aJu\<f5>\<down>\<c-e>\<esc>", 'tx')
|
||||
@@ -212,6 +215,7 @@ func! Test_popup_complete()
|
||||
call feedkeys("aM\<f5>\<enter>\<esc>", 'tx')
|
||||
call assert_equal(["March", "M", "March"], getline(1,4))
|
||||
%d
|
||||
set belloff&
|
||||
endfu
|
||||
|
||||
|
||||
@@ -513,6 +517,7 @@ endfunc
|
||||
|
||||
func Test_completion_respect_bs_option()
|
||||
new
|
||||
set belloff=all
|
||||
let li = ["aaa", "aaa12345", "aaaabcdef", "aaaABC"]
|
||||
|
||||
set bs=indent,eol
|
||||
@@ -528,6 +533,7 @@ func Test_completion_respect_bs_option()
|
||||
call feedkeys("A\<C-X>\<C-N>\<C-P>\<BS>\<BS>\<BS>\<Esc>", "tx")
|
||||
call assert_equal('', getline(1))
|
||||
|
||||
set belloff&
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
@@ -614,6 +620,7 @@ endfunc
|
||||
|
||||
func Test_complete_CTRLN_startofbuffer()
|
||||
new
|
||||
set belloff=all
|
||||
call setline(1, [ 'organize(cupboard, 3, 2);',
|
||||
\ 'prioritize(bureau, 8, 7);',
|
||||
\ 'realize(bannister, 4, 4);',
|
||||
@@ -624,6 +631,39 @@ func Test_complete_CTRLN_startofbuffer()
|
||||
\ 'railing.moralize(3,9);']
|
||||
call feedkeys("qai\<c-n>\<c-n>.\<esc>3wdW\<cr>q3@a", 'tx')
|
||||
call assert_equal(expected, getline(1,'$'))
|
||||
set belloff&
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_popup_and_window_resize()
|
||||
if !has('terminal') || has('gui_running')
|
||||
return
|
||||
endif
|
||||
let h = winheight(0)
|
||||
if h < 15
|
||||
return
|
||||
endif
|
||||
let g:buf = term_start([$VIMPROG, '--clean', '-c', 'set noswapfile'], {'term_rows': h / 3})
|
||||
call term_sendkeys(g:buf, (h / 3 - 1)."o\<esc>G")
|
||||
call term_sendkeys(g:buf, "i\<c-x>")
|
||||
call term_wait(g:buf, 200)
|
||||
call term_sendkeys(g:buf, "\<c-v>")
|
||||
call term_wait(g:buf, 100)
|
||||
" popup first entry "!" must be at the top
|
||||
call WaitFor('term_getline(g:buf, 1) =~ "^!"')
|
||||
call assert_match('^!\s*$', term_getline(g:buf, 1))
|
||||
exe 'resize +' . (h - 1)
|
||||
call term_wait(g:buf, 100)
|
||||
redraw!
|
||||
" popup shifted down, first line is now empty
|
||||
call WaitFor('term_getline(g:buf, 1) == ""')
|
||||
call assert_equal('', term_getline(g:buf, 1))
|
||||
sleep 100m
|
||||
" popup is below cursor line and shows first match "!"
|
||||
call WaitFor('term_getline(g:buf, term_getcursor(g:buf)[0] + 1) =~ "^!"')
|
||||
call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0] + 1))
|
||||
" cursor line also shows !
|
||||
call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0]))
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user