mirror of
https://github.com/vim/vim
synced 2025-07-17 17:52:07 +00:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
9e58787de7 | |||
957f85d54e | |||
bc4fd43160 | |||
a9b2535f44 | |||
8aad88d8de | |||
97b0075b0d | |||
b73fbc76c6 | |||
5d0183b706 | |||
6e75e0a400 | |||
a334772967 | |||
6d2399bd10 | |||
6ed8819822 | |||
ec28d1516e | |||
3f86ca0faa |
2
Filelist
2
Filelist
@ -20,6 +20,7 @@ SRC_ALL = \
|
|||||||
src/blob.c \
|
src/blob.c \
|
||||||
src/blowfish.c \
|
src/blowfish.c \
|
||||||
src/buffer.c \
|
src/buffer.c \
|
||||||
|
src/change.c \
|
||||||
src/channel.c \
|
src/channel.c \
|
||||||
src/charset.c \
|
src/charset.c \
|
||||||
src/crypt.c \
|
src/crypt.c \
|
||||||
@ -155,6 +156,7 @@ SRC_ALL = \
|
|||||||
src/proto/blob.pro \
|
src/proto/blob.pro \
|
||||||
src/proto/blowfish.pro \
|
src/proto/blowfish.pro \
|
||||||
src/proto/buffer.pro \
|
src/proto/buffer.pro \
|
||||||
|
src/proto/change.pro \
|
||||||
src/proto/channel.pro \
|
src/proto/channel.pro \
|
||||||
src/proto/charset.pro \
|
src/proto/charset.pro \
|
||||||
src/proto/crypt.pro \
|
src/proto/crypt.pro \
|
||||||
|
@ -83,6 +83,7 @@ DOCS = \
|
|||||||
pi_tar.txt \
|
pi_tar.txt \
|
||||||
pi_vimball.txt \
|
pi_vimball.txt \
|
||||||
pi_zip.txt \
|
pi_zip.txt \
|
||||||
|
popup.txt \
|
||||||
print.txt \
|
print.txt \
|
||||||
quickfix.txt \
|
quickfix.txt \
|
||||||
quickref.txt \
|
quickref.txt \
|
||||||
@ -220,6 +221,7 @@ HTMLS = \
|
|||||||
pi_tar.html \
|
pi_tar.html \
|
||||||
pi_vimball.html \
|
pi_vimball.html \
|
||||||
pi_zip.html \
|
pi_zip.html \
|
||||||
|
popup.html \
|
||||||
print.html \
|
print.html \
|
||||||
quickfix.html \
|
quickfix.html \
|
||||||
quickref.html \
|
quickref.html \
|
||||||
|
@ -2457,6 +2457,9 @@ line({expr}) Number line nr of cursor, last line or mark
|
|||||||
line2byte({lnum}) Number byte count of line {lnum}
|
line2byte({lnum}) Number byte count of line {lnum}
|
||||||
lispindent({lnum}) Number Lisp indent for line {lnum}
|
lispindent({lnum}) Number Lisp indent for line {lnum}
|
||||||
list2str({list} [, {utf8}]) String turn numbers in {list} into a String
|
list2str({list} [, {utf8}]) String turn numbers in {list} into a String
|
||||||
|
listener_add({callback} [, {buf}])
|
||||||
|
Number add a callback to listen to changes
|
||||||
|
listener_remove({id}) none remove a listener callback
|
||||||
localtime() Number current time
|
localtime() Number current time
|
||||||
log({expr}) Float natural logarithm (base e) of {expr}
|
log({expr}) Float natural logarithm (base e) of {expr}
|
||||||
log10({expr}) Float logarithm of Float {expr} to base 10
|
log10({expr}) Float logarithm of Float {expr} to base 10
|
||||||
@ -6311,6 +6314,68 @@ list2str({list} [, {utf8}]) *list2str()*
|
|||||||
With utf-8 composing characters work as expected: >
|
With utf-8 composing characters work as expected: >
|
||||||
list2str([97, 769]) returns "á"
|
list2str([97, 769]) returns "á"
|
||||||
<
|
<
|
||||||
|
listener_add({callback} [, {buf}]) *listener_add()*
|
||||||
|
Add a callback function that will be invoked when changes have
|
||||||
|
been made to buffer {buf}.
|
||||||
|
{buf} refers to a buffer name or number. For the accepted
|
||||||
|
values, see |bufname()|. When {buf} is omitted the current
|
||||||
|
buffer is used.
|
||||||
|
Returns a unique ID that can be passed to |listener_remove()|.
|
||||||
|
|
||||||
|
The {callback} is invoked with a list of items that indicate a
|
||||||
|
change. The list cannot be changed. Each list item is a
|
||||||
|
dictionary with these entries:
|
||||||
|
lnum the first line number of the change
|
||||||
|
end the first line below the change
|
||||||
|
added number of lines added; negative if lines were
|
||||||
|
deleted
|
||||||
|
col first column in "lnum" that was affected by
|
||||||
|
the change; one if unknown or the whole line
|
||||||
|
was affected; this is a byte index, first
|
||||||
|
character has a value of one.
|
||||||
|
When lines are inserted the values are:
|
||||||
|
lnum line below which the new line is added
|
||||||
|
end equal to "lnum"
|
||||||
|
added number of lines inserted
|
||||||
|
col one
|
||||||
|
When lines are deleted the values are:
|
||||||
|
lnum the first deleted line
|
||||||
|
end the line below the first deleted line, before
|
||||||
|
the deletion was done
|
||||||
|
added negative, number of lines deleted
|
||||||
|
col one
|
||||||
|
When lines are changed:
|
||||||
|
lnum the first changed line
|
||||||
|
end the line below the last changed line
|
||||||
|
added zero
|
||||||
|
col first column with a change or one
|
||||||
|
|
||||||
|
The entries are in the order the changes was made, thus the
|
||||||
|
most recent change is at the end. One has to go through the
|
||||||
|
list from end to start to compute the line numbers in the
|
||||||
|
current state of the text.
|
||||||
|
|
||||||
|
When using the same function for multiple buffers, you can
|
||||||
|
pass the buffer to that function using a |Partial|.
|
||||||
|
Example: >
|
||||||
|
func Listener(bufnr, changes)
|
||||||
|
" ...
|
||||||
|
endfunc
|
||||||
|
let bufnr = ...
|
||||||
|
call listener_add(function('Listener', [bufnr]), bufnr)
|
||||||
|
|
||||||
|
< The {callback} is invoked just before the screen is updated.
|
||||||
|
To trigger this in a script use the `:redraw` command.
|
||||||
|
|
||||||
|
The {callback} is not invoked when the buffer is first loaded.
|
||||||
|
Use the |BufReadPost| autocmd event to handle the initial text
|
||||||
|
of a buffer.
|
||||||
|
The {callback} is also not invoked when the buffer is
|
||||||
|
unloaded, use the |BufUnload| autocmd event for that.
|
||||||
|
|
||||||
|
listener_remove({id}) *listener_remove()*
|
||||||
|
Remove a listener previously added with listener_add().
|
||||||
|
|
||||||
localtime() *localtime()*
|
localtime() *localtime()*
|
||||||
Return the current time, measured as seconds since 1st Jan
|
Return the current time, measured as seconds since 1st Jan
|
||||||
1970. See also |strftime()| and |getftime()|.
|
1970. See also |strftime()| and |getftime()|.
|
||||||
@ -10934,10 +10999,10 @@ expressions |expr-lambda|.
|
|||||||
|
|
||||||
Example: >
|
Example: >
|
||||||
function Something(key, value = 10)
|
function Something(key, value = 10)
|
||||||
echo a:key .. ": " .. value
|
echo a:key .. ": " .. a:value
|
||||||
endfunction
|
endfunction
|
||||||
call Something('empty') "empty: 10"
|
call Something('empty') "empty: 10"
|
||||||
call Something('key, 20) "key: 20"
|
call Something('key', 20) "key: 20"
|
||||||
|
|
||||||
The argument default expressions are evaluated at the time of the function
|
The argument default expressions are evaluated at the time of the function
|
||||||
call, not definition. Thus it is possible to use an expression which is
|
call, not definition. Thus it is possible to use an expression which is
|
||||||
|
@ -143,6 +143,7 @@ Special issues ~
|
|||||||
|remote.txt| using Vim as a server or client
|
|remote.txt| using Vim as a server or client
|
||||||
|term.txt| using different terminals and mice
|
|term.txt| using different terminals and mice
|
||||||
|terminal.txt| Terminal window support
|
|terminal.txt| Terminal window support
|
||||||
|
|popup.txt| popop window support
|
||||||
|
|
||||||
Programming language support ~
|
Programming language support ~
|
||||||
|indent.txt| automatic indenting for C and other languages
|
|indent.txt| automatic indenting for C and other languages
|
||||||
|
274
runtime/doc/popup.txt
Normal file
274
runtime/doc/popup.txt
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
*popup.txt* For Vim version 8.1. Last change: 2019 May 12
|
||||||
|
|
||||||
|
|
||||||
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
|
|
||||||
|
|
||||||
|
Displaying text with properties attached. *popup* *popup-window*
|
||||||
|
|
||||||
|
THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
|
||||||
|
|
||||||
|
1. Introduction |popup-intro|
|
||||||
|
2. Functions |popup-functions|
|
||||||
|
3. Examples |popup-examples|
|
||||||
|
|
||||||
|
|
||||||
|
{not able to use text properties when the |+textprop| feature was
|
||||||
|
disabled at compile time}
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
1. Introduction *popup-intro*
|
||||||
|
|
||||||
|
We are talking about popup windows here, text that goes on top of the buffer
|
||||||
|
text and is under control of a plugin. Other popup functionality:
|
||||||
|
- popup menu, see |popup-menu|
|
||||||
|
- balloon, see |balloon-eval|
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
2. Functions *popup-functions*
|
||||||
|
|
||||||
|
THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
|
||||||
|
|
||||||
|
Proposal and discussion on issue #4063: https://github.com/vim/vim/issues/4063
|
||||||
|
|
||||||
|
[to be moved to eval.txt later]
|
||||||
|
|
||||||
|
popup_show({lines}, {options}) *popup_show()*
|
||||||
|
Open a popup window showing {lines}, which is a list of lines,
|
||||||
|
where each line has text and text properties.
|
||||||
|
|
||||||
|
{options} is a dictionary with many possible entries.
|
||||||
|
|
||||||
|
Returns a unique ID to be used with |popup_close()|.
|
||||||
|
|
||||||
|
See |popup_show-usage| for details.
|
||||||
|
|
||||||
|
|
||||||
|
popup_dialog({lines}, {options}) *popup_dialog()*
|
||||||
|
Just like |popup_show()| but with different default options:
|
||||||
|
pos "center"
|
||||||
|
zindex 200
|
||||||
|
border []
|
||||||
|
|
||||||
|
|
||||||
|
popup_notification({text}, {options}) *popup_notification()*
|
||||||
|
Show the string {text} for 3 seconds at the top of the Vim
|
||||||
|
window. This works like: >
|
||||||
|
call popup_show([{'text': {text}}], {
|
||||||
|
\ 'line': 1,
|
||||||
|
\ 'col': 10,
|
||||||
|
\ 'time': 3000,
|
||||||
|
\ 'zindex': 200,
|
||||||
|
\ 'highlight': 'WarningMsg',
|
||||||
|
\ 'border: [],
|
||||||
|
\ })
|
||||||
|
< Use {options} to change the properties.
|
||||||
|
|
||||||
|
popup_atcursor({text}, {options}) *popup_atcursor()*
|
||||||
|
Show the string {text} above the cursor, and close it when the
|
||||||
|
cursor moves. This works like: >
|
||||||
|
call popup_show([{'text': {text}}], {
|
||||||
|
\ 'line': 'cursor-1',
|
||||||
|
\ 'col': 'cursor',
|
||||||
|
\ 'zindex': 50,
|
||||||
|
\ 'moved': 'WORD',
|
||||||
|
\ })
|
||||||
|
< Use {options} to change the properties.
|
||||||
|
|
||||||
|
|
||||||
|
popup_menu({lines}, {options}) *popup_atcursor()*
|
||||||
|
Show the {lines} near the cursor, handle selecting one of the
|
||||||
|
items with cursorkeys, and close it an item is selected with
|
||||||
|
Space or Enter. This works like: >
|
||||||
|
call popup_show({lines}, {
|
||||||
|
\ 'pos': 'center',
|
||||||
|
\ 'zindex': 200,
|
||||||
|
\ 'wrap': 0,
|
||||||
|
\ 'border': [],
|
||||||
|
\ 'filter': 'popup_filter_menu',
|
||||||
|
\ })
|
||||||
|
< Use {options} to change the properties. Should at least set
|
||||||
|
"callback" to a function that handles the selected item.
|
||||||
|
|
||||||
|
|
||||||
|
popup_move({id}, {options}) *popup_move()*
|
||||||
|
Move popup {id} to the position speficied with {options}.
|
||||||
|
{options} may contain the items from |popup_show()| that
|
||||||
|
specify the popup position: "line", "col", "pos", "maxheight",
|
||||||
|
"minheight", "maxwidth" and "minwidth".
|
||||||
|
|
||||||
|
|
||||||
|
popup_filter_menu({id}, {key}) *popup_filter_menu()*
|
||||||
|
Filter that can be used for a popup. It handles the cursor
|
||||||
|
keys to move the selected index in the popup. Space and Enter
|
||||||
|
can be used to select an item. Invokes the "callback" of the
|
||||||
|
popup menu with the index of the selected line as the second
|
||||||
|
argument.
|
||||||
|
|
||||||
|
|
||||||
|
popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
|
||||||
|
Filter that can be used for a popup. It handles only the keys
|
||||||
|
'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
|
||||||
|
popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
|
||||||
|
as the second argument. Pressing Esc and CTRL-C works like
|
||||||
|
pressing 'n'.
|
||||||
|
|
||||||
|
|
||||||
|
popup_setlines({id}, {lnum}, {lines}) *popup_setlines()*
|
||||||
|
In popup {id} set line {lnum} and following to {lines}.
|
||||||
|
|
||||||
|
{lnum} is one-based and must be either an existing line or
|
||||||
|
just one below the last line, in which case the line gets
|
||||||
|
appended.
|
||||||
|
|
||||||
|
{lines} has the same format as one item in {lines} of
|
||||||
|
|popup_show()|. Existing lines are replaced. When {lines}
|
||||||
|
extends below the last line of the popup lines are appended.
|
||||||
|
|
||||||
|
popup_getlines({id}) *popup_getlines()*
|
||||||
|
Return the {lines} for popup {id}.
|
||||||
|
|
||||||
|
|
||||||
|
popup_setoptions({id}, {options}) *popup_setoptions()*
|
||||||
|
Override options in popup {id} with entries in {options}.
|
||||||
|
|
||||||
|
|
||||||
|
popup_getoptions({id}) *popup_getoptions()*
|
||||||
|
Return the {options} for popup {id}.
|
||||||
|
|
||||||
|
|
||||||
|
popup_close({id}) *popup_close()*
|
||||||
|
Close popup {id}.
|
||||||
|
|
||||||
|
|
||||||
|
POPUP_SHOW() ARGUMENTS *popup_show-usage*
|
||||||
|
|
||||||
|
The first argument of |popup_show()| is a list of text lines. Each item in
|
||||||
|
the list is a dictionary with these entries:
|
||||||
|
text The text to display.
|
||||||
|
props A list of text properties. Optional.
|
||||||
|
Each entry is a dictionary, like the third argument of
|
||||||
|
|prop_add()|, but specifying the column in the
|
||||||
|
dictionary with a "col" entry, see below:
|
||||||
|
|popup-props|.
|
||||||
|
|
||||||
|
The second argument of |popup_show()| is a dictionary with options:
|
||||||
|
line screen line where to position the popup; can use
|
||||||
|
"cursor", "cursor+1" or "cursor-1" to use the line of
|
||||||
|
the cursor and add or subtract a number of lines;
|
||||||
|
default is "cursor-1".
|
||||||
|
col screen column where to position the popup; can use
|
||||||
|
"cursor" to use the column of the cursor, "cursor+99"
|
||||||
|
and "cursor-99" to add or subtract a number of
|
||||||
|
columns; default is "cursor"
|
||||||
|
pos "topleft", "topright", "botleft" or "botright":
|
||||||
|
defines what corner of the popup "line" and "col" are
|
||||||
|
used for. Default is "botleft". Alternatively
|
||||||
|
"center" can be used to position the popup somewhere
|
||||||
|
near the cursor.
|
||||||
|
maxheight maximum height
|
||||||
|
minheight minimum height
|
||||||
|
maxwidth maximum width
|
||||||
|
minwidth minimum width
|
||||||
|
title text to be displayed above the first item in the
|
||||||
|
popup, on top of any border
|
||||||
|
wrap TRUE to make the lines wrap (default TRUE)
|
||||||
|
highlight highlight group name to use for the text, defines the
|
||||||
|
background and foreground color
|
||||||
|
border list with numbers, defining the border thickness
|
||||||
|
above/right/below/left of the popup; an empty list
|
||||||
|
uses a border of 1 all around
|
||||||
|
borderhighlight highlight group name to use for the border
|
||||||
|
borderchars list with characters, defining the character to use
|
||||||
|
for the top/right/bottom/left border; optionally
|
||||||
|
followed by the character to use for the
|
||||||
|
topright/botright/botleft/topleft corner; an empty
|
||||||
|
list can be used to show a double line all around
|
||||||
|
zindex priority for the popup, default 50
|
||||||
|
time time in milliseconds after which the popup will close;
|
||||||
|
when omitted |popup_close()| must be used.
|
||||||
|
moved "cell": close the popup if the cursor moved at least
|
||||||
|
one screen cell; "word" allows for moving within
|
||||||
|
|<cword>|, "WORD" allows for moving within |<cWORD>|,
|
||||||
|
a list with two numbers specifies the start and end
|
||||||
|
column
|
||||||
|
filter a callback that can filter typed characters, see
|
||||||
|
|popup-filter|
|
||||||
|
callback a callback to be used when the popup closes, e.g. when
|
||||||
|
using |popup_filter_menu()|, see |popup-callback|.
|
||||||
|
|
||||||
|
Depending on the "zindex" the popup goes under or above other popups. The
|
||||||
|
completion menu (|popup-menu|) has zindex 100. For messages that occur for a
|
||||||
|
short time the suggestion is to use zindex 1000.
|
||||||
|
|
||||||
|
By default text wraps, which causes a line in {lines} to occupy more than one
|
||||||
|
screen line. When "wrap" is FALSE then the text outside of the popup or
|
||||||
|
outside of the Vim window will not be displayed, thus truncated.
|
||||||
|
|
||||||
|
|
||||||
|
POPUP TEXT PROPERTIES *popup-props*
|
||||||
|
|
||||||
|
These are similar to the third argument of |prop_add()|, but not exactly the
|
||||||
|
same, since they only apply to one line.
|
||||||
|
col starting column, counted in bytes, use one for the
|
||||||
|
first column.
|
||||||
|
length length of text in bytes; can be zero
|
||||||
|
end_col column just after the text; not used when "length" is
|
||||||
|
present; when {col} and "end_col" are equal, this is a
|
||||||
|
zero-width text property
|
||||||
|
id user defined ID for the property; when omitted zero is
|
||||||
|
used
|
||||||
|
type name of the text property type, as added with
|
||||||
|
|prop_type_add()|
|
||||||
|
transparent do not show these characters, show the text under it;
|
||||||
|
if there is an border character to the right or below
|
||||||
|
it will be made transparent as well
|
||||||
|
|
||||||
|
|
||||||
|
POPUP FILTER *popup-filter*
|
||||||
|
|
||||||
|
A callback that gets any typed keys while a popup is displayed. It can return
|
||||||
|
TRUE to indicate the key has been handled and is to be discarded, or FALSE to
|
||||||
|
let Vim handle the key as usual in the current state.
|
||||||
|
|
||||||
|
The filter function is called with two arguments: the ID of the popup and the
|
||||||
|
key.
|
||||||
|
|
||||||
|
Some common key actions:
|
||||||
|
Esc close the popup
|
||||||
|
cursor keys select another entry
|
||||||
|
Tab accept current suggestion
|
||||||
|
|
||||||
|
Vim provides standard filters |popup_filter_menu()| and
|
||||||
|
|popup_filter_yesno()|.
|
||||||
|
|
||||||
|
|
||||||
|
POPUP CALLBACK *popup-callback*
|
||||||
|
|
||||||
|
A callback that is invoked when the popup closes. Used by
|
||||||
|
|popup_filter_menu()|. Invoked with two arguments: the ID of the popup and
|
||||||
|
the result, which would usually be an index in the popup lines, or whatever
|
||||||
|
the filter wants to pass.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
3. Examples *popup-examples*
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Prompt the user to press y/Y or n/N: >
|
||||||
|
|
||||||
|
func MyDialogHandler(id, result)
|
||||||
|
if a:result
|
||||||
|
" ... 'y' or 'Y' was pressed
|
||||||
|
endif
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
call popup_show([{'text': 'Continue? y/n'}], {
|
||||||
|
\ 'filter': 'popup_filter_yesno',
|
||||||
|
\ 'callback': 'MyDialogHandler',
|
||||||
|
\ })
|
||||||
|
<
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:noet:ft=help:norl:
|
@ -812,6 +812,8 @@ Buffers, windows and the argument list:
|
|||||||
setbufline() replace a line in the specified buffer
|
setbufline() replace a line in the specified buffer
|
||||||
appendbufline() append a list of lines in the specified buffer
|
appendbufline() append a list of lines in the specified buffer
|
||||||
deletebufline() delete lines from a specified buffer
|
deletebufline() delete lines from a specified buffer
|
||||||
|
listener_add() add a callback to listen to changes
|
||||||
|
listener_remove() remove a listener callback
|
||||||
win_findbuf() find windows containing a buffer
|
win_findbuf() find windows containing a buffer
|
||||||
win_getid() get window ID of a window
|
win_getid() get window ID of a window
|
||||||
win_gotoid() go to window with ID
|
win_gotoid() go to window with ID
|
||||||
|
@ -163,17 +163,17 @@ INTLLIB=gnu_gettext
|
|||||||
# Command definitions (depends on cross-compiling and shell)
|
# Command definitions (depends on cross-compiling and shell)
|
||||||
ifeq ($(CROSS),yes)
|
ifeq ($(CROSS),yes)
|
||||||
# cross-compiler prefix:
|
# cross-compiler prefix:
|
||||||
ifndef CROSS_COMPILE
|
ifndef CROSS_COMPILE
|
||||||
CROSS_COMPILE = i586-pc-mingw32msvc-
|
CROSS_COMPILE = i586-pc-mingw32msvc-
|
||||||
endif
|
endif
|
||||||
DEL = rm
|
DEL = rm
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
DIRSLASH = /
|
DIRSLASH = /
|
||||||
else
|
else
|
||||||
# normal (Windows) compilation:
|
# normal (Windows) compilation:
|
||||||
ifndef CROSS_COMPILE
|
ifndef CROSS_COMPILE
|
||||||
CROSS_COMPILE =
|
CROSS_COMPILE =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# About the "sh.exe" condition, as explained by Ken Takata:
|
# About the "sh.exe" condition, as explained by Ken Takata:
|
||||||
#
|
#
|
||||||
@ -193,15 +193,15 @@ endif
|
|||||||
# $SHELL is set with the unix-style path (e.g. "/bin/bash").
|
# $SHELL is set with the unix-style path (e.g. "/bin/bash").
|
||||||
# In this case, unix-like commands can be used.
|
# In this case, unix-like commands can be used.
|
||||||
#
|
#
|
||||||
ifneq (sh.exe, $(SHELL))
|
ifneq (sh.exe, $(SHELL))
|
||||||
DEL = rm
|
DEL = rm
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
DIRSLASH = /
|
DIRSLASH = /
|
||||||
else
|
else
|
||||||
DEL = del
|
DEL = del
|
||||||
MKDIR = mkdir
|
MKDIR = mkdir
|
||||||
DIRSLASH = \\
|
DIRSLASH = \\
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
CC := $(CROSS_COMPILE)gcc
|
CC := $(CROSS_COMPILE)gcc
|
||||||
CXX := $(CROSS_COMPILE)g++
|
CXX := $(CROSS_COMPILE)g++
|
||||||
@ -223,31 +223,31 @@ endif
|
|||||||
# DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
|
# DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
|
||||||
# PERL_VER=[Perl version, eg 56, 58, 510] (default is 524)
|
# PERL_VER=[Perl version, eg 56, 58, 510] (default is 524)
|
||||||
ifdef PERL
|
ifdef PERL
|
||||||
ifndef PERL_VER
|
ifndef PERL_VER
|
||||||
PERL_VER=524
|
PERL_VER=524
|
||||||
endif
|
endif
|
||||||
ifndef DYNAMIC_PERL
|
ifndef DYNAMIC_PERL
|
||||||
DYNAMIC_PERL=yes
|
DYNAMIC_PERL=yes
|
||||||
endif
|
endif
|
||||||
# on Linux, for cross-compile, it's here:
|
# on Linux, for cross-compile, it's here:
|
||||||
#PERLLIB=/home/ron/ActivePerl/lib
|
#PERLLIB=/home/ron/ActivePerl/lib
|
||||||
# on NT, it's here:
|
# on NT, it's here:
|
||||||
PERLEXE=$(PERL)/bin/perl
|
PERLEXE=$(PERL)/bin/perl
|
||||||
PERLLIB=$(PERL)/lib
|
PERLLIB=$(PERL)/lib
|
||||||
PERLLIBS=$(PERLLIB)/Core
|
PERLLIBS=$(PERLLIB)/Core
|
||||||
ifeq ($(UNDER_CYGWIN),yes)
|
ifeq ($(UNDER_CYGWIN),yes)
|
||||||
PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap)
|
PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap)
|
||||||
XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp)
|
XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp)
|
||||||
else
|
else
|
||||||
PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap
|
PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap
|
||||||
XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
|
XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
|
||||||
endif
|
endif
|
||||||
XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'")
|
XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'")
|
||||||
ifeq "$(XSUBPP_EXISTS)" ""
|
ifeq "$(XSUBPP_EXISTS)" ""
|
||||||
XSUBPP=$(PERLEXE) $(XSUBPPTRY)
|
XSUBPP=$(PERLEXE) $(XSUBPPTRY)
|
||||||
else
|
else
|
||||||
XSUBPP=xsubpp
|
XSUBPP=xsubpp
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Lua interface:
|
# Lua interface:
|
||||||
@ -257,18 +257,18 @@ endif
|
|||||||
# DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
|
# DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
|
||||||
# LUA_VER=[Lua version, eg 51, 52] (default is 53)
|
# LUA_VER=[Lua version, eg 51, 52] (default is 53)
|
||||||
ifdef LUA
|
ifdef LUA
|
||||||
ifndef DYNAMIC_LUA
|
ifndef DYNAMIC_LUA
|
||||||
DYNAMIC_LUA=yes
|
DYNAMIC_LUA=yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef LUA_VER
|
ifndef LUA_VER
|
||||||
LUA_VER=53
|
LUA_VER=53
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (no,$(DYNAMIC_LUA))
|
ifeq (no,$(DYNAMIC_LUA))
|
||||||
LUA_LIBDIR = $(LUA)/lib
|
LUA_LIBDIR = $(LUA)/lib
|
||||||
LUA_LIB = -L$(LUA_LIBDIR) -llua
|
LUA_LIB = -L$(LUA_LIBDIR) -llua
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -280,53 +280,53 @@ endif
|
|||||||
# C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
|
# C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
|
||||||
# MZSCHEME_DEBUG=no
|
# MZSCHEME_DEBUG=no
|
||||||
ifdef MZSCHEME
|
ifdef MZSCHEME
|
||||||
ifndef DYNAMIC_MZSCHEME
|
ifndef DYNAMIC_MZSCHEME
|
||||||
DYNAMIC_MZSCHEME=yes
|
DYNAMIC_MZSCHEME=yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef MZSCHEME_VER
|
ifndef MZSCHEME_VER
|
||||||
MZSCHEME_VER=3m_a0solc
|
MZSCHEME_VER=3m_a0solc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# for version 4.x we need to generate byte-code for Scheme base
|
# for version 4.x we need to generate byte-code for Scheme base
|
||||||
ifndef MZSCHEME_GENERATE_BASE
|
ifndef MZSCHEME_GENERATE_BASE
|
||||||
MZSCHEME_GENERATE_BASE=no
|
MZSCHEME_GENERATE_BASE=no
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(wildcard $(MZSCHEME)/lib/msvc/libmzsch$(MZSCHEME_VER).lib),)
|
ifneq ($(wildcard $(MZSCHEME)/lib/msvc/libmzsch$(MZSCHEME_VER).lib),)
|
||||||
MZSCHEME_MAIN_LIB=mzsch
|
MZSCHEME_MAIN_LIB=mzsch
|
||||||
else
|
else
|
||||||
MZSCHEME_MAIN_LIB=racket
|
MZSCHEME_MAIN_LIB=racket
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef MZSCHEME_PRECISE_GC
|
ifndef MZSCHEME_PRECISE_GC
|
||||||
MZSCHEME_PRECISE_GC=no
|
MZSCHEME_PRECISE_GC=no
|
||||||
ifneq ($(wildcard $(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll),)
|
ifneq ($(wildcard $(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll),)
|
||||||
ifeq ($(wildcard $(MZSCHEME)\lib\libmzgc$(MZSCHEME_VER).dll),)
|
ifeq ($(wildcard $(MZSCHEME)\lib\libmzgc$(MZSCHEME_VER).dll),)
|
||||||
MZSCHEME_PRECISE_GC=yes
|
MZSCHEME_PRECISE_GC=yes
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
ifneq ($(wildcard $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib),)
|
ifneq ($(wildcard $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib),)
|
||||||
ifeq ($(wildcard $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib),)
|
ifeq ($(wildcard $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib),)
|
||||||
MZSCHEME_PRECISE_GC=yes
|
MZSCHEME_PRECISE_GC=yes
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (no,$(DYNAMIC_MZSCHEME))
|
ifeq (no,$(DYNAMIC_MZSCHEME))
|
||||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||||
else
|
else
|
||||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||||
endif
|
endif
|
||||||
# the modern MinGW can dynamically link to dlls directly.
|
# the modern MinGW can dynamically link to dlls directly.
|
||||||
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
||||||
ifndef MZSCHEME_DLLS
|
ifndef MZSCHEME_DLLS
|
||||||
MZSCHEME_DLLS=$(MZSCHEME)
|
MZSCHEME_DLLS=$(MZSCHEME)
|
||||||
endif
|
endif
|
||||||
MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
|
MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -335,32 +335,32 @@ endif
|
|||||||
# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
|
# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
|
||||||
# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 27)
|
# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 27)
|
||||||
ifdef PYTHON
|
ifdef PYTHON
|
||||||
ifndef DYNAMIC_PYTHON
|
ifndef DYNAMIC_PYTHON
|
||||||
DYNAMIC_PYTHON=yes
|
DYNAMIC_PYTHON=yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef PYTHON_VER
|
ifndef PYTHON_VER
|
||||||
PYTHON_VER=27
|
PYTHON_VER=27
|
||||||
endif
|
endif
|
||||||
ifndef DYNAMIC_PYTHON_DLL
|
ifndef DYNAMIC_PYTHON_DLL
|
||||||
DYNAMIC_PYTHON_DLL=python$(PYTHON_VER).dll
|
DYNAMIC_PYTHON_DLL=python$(PYTHON_VER).dll
|
||||||
endif
|
endif
|
||||||
ifdef PYTHON_HOME
|
ifdef PYTHON_HOME
|
||||||
PYTHON_HOME_DEF=-DPYTHON_HOME=\"$(PYTHON_HOME)\"
|
PYTHON_HOME_DEF=-DPYTHON_HOME=\"$(PYTHON_HOME)\"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (no,$(DYNAMIC_PYTHON))
|
ifeq (no,$(DYNAMIC_PYTHON))
|
||||||
PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
|
PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
|
||||||
endif
|
endif
|
||||||
# my include files are in 'win32inc' on Linux, and 'include' in the standard
|
# my include files are in 'win32inc' on Linux, and 'include' in the standard
|
||||||
# NT distro (ActiveState)
|
# NT distro (ActiveState)
|
||||||
ifndef PYTHONINC
|
ifndef PYTHONINC
|
||||||
ifeq ($(CROSS),no)
|
ifeq ($(CROSS),no)
|
||||||
PYTHONINC=-I $(PYTHON)/include
|
PYTHONINC=-I $(PYTHON)/include
|
||||||
else
|
else
|
||||||
PYTHONINC=-I $(PYTHON)/win32inc
|
PYTHONINC=-I $(PYTHON)/win32inc
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Python3 interface:
|
# Python3 interface:
|
||||||
@ -368,31 +368,31 @@ endif
|
|||||||
# DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically)
|
# DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically)
|
||||||
# PYTHON3_VER=[Python3 version, eg 31, 32] (default is 36)
|
# PYTHON3_VER=[Python3 version, eg 31, 32] (default is 36)
|
||||||
ifdef PYTHON3
|
ifdef PYTHON3
|
||||||
ifndef DYNAMIC_PYTHON3
|
ifndef DYNAMIC_PYTHON3
|
||||||
DYNAMIC_PYTHON3=yes
|
DYNAMIC_PYTHON3=yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef PYTHON3_VER
|
ifndef PYTHON3_VER
|
||||||
PYTHON3_VER=36
|
PYTHON3_VER=36
|
||||||
endif
|
endif
|
||||||
ifndef DYNAMIC_PYTHON3_DLL
|
ifndef DYNAMIC_PYTHON3_DLL
|
||||||
DYNAMIC_PYTHON3_DLL=python$(PYTHON3_VER).dll
|
DYNAMIC_PYTHON3_DLL=python$(PYTHON3_VER).dll
|
||||||
endif
|
endif
|
||||||
ifdef PYTHON3_HOME
|
ifdef PYTHON3_HOME
|
||||||
PYTHON3_HOME_DEF=-DPYTHON3_HOME=L\"$(PYTHON3_HOME)\"
|
PYTHON3_HOME_DEF=-DPYTHON3_HOME=L\"$(PYTHON3_HOME)\"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (no,$(DYNAMIC_PYTHON3))
|
ifeq (no,$(DYNAMIC_PYTHON3))
|
||||||
PYTHON3LIB=-L$(PYTHON3)/libs -lpython$(PYTHON3_VER)
|
PYTHON3LIB=-L$(PYTHON3)/libs -lpython$(PYTHON3_VER)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef PYTHON3INC
|
ifndef PYTHON3INC
|
||||||
ifeq ($(CROSS),no)
|
ifeq ($(CROSS),no)
|
||||||
PYTHON3INC=-I $(PYTHON3)/include
|
PYTHON3INC=-I $(PYTHON3)/include
|
||||||
else
|
else
|
||||||
PYTHON3INC=-I $(PYTHON3)/win32inc
|
PYTHON3INC=-I $(PYTHON3)/win32inc
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# TCL interface:
|
# TCL interface:
|
||||||
@ -403,18 +403,18 @@ endif
|
|||||||
# You must set TCL_VER_LONG when you set TCL_VER.
|
# You must set TCL_VER_LONG when you set TCL_VER.
|
||||||
# TCL_DLL=[TCL dll name, eg tcl86.dll] (default is tcl86.dll)
|
# TCL_DLL=[TCL dll name, eg tcl86.dll] (default is tcl86.dll)
|
||||||
ifdef TCL
|
ifdef TCL
|
||||||
ifndef DYNAMIC_TCL
|
ifndef DYNAMIC_TCL
|
||||||
DYNAMIC_TCL=yes
|
DYNAMIC_TCL=yes
|
||||||
endif
|
endif
|
||||||
ifndef TCL_VER
|
ifndef TCL_VER
|
||||||
TCL_VER = 86
|
TCL_VER = 86
|
||||||
endif
|
endif
|
||||||
ifndef TCL_VER_LONG
|
ifndef TCL_VER_LONG
|
||||||
TCL_VER_LONG = 8.6
|
TCL_VER_LONG = 8.6
|
||||||
endif
|
endif
|
||||||
ifndef TCL_DLL
|
ifndef TCL_DLL
|
||||||
TCL_DLL = tcl$(TCL_VER).dll
|
TCL_DLL = tcl$(TCL_VER).dll
|
||||||
endif
|
endif
|
||||||
TCLINC += -I$(TCL)/include
|
TCLINC += -I$(TCL)/include
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -430,67 +430,63 @@ endif
|
|||||||
# RUBY_VER=19
|
# RUBY_VER=19
|
||||||
# RUBY_API_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
|
# RUBY_API_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
|
||||||
ifdef RUBY
|
ifdef RUBY
|
||||||
ifndef DYNAMIC_RUBY
|
ifndef DYNAMIC_RUBY
|
||||||
DYNAMIC_RUBY=yes
|
DYNAMIC_RUBY=yes
|
||||||
endif
|
endif
|
||||||
# Set default value
|
# Set default value
|
||||||
ifndef RUBY_VER
|
ifndef RUBY_VER
|
||||||
RUBY_VER = 22
|
RUBY_VER = 22
|
||||||
endif
|
endif
|
||||||
ifndef RUBY_VER_LONG
|
ifndef RUBY_VER_LONG
|
||||||
RUBY_VER_LONG = 2.2.0
|
RUBY_VER_LONG = 2.2.0
|
||||||
endif
|
endif
|
||||||
ifndef RUBY_API_VER_LONG
|
ifndef RUBY_API_VER_LONG
|
||||||
RUBY_API_VER_LONG = $(RUBY_VER_LONG)
|
RUBY_API_VER_LONG = $(RUBY_VER_LONG)
|
||||||
endif
|
endif
|
||||||
ifndef RUBY_API_VER
|
ifndef RUBY_API_VER
|
||||||
RUBY_API_VER = $(subst .,,$(RUBY_API_VER_LONG))
|
RUBY_API_VER = $(subst .,,$(RUBY_API_VER_LONG))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef RUBY_PLATFORM
|
ifndef RUBY_PLATFORM
|
||||||
ifeq ($(RUBY_VER), 16)
|
ifeq ($(RUBY_VER), 16)
|
||||||
RUBY_PLATFORM = i586-mswin32
|
RUBY_PLATFORM = i586-mswin32
|
||||||
else
|
else ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/i386-mingw32),)
|
||||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/i386-mingw32),)
|
|
||||||
RUBY_PLATFORM = i386-mingw32
|
RUBY_PLATFORM = i386-mingw32
|
||||||
else
|
else ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/x64-mingw32),)
|
||||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/x64-mingw32),)
|
|
||||||
RUBY_PLATFORM = x64-mingw32
|
RUBY_PLATFORM = x64-mingw32
|
||||||
else
|
else
|
||||||
RUBY_PLATFORM = i386-mswin32
|
RUBY_PLATFORM = i386-mswin32
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef RUBY_INSTALL_NAME
|
ifndef RUBY_INSTALL_NAME
|
||||||
ifeq ($(RUBY_VER), 16)
|
ifeq ($(RUBY_VER), 16)
|
||||||
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
|
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
|
||||||
else
|
else
|
||||||
ifndef RUBY_MSVCRT_NAME
|
ifndef RUBY_MSVCRT_NAME
|
||||||
# Base name of msvcrXX.dll which is used by ruby's dll.
|
# Base name of msvcrXX.dll which is used by ruby's dll.
|
||||||
RUBY_MSVCRT_NAME = msvcrt
|
RUBY_MSVCRT_NAME = msvcrt
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),x86-64)
|
ifeq ($(ARCH),x86-64)
|
||||||
RUBY_INSTALL_NAME = x64-$(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER)
|
RUBY_INSTALL_NAME = x64-$(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER)
|
||||||
else
|
else
|
||||||
RUBY_INSTALL_NAME = $(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER)
|
RUBY_INSTALL_NAME = $(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
|
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
|
||||||
RUBY_19_OR_LATER = 1
|
RUBY_19_OR_LATER = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef RUBY_19_OR_LATER
|
ifdef RUBY_19_OR_LATER
|
||||||
RUBYINC = -I $(RUBY)/include/ruby-$(RUBY_API_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_API_VER_LONG)/$(RUBY_PLATFORM)
|
RUBYINC = -I $(RUBY)/include/ruby-$(RUBY_API_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_API_VER_LONG)/$(RUBY_PLATFORM)
|
||||||
else
|
else
|
||||||
RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/$(RUBY_PLATFORM)
|
RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_API_VER_LONG)/$(RUBY_PLATFORM)
|
||||||
endif
|
endif
|
||||||
ifeq (no, $(DYNAMIC_RUBY))
|
ifeq (no, $(DYNAMIC_RUBY))
|
||||||
RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
|
RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif # RUBY
|
endif # RUBY
|
||||||
|
|
||||||
@ -515,89 +511,87 @@ ifdef GETTEXT
|
|||||||
DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
|
DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
|
||||||
GETTEXTINCLUDE = $(GETTEXT)/include
|
GETTEXTINCLUDE = $(GETTEXT)/include
|
||||||
GETTEXTLIB = $(INTLPATH)
|
GETTEXTLIB = $(INTLPATH)
|
||||||
ifeq (yes, $(GETTEXT))
|
ifeq (yes, $(GETTEXT))
|
||||||
DEFINES += -DDYNAMIC_GETTEXT
|
DEFINES += -DDYNAMIC_GETTEXT
|
||||||
else
|
else ifdef DYNAMIC_GETTEXT
|
||||||
ifdef DYNAMIC_GETTEXT
|
|
||||||
DEFINES += -D$(DYNAMIC_GETTEXT)
|
DEFINES += -D$(DYNAMIC_GETTEXT)
|
||||||
ifdef GETTEXT_DYNAMIC
|
ifdef GETTEXT_DYNAMIC
|
||||||
DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
|
DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef PERL
|
ifdef PERL
|
||||||
CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
|
CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
|
||||||
ifeq (yes, $(DYNAMIC_PERL))
|
ifeq (yes, $(DYNAMIC_PERL))
|
||||||
CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
|
CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
|
||||||
EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
|
EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef LUA
|
ifdef LUA
|
||||||
LUA_INCDIR = $(LUA)/include
|
LUA_INCDIR = $(LUA)/include
|
||||||
CFLAGS += -I$(LUA_INCDIR) -I$(LUA) -DFEAT_LUA
|
CFLAGS += -I$(LUA_INCDIR) -I$(LUA) -DFEAT_LUA
|
||||||
ifeq (yes, $(DYNAMIC_LUA))
|
ifeq (yes, $(DYNAMIC_LUA))
|
||||||
CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
|
CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef MZSCHEME
|
ifdef MZSCHEME
|
||||||
ifndef MZSCHEME_COLLECTS
|
ifndef MZSCHEME_COLLECTS
|
||||||
MZSCHEME_COLLECTS=$(MZSCHEME)/collects
|
MZSCHEME_COLLECTS=$(MZSCHEME)/collects
|
||||||
ifeq (yes, $(UNDER_CYGWIN))
|
ifeq (yes, $(UNDER_CYGWIN))
|
||||||
MZSCHEME_COLLECTS:=$(shell cygpath -m $(MZSCHEME_COLLECTS) | sed -e 's/ /\\ /g')
|
MZSCHEME_COLLECTS:=$(shell cygpath -m $(MZSCHEME_COLLECTS) | sed -e 's/ /\\ /g')
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME_COLLECTS)\"
|
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME_COLLECTS)\"
|
||||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||||
ifeq (yes, $(MZSCHEME_PRECISE_GC))
|
ifeq (yes, $(MZSCHEME_PRECISE_GC))
|
||||||
# Precise GC does not use separate dll
|
# Precise GC does not use separate dll
|
||||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\"
|
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\"
|
||||||
else
|
else
|
||||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq (yes, "$(MZSCHEME_DEBUG)")
|
ifeq (yes, "$(MZSCHEME_DEBUG)")
|
||||||
CFLAGS += -DMZSCHEME_FORCE_GC
|
CFLAGS += -DMZSCHEME_FORCE_GC
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef RUBY
|
ifdef RUBY
|
||||||
CFLAGS += -DFEAT_RUBY $(RUBYINC)
|
CFLAGS += -DFEAT_RUBY $(RUBYINC)
|
||||||
ifeq (yes, $(DYNAMIC_RUBY))
|
ifeq (yes, $(DYNAMIC_RUBY))
|
||||||
CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
|
CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
|
||||||
CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
|
CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
|
||||||
endif
|
endif
|
||||||
ifeq (no, $(DYNAMIC_RUBY))
|
ifeq (no, $(DYNAMIC_RUBY))
|
||||||
CFLAGS += -DRUBY_VERSION=$(RUBY_VER)
|
CFLAGS += -DRUBY_VERSION=$(RUBY_VER)
|
||||||
endif
|
endif
|
||||||
ifneq ($(findstring w64-mingw32,$(CC)),)
|
ifneq ($(findstring w64-mingw32,$(CC)),)
|
||||||
# A workaround for MinGW-w64
|
# A workaround for MinGW-w64
|
||||||
CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
|
CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef PYTHON
|
ifdef PYTHON
|
||||||
CFLAGS += -DFEAT_PYTHON
|
CFLAGS += -DFEAT_PYTHON
|
||||||
ifeq (yes, $(DYNAMIC_PYTHON))
|
ifeq (yes, $(DYNAMIC_PYTHON))
|
||||||
CFLAGS += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"$(DYNAMIC_PYTHON_DLL)\"
|
CFLAGS += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"$(DYNAMIC_PYTHON_DLL)\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef PYTHON3
|
ifdef PYTHON3
|
||||||
CFLAGS += -DFEAT_PYTHON3
|
CFLAGS += -DFEAT_PYTHON3
|
||||||
ifeq (yes, $(DYNAMIC_PYTHON3))
|
ifeq (yes, $(DYNAMIC_PYTHON3))
|
||||||
CFLAGS += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"$(DYNAMIC_PYTHON3_DLL)\"
|
CFLAGS += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"$(DYNAMIC_PYTHON3_DLL)\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef TCL
|
ifdef TCL
|
||||||
CFLAGS += -DFEAT_TCL $(TCLINC)
|
CFLAGS += -DFEAT_TCL $(TCLINC)
|
||||||
ifeq (yes, $(DYNAMIC_TCL))
|
ifeq (yes, $(DYNAMIC_TCL))
|
||||||
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
|
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(POSTSCRIPT),yes)
|
ifeq ($(POSTSCRIPT),yes)
|
||||||
@ -614,15 +608,15 @@ endif
|
|||||||
|
|
||||||
ifeq ($(NETBEANS),yes)
|
ifeq ($(NETBEANS),yes)
|
||||||
# Only allow NETBEANS for a GUI build.
|
# Only allow NETBEANS for a GUI build.
|
||||||
ifeq (yes, $(GUI))
|
ifeq (yes, $(GUI))
|
||||||
DEFINES += -DFEAT_NETBEANS_INTG
|
DEFINES += -DFEAT_NETBEANS_INTG
|
||||||
|
|
||||||
ifeq ($(NBDEBUG), yes)
|
ifeq ($(NBDEBUG), yes)
|
||||||
DEFINES += -DNBDEBUG
|
DEFINES += -DNBDEBUG
|
||||||
NBDEBUG_INCL = nbdebug.h
|
NBDEBUG_INCL = nbdebug.h
|
||||||
NBDEBUG_SRC = nbdebug.c
|
NBDEBUG_SRC = nbdebug.c
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CHANNEL),yes)
|
ifeq ($(CHANNEL),yes)
|
||||||
@ -642,39 +636,39 @@ endif
|
|||||||
# DirectWrite (DirectX)
|
# DirectWrite (DirectX)
|
||||||
ifeq ($(DIRECTX),yes)
|
ifeq ($(DIRECTX),yes)
|
||||||
# Only allow DirectWrite for a GUI build.
|
# Only allow DirectWrite for a GUI build.
|
||||||
ifeq (yes, $(GUI))
|
ifeq (yes, $(GUI))
|
||||||
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
|
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
|
||||||
ifneq ($(COLOR_EMOJI),no)
|
ifneq ($(COLOR_EMOJI),no)
|
||||||
DEFINES += -DFEAT_DIRECTX_COLOR_EMOJI
|
DEFINES += -DFEAT_DIRECTX_COLOR_EMOJI
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Only allow XPM for a GUI build.
|
# Only allow XPM for a GUI build.
|
||||||
ifeq (yes, $(GUI))
|
ifeq (yes, $(GUI))
|
||||||
|
|
||||||
ifndef XPM
|
ifndef XPM
|
||||||
ifeq ($(ARCH),i386)
|
ifeq ($(ARCH),i386)
|
||||||
XPM = xpm/x86
|
XPM = xpm/x86
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),i486)
|
ifeq ($(ARCH),i486)
|
||||||
XPM = xpm/x86
|
XPM = xpm/x86
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),i586)
|
ifeq ($(ARCH),i586)
|
||||||
XPM = xpm/x86
|
XPM = xpm/x86
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),i686)
|
ifeq ($(ARCH),i686)
|
||||||
XPM = xpm/x86
|
XPM = xpm/x86
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),x86-64)
|
ifeq ($(ARCH),x86-64)
|
||||||
XPM = xpm/x64
|
XPM = xpm/x64
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifdef XPM
|
ifdef XPM
|
||||||
ifneq ($(XPM),no)
|
ifneq ($(XPM),no)
|
||||||
CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
|
CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -682,16 +676,14 @@ ifeq ($(DEBUG),yes)
|
|||||||
CFLAGS += -g -fstack-check
|
CFLAGS += -g -fstack-check
|
||||||
DEBUG_SUFFIX=d
|
DEBUG_SUFFIX=d
|
||||||
else
|
else
|
||||||
ifeq ($(OPTIMIZE), SIZE)
|
ifeq ($(OPTIMIZE), SIZE)
|
||||||
CFLAGS += -Os
|
CFLAGS += -Os
|
||||||
else
|
else ifeq ($(OPTIMIZE), MAXSPEED)
|
||||||
ifeq ($(OPTIMIZE), MAXSPEED)
|
|
||||||
CFLAGS += -O3
|
CFLAGS += -O3
|
||||||
CFLAGS += -fomit-frame-pointer -freg-struct-return
|
CFLAGS += -fomit-frame-pointer -freg-struct-return
|
||||||
else # SPEED
|
else # SPEED
|
||||||
CFLAGS += -O2
|
CFLAGS += -O2
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
LFLAGS += -s
|
LFLAGS += -s
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -705,6 +697,7 @@ OBJ = \
|
|||||||
$(OUTDIR)/blob.o \
|
$(OUTDIR)/blob.o \
|
||||||
$(OUTDIR)/blowfish.o \
|
$(OUTDIR)/blowfish.o \
|
||||||
$(OUTDIR)/buffer.o \
|
$(OUTDIR)/buffer.o \
|
||||||
|
$(OUTDIR)/change.o \
|
||||||
$(OUTDIR)/charset.o \
|
$(OUTDIR)/charset.o \
|
||||||
$(OUTDIR)/crypt.o \
|
$(OUTDIR)/crypt.o \
|
||||||
$(OUTDIR)/crypt_zip.o \
|
$(OUTDIR)/crypt_zip.o \
|
||||||
@ -784,13 +777,13 @@ endif
|
|||||||
ifdef MZSCHEME
|
ifdef MZSCHEME
|
||||||
OBJ += $(OUTDIR)/if_mzsch.o
|
OBJ += $(OUTDIR)/if_mzsch.o
|
||||||
MZSCHEME_INCL = if_mzsch.h
|
MZSCHEME_INCL = if_mzsch.h
|
||||||
ifeq (yes,$(MZSCHEME_GENERATE_BASE))
|
ifeq (yes,$(MZSCHEME_GENERATE_BASE))
|
||||||
CFLAGS += -DINCLUDE_MZSCHEME_BASE
|
CFLAGS += -DINCLUDE_MZSCHEME_BASE
|
||||||
MZ_EXTRA_DEP += mzscheme_base.c
|
MZ_EXTRA_DEP += mzscheme_base.c
|
||||||
endif
|
endif
|
||||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||||
CFLAGS += -DMZ_PRECISE_GC
|
CFLAGS += -DMZ_PRECISE_GC
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifdef PYTHON
|
ifdef PYTHON
|
||||||
OBJ += $(OUTDIR)/if_python.o
|
OBJ += $(OUTDIR)/if_python.o
|
||||||
@ -809,17 +802,15 @@ OBJ += $(OUTDIR)/if_cscope.o
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(NETBEANS),yes)
|
ifeq ($(NETBEANS),yes)
|
||||||
ifneq ($(CHANNEL),yes)
|
ifneq ($(CHANNEL),yes)
|
||||||
# Cannot use Netbeans without CHANNEL
|
# Cannot use Netbeans without CHANNEL
|
||||||
NETBEANS=no
|
NETBEANS=no
|
||||||
else
|
else ifneq (yes, $(GUI))
|
||||||
ifneq (yes, $(GUI))
|
|
||||||
# Cannot use Netbeans without GUI.
|
# Cannot use Netbeans without GUI.
|
||||||
NETBEANS=no
|
NETBEANS=no
|
||||||
else
|
else
|
||||||
OBJ += $(OUTDIR)/netbeans.o
|
OBJ += $(OUTDIR)/netbeans.o
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CHANNEL),yes)
|
ifeq ($(CHANNEL),yes)
|
||||||
@ -829,19 +820,19 @@ endif
|
|||||||
|
|
||||||
ifeq ($(DIRECTX),yes)
|
ifeq ($(DIRECTX),yes)
|
||||||
# Only allow DIRECTX for a GUI build.
|
# Only allow DIRECTX for a GUI build.
|
||||||
ifeq (yes, $(GUI))
|
ifeq (yes, $(GUI))
|
||||||
OBJ += $(OUTDIR)/gui_dwrite.o
|
OBJ += $(OUTDIR)/gui_dwrite.o
|
||||||
LIB += -ld2d1 -ldwrite
|
LIB += -ld2d1 -ldwrite
|
||||||
USE_STDCPLUS = yes
|
USE_STDCPLUS = yes
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifneq ($(XPM),no)
|
ifneq ($(XPM),no)
|
||||||
# Only allow XPM for a GUI build.
|
# Only allow XPM for a GUI build.
|
||||||
ifeq (yes, $(GUI))
|
ifeq (yes, $(GUI))
|
||||||
OBJ += $(OUTDIR)/xpm_w32.o
|
OBJ += $(OUTDIR)/xpm_w32.o
|
||||||
# You'll need libXpm.a from http://gnuwin32.sf.net
|
# You'll need libXpm.a from http://gnuwin32.sf.net
|
||||||
LIB += -L$(XPM)/lib -lXpm
|
LIB += -L$(XPM)/lib -lXpm
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TERMINAL),yes)
|
ifeq ($(TERMINAL),yes)
|
||||||
@ -914,32 +905,32 @@ MAIN_TARGET = $(TARGET)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef GETTEXT
|
ifdef GETTEXT
|
||||||
ifneq (yes, $(GETTEXT))
|
ifneq (yes, $(GETTEXT))
|
||||||
CFLAGS += -I$(GETTEXTINCLUDE)
|
CFLAGS += -I$(GETTEXTINCLUDE)
|
||||||
ifndef STATIC_GETTEXT
|
ifndef STATIC_GETTEXT
|
||||||
LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
|
LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
|
||||||
ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
|
ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
|
||||||
OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
|
OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
LIB += -L$(GETTEXTLIB) -lintl
|
LIB += -L$(GETTEXTLIB) -lintl
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef PERL
|
ifdef PERL
|
||||||
ifeq (no, $(DYNAMIC_PERL))
|
ifeq (no, $(DYNAMIC_PERL))
|
||||||
LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
|
LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef TCL
|
ifdef TCL
|
||||||
LIB += -L$(TCL)/lib
|
LIB += -L$(TCL)/lib
|
||||||
ifeq (yes, $(DYNAMIC_TCL))
|
ifeq (yes, $(DYNAMIC_TCL))
|
||||||
LIB += -ltclstub$(TCL_VER)
|
LIB += -ltclstub$(TCL_VER)
|
||||||
else
|
else
|
||||||
LIB += -ltcl$(TCL_VER)
|
LIB += -ltcl$(TCL_VER)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes, $(OLE))
|
ifeq (yes, $(OLE))
|
||||||
@ -950,35 +941,35 @@ endif
|
|||||||
|
|
||||||
ifeq (yes, $(IME))
|
ifeq (yes, $(IME))
|
||||||
DEFINES += -DFEAT_MBYTE_IME
|
DEFINES += -DFEAT_MBYTE_IME
|
||||||
ifeq (yes, $(DYNAMIC_IME))
|
ifeq (yes, $(DYNAMIC_IME))
|
||||||
DEFINES += -DDYNAMIC_IME
|
DEFINES += -DDYNAMIC_IME
|
||||||
else
|
else
|
||||||
LIB += -limm32
|
LIB += -limm32
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef ICONV
|
ifdef ICONV
|
||||||
ifneq (yes, $(ICONV))
|
ifneq (yes, $(ICONV))
|
||||||
LIB += -L$(ICONV)
|
LIB += -L$(ICONV)
|
||||||
CFLAGS += -I$(ICONV)
|
CFLAGS += -I$(ICONV)
|
||||||
endif
|
endif
|
||||||
DEFINES+=-DDYNAMIC_ICONV
|
DEFINES+=-DDYNAMIC_ICONV
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes, $(USE_STDCPLUS))
|
ifeq (yes, $(USE_STDCPLUS))
|
||||||
LINK = $(CXX)
|
LINK = $(CXX)
|
||||||
ifeq (yes, $(STATIC_STDCPLUS))
|
ifeq (yes, $(STATIC_STDCPLUS))
|
||||||
#LIB += -static-libstdc++ -static-libgcc
|
#LIB += -static-libstdc++ -static-libgcc
|
||||||
LIB += -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
|
LIB += -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
LINK = $(CC)
|
LINK = $(CC)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes, $(STATIC_WINPTHREAD))
|
ifeq (yes, $(STATIC_WINPTHREAD))
|
||||||
ifeq (yes, $(HAS_GCC_EH))
|
ifeq (yes, $(HAS_GCC_EH))
|
||||||
LIB += -lgcc_eh
|
LIB += -lgcc_eh
|
||||||
endif
|
endif
|
||||||
LIB += -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic
|
LIB += -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ SRC = \
|
|||||||
autocmd.c \
|
autocmd.c \
|
||||||
blowfish.c \
|
blowfish.c \
|
||||||
buffer.c \
|
buffer.c \
|
||||||
|
change.c \
|
||||||
charset.c \
|
charset.c \
|
||||||
crypt.c \
|
crypt.c \
|
||||||
crypt_zip.c \
|
crypt_zip.c \
|
||||||
@ -92,6 +93,7 @@ OBJ = o/arabic.o \
|
|||||||
o/autocmd.o \
|
o/autocmd.o \
|
||||||
o/blowfish.o \
|
o/blowfish.o \
|
||||||
o/buffer.o \
|
o/buffer.o \
|
||||||
|
o/change.o \
|
||||||
o/charset.o \
|
o/charset.o \
|
||||||
o/crypt.o \
|
o/crypt.o \
|
||||||
o/crypt_zip.o \
|
o/crypt_zip.o \
|
||||||
@ -177,6 +179,8 @@ o/blowfish.o: blowfish.c $(SYMS)
|
|||||||
|
|
||||||
o/buffer.o: buffer.c $(SYMS)
|
o/buffer.o: buffer.c $(SYMS)
|
||||||
|
|
||||||
|
o/change.o: change.c $(SYMS)
|
||||||
|
|
||||||
o/charset.o: charset.c $(SYMS)
|
o/charset.o: charset.c $(SYMS)
|
||||||
|
|
||||||
o/crypt.o: crypt.c $(SYMS)
|
o/crypt.o: crypt.c $(SYMS)
|
||||||
|
@ -40,6 +40,7 @@ SRC = arabic.c \
|
|||||||
autocmd.c \
|
autocmd.c \
|
||||||
blowfish.c \
|
blowfish.c \
|
||||||
buffer.c \
|
buffer.c \
|
||||||
|
change.c \
|
||||||
charset.c \
|
charset.c \
|
||||||
crypt.c \
|
crypt.c \
|
||||||
crypt_zip.c \
|
crypt_zip.c \
|
||||||
@ -104,6 +105,7 @@ OBJ = obj/arabic.o \
|
|||||||
obj/autocmd.o \
|
obj/autocmd.o \
|
||||||
obj/blowfish.o \
|
obj/blowfish.o \
|
||||||
obj/buffer.o \
|
obj/buffer.o \
|
||||||
|
obj/change.o \
|
||||||
obj/charset.o \
|
obj/charset.o \
|
||||||
obj/crypt.o \
|
obj/crypt.o \
|
||||||
obj/crypt_zip.o \
|
obj/crypt_zip.o \
|
||||||
@ -166,6 +168,7 @@ PRO = proto/arabic.pro \
|
|||||||
proto/autocmd.pro \
|
proto/autocmd.pro \
|
||||||
proto/blowfish.pro \
|
proto/blowfish.pro \
|
||||||
proto/buffer.pro \
|
proto/buffer.pro \
|
||||||
|
proto/change.pro \
|
||||||
proto/charset.pro \
|
proto/charset.pro \
|
||||||
proto/crypt.pro \
|
proto/crypt.pro \
|
||||||
proto/crypt_zip.pro \
|
proto/crypt_zip.pro \
|
||||||
@ -280,6 +283,9 @@ obj/blowfish.o: blowfish.c
|
|||||||
obj/buffer.o: buffer.c
|
obj/buffer.o: buffer.c
|
||||||
$(CCSYM) $@ buffer.c
|
$(CCSYM) $@ buffer.c
|
||||||
|
|
||||||
|
obj/change.o: change.c
|
||||||
|
$(CCSYM) $@ change.c
|
||||||
|
|
||||||
obj/charset.o: charset.c
|
obj/charset.o: charset.c
|
||||||
$(CCSYM) $@ charset.c
|
$(CCSYM) $@ charset.c
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ SRC = arabic.c \
|
|||||||
autocmd.c \
|
autocmd.c \
|
||||||
blowfish.c \
|
blowfish.c \
|
||||||
buffer.c \
|
buffer.c \
|
||||||
|
change.c \
|
||||||
charset.c \
|
charset.c \
|
||||||
crypt.c \
|
crypt.c \
|
||||||
crypt_zip.c \
|
crypt_zip.c \
|
||||||
|
@ -700,6 +700,7 @@ OBJ = \
|
|||||||
$(OUTDIR)\blob.obj \
|
$(OUTDIR)\blob.obj \
|
||||||
$(OUTDIR)\blowfish.obj \
|
$(OUTDIR)\blowfish.obj \
|
||||||
$(OUTDIR)\buffer.obj \
|
$(OUTDIR)\buffer.obj \
|
||||||
|
$(OUTDIR)\change.obj \
|
||||||
$(OUTDIR)\charset.obj \
|
$(OUTDIR)\charset.obj \
|
||||||
$(OUTDIR)\crypt.obj \
|
$(OUTDIR)\crypt.obj \
|
||||||
$(OUTDIR)\crypt_zip.obj \
|
$(OUTDIR)\crypt_zip.obj \
|
||||||
@ -1410,6 +1411,8 @@ $(OUTDIR)/blowfish.obj: $(OUTDIR) blowfish.c $(INCL)
|
|||||||
|
|
||||||
$(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c $(INCL)
|
$(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c $(INCL)
|
||||||
|
|
||||||
|
$(OUTDIR)/change.obj: $(OUTDIR) change.c $(INCL)
|
||||||
|
|
||||||
$(OUTDIR)/charset.obj: $(OUTDIR) charset.c $(INCL)
|
$(OUTDIR)/charset.obj: $(OUTDIR) charset.c $(INCL)
|
||||||
|
|
||||||
$(OUTDIR)/crypt.obj: $(OUTDIR) crypt.c $(INCL)
|
$(OUTDIR)/crypt.obj: $(OUTDIR) crypt.c $(INCL)
|
||||||
@ -1700,6 +1703,7 @@ proto.h: \
|
|||||||
proto/blob.pro \
|
proto/blob.pro \
|
||||||
proto/blowfish.pro \
|
proto/blowfish.pro \
|
||||||
proto/buffer.pro \
|
proto/buffer.pro \
|
||||||
|
proto/change.pro \
|
||||||
proto/charset.pro \
|
proto/charset.pro \
|
||||||
proto/crypt.pro \
|
proto/crypt.pro \
|
||||||
proto/crypt_zip.pro \
|
proto/crypt_zip.pro \
|
||||||
|
@ -93,6 +93,7 @@ SRC = \
|
|||||||
autocmd.c \
|
autocmd.c \
|
||||||
blowfish.c \
|
blowfish.c \
|
||||||
buffer.c \
|
buffer.c \
|
||||||
|
change.c \
|
||||||
charset.c \
|
charset.c \
|
||||||
crypt.c \
|
crypt.c \
|
||||||
crypt_zip.c \
|
crypt_zip.c \
|
||||||
@ -156,6 +157,7 @@ OBJ = \
|
|||||||
autocmd.o \
|
autocmd.o \
|
||||||
blowfish.o \
|
blowfish.o \
|
||||||
buffer.o \
|
buffer.o \
|
||||||
|
change.o \
|
||||||
charset.o \
|
charset.o \
|
||||||
crypt.o \
|
crypt.o \
|
||||||
crypt_zip.o \
|
crypt_zip.o \
|
||||||
@ -219,6 +221,7 @@ PRO = \
|
|||||||
proto/autocmd.pro \
|
proto/autocmd.pro \
|
||||||
proto/blowfish.pro \
|
proto/blowfish.pro \
|
||||||
proto/buffer.pro \
|
proto/buffer.pro \
|
||||||
|
proto/change.pro \
|
||||||
proto/charset.pro \
|
proto/charset.pro \
|
||||||
proto/crypt.pro \
|
proto/crypt.pro \
|
||||||
proto/crypt_zip.pro \
|
proto/crypt_zip.pro \
|
||||||
@ -340,6 +343,8 @@ blowfish.o: blowfish.c
|
|||||||
proto/blowfish.pro: blowfish.c
|
proto/blowfish.pro: blowfish.c
|
||||||
buffer.o: buffer.c
|
buffer.o: buffer.c
|
||||||
proto/buffer.pro: buffer.c
|
proto/buffer.pro: buffer.c
|
||||||
|
change.o: change.c
|
||||||
|
proto/change.pro: change.c
|
||||||
charset.o: charset.c
|
charset.o: charset.c
|
||||||
proto/charset.pro: charset.c
|
proto/charset.pro: charset.c
|
||||||
crypt.o: crypt.c
|
crypt.o: crypt.c
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# Makefile for Vim on OpenVMS
|
# Makefile for Vim on OpenVMS
|
||||||
#
|
#
|
||||||
# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
|
# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
|
||||||
# Last change: 2019 Apr 26
|
# Last change: 2019 May 11
|
||||||
#
|
#
|
||||||
# This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
|
# This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
|
||||||
# with MMS and MMK
|
# with MMS and MMK
|
||||||
@ -307,7 +307,7 @@ ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
|
|||||||
ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
|
ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
|
||||||
$(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
|
$(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
|
||||||
|
|
||||||
SRC = arabic.c autocmd.c beval.c blob.c blowfish.c buffer.c charset.c \
|
SRC = arabic.c autocmd.c beval.c blob.c blowfish.c buffer.c change.c charset.c \
|
||||||
crypt.c crypt_zip.c debugger.c dict.c diff.c digraph.c edit.c eval.c \
|
crypt.c crypt_zip.c debugger.c dict.c diff.c digraph.c edit.c eval.c \
|
||||||
evalfunc.c ex_cmds.c ex_cmds2.c ex_docmd.c ex_eval.c ex_getln.c \
|
evalfunc.c ex_cmds.c ex_cmds2.c ex_docmd.c ex_eval.c ex_getln.c \
|
||||||
if_cscope.c if_xcmdsrv.c fileio.c findfile.c fold.c getchar.c \
|
if_cscope.c if_xcmdsrv.c fileio.c findfile.c fold.c getchar.c \
|
||||||
@ -320,7 +320,7 @@ SRC = arabic.c autocmd.c beval.c blob.c blowfish.c buffer.c charset.c \
|
|||||||
$(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) \
|
$(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) \
|
||||||
$(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC) $(XDIFF_SRC)
|
$(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC) $(XDIFF_SRC)
|
||||||
|
|
||||||
OBJ = arabic.obj autocmd.obj beval.obj blob.obj blowfish.obj buffer.obj \
|
OBJ = arabic.obj autocmd.obj beval.obj blob.obj blowfish.obj buffer.obj change.obj \
|
||||||
charset.obj crypt.obj crypt_zip.obj debugger.obj dict.obj diff.obj \
|
charset.obj crypt.obj crypt_zip.obj debugger.obj dict.obj diff.obj \
|
||||||
digraph.obj edit.obj eval.obj evalfunc.obj ex_cmds.obj ex_cmds2.obj \
|
digraph.obj edit.obj eval.obj evalfunc.obj ex_cmds.obj ex_cmds2.obj \
|
||||||
ex_docmd.obj ex_eval.obj ex_getln.obj if_cscope.obj if_xcmdsrv.obj \
|
ex_docmd.obj ex_eval.obj ex_getln.obj if_cscope.obj if_xcmdsrv.obj \
|
||||||
@ -510,6 +510,10 @@ buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
|
|||||||
ascii.h keymap.h term.h macros.h structs.h regexp.h \
|
ascii.h keymap.h term.h macros.h structs.h regexp.h \
|
||||||
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
|
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
|
||||||
globals.h version.h
|
globals.h version.h
|
||||||
|
change.obj : change.c vim.h [.auto]config.h feature.h os_unix.h \
|
||||||
|
ascii.h keymap.h term.h macros.h structs.h regexp.h \
|
||||||
|
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
|
||||||
|
globals.h version.h
|
||||||
charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
|
charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
|
||||||
ascii.h keymap.h term.h macros.h structs.h regexp.h \
|
ascii.h keymap.h term.h macros.h structs.h regexp.h \
|
||||||
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
|
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
|
||||||
|
10
src/Makefile
10
src/Makefile
@ -1576,6 +1576,7 @@ BASIC_SRC = \
|
|||||||
blob.c \
|
blob.c \
|
||||||
blowfish.c \
|
blowfish.c \
|
||||||
buffer.c \
|
buffer.c \
|
||||||
|
change.c \
|
||||||
charset.c \
|
charset.c \
|
||||||
crypt.c \
|
crypt.c \
|
||||||
crypt_zip.c \
|
crypt_zip.c \
|
||||||
@ -1691,6 +1692,7 @@ OBJ_COMMON = \
|
|||||||
objects/autocmd.o \
|
objects/autocmd.o \
|
||||||
objects/beval.o \
|
objects/beval.o \
|
||||||
objects/buffer.o \
|
objects/buffer.o \
|
||||||
|
objects/change.o \
|
||||||
objects/blob.o \
|
objects/blob.o \
|
||||||
objects/blowfish.o \
|
objects/blowfish.o \
|
||||||
objects/crypt.o \
|
objects/crypt.o \
|
||||||
@ -1821,6 +1823,7 @@ PRO_AUTO = \
|
|||||||
autocmd.pro \
|
autocmd.pro \
|
||||||
blowfish.pro \
|
blowfish.pro \
|
||||||
buffer.pro \
|
buffer.pro \
|
||||||
|
change.pro \
|
||||||
charset.pro \
|
charset.pro \
|
||||||
crypt.pro \
|
crypt.pro \
|
||||||
crypt_zip.pro \
|
crypt_zip.pro \
|
||||||
@ -2965,6 +2968,9 @@ objects/blowfish.o: blowfish.c
|
|||||||
objects/buffer.o: buffer.c
|
objects/buffer.o: buffer.c
|
||||||
$(CCC) -o $@ buffer.c
|
$(CCC) -o $@ buffer.c
|
||||||
|
|
||||||
|
objects/change.o: change.c
|
||||||
|
$(CCC) -o $@ change.c
|
||||||
|
|
||||||
objects/charset.o: charset.c
|
objects/charset.o: charset.c
|
||||||
$(CCC) -o $@ charset.c
|
$(CCC) -o $@ charset.c
|
||||||
|
|
||||||
@ -3430,6 +3436,10 @@ objects/buffer.o: buffer.c vim.h protodef.h auto/config.h feature.h os_unix.h \
|
|||||||
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
|
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
|
||||||
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
|
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
|
||||||
proto.h globals.h version.h
|
proto.h globals.h version.h
|
||||||
|
objects/change.o: change.c vim.h protodef.h auto/config.h feature.h os_unix.h \
|
||||||
|
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
|
||||||
|
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
|
||||||
|
proto.h globals.h version.h
|
||||||
objects/charset.o: charset.c vim.h protodef.h auto/config.h feature.h os_unix.h \
|
objects/charset.o: charset.c vim.h protodef.h auto/config.h feature.h os_unix.h \
|
||||||
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
|
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
|
||||||
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
|
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
|
||||||
|
@ -25,6 +25,7 @@ File name | Description
|
|||||||
--------- | -----------
|
--------- | -----------
|
||||||
autocmd.c | autocommands
|
autocmd.c | autocommands
|
||||||
buffer.c | manipulating buffers (loaded files)
|
buffer.c | manipulating buffers (loaded files)
|
||||||
|
change.c | handling changes to text
|
||||||
debugger.c | vim script debugger
|
debugger.c | vim script debugger
|
||||||
diff.c | diff mode (vimdiff)
|
diff.c | diff mode (vimdiff)
|
||||||
eval.c | expression evaluation
|
eval.c | expression evaluation
|
||||||
|
2305
src/change.c
Normal file
2305
src/change.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1650,7 +1650,7 @@ invoke_callback(channel_T *channel, char_u *callback, partial_T *partial,
|
|||||||
argv[0].v_type = VAR_CHANNEL;
|
argv[0].v_type = VAR_CHANNEL;
|
||||||
argv[0].vval.v_channel = channel;
|
argv[0].vval.v_channel = channel;
|
||||||
|
|
||||||
call_func(callback, (int)STRLEN(callback), &rettv, 2, argv, NULL,
|
call_func(callback, -1, &rettv, 2, argv, NULL,
|
||||||
0L, 0L, &dummy, TRUE, partial, NULL);
|
0L, 0L, &dummy, TRUE, partial, NULL);
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
channel_need_redraw = TRUE;
|
channel_need_redraw = TRUE;
|
||||||
@ -2989,7 +2989,7 @@ channel_close(channel_T *channel, int invoke_close_cb)
|
|||||||
(char *)channel->ch_close_cb);
|
(char *)channel->ch_close_cb);
|
||||||
argv[0].v_type = VAR_CHANNEL;
|
argv[0].v_type = VAR_CHANNEL;
|
||||||
argv[0].vval.v_channel = channel;
|
argv[0].vval.v_channel = channel;
|
||||||
call_func(channel->ch_close_cb, (int)STRLEN(channel->ch_close_cb),
|
call_func(channel->ch_close_cb, -1,
|
||||||
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
channel->ch_close_partial, NULL);
|
channel->ch_close_partial, NULL);
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
@ -5478,7 +5478,7 @@ job_cleanup(job_T *job)
|
|||||||
argv[0].vval.v_job = job;
|
argv[0].vval.v_job = job;
|
||||||
argv[1].v_type = VAR_NUMBER;
|
argv[1].v_type = VAR_NUMBER;
|
||||||
argv[1].vval.v_number = job->jv_exitval;
|
argv[1].vval.v_number = job->jv_exitval;
|
||||||
call_func(job->jv_exit_cb, (int)STRLEN(job->jv_exit_cb),
|
call_func(job->jv_exit_cb, -1,
|
||||||
&rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE,
|
&rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
job->jv_exit_partial, NULL);
|
job->jv_exit_partial, NULL);
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
@ -6069,8 +6069,7 @@ invoke_prompt_callback(void)
|
|||||||
argv[0].vval.v_string = vim_strsave(text);
|
argv[0].vval.v_string = vim_strsave(text);
|
||||||
argv[1].v_type = VAR_UNKNOWN;
|
argv[1].v_type = VAR_UNKNOWN;
|
||||||
|
|
||||||
call_func(curbuf->b_prompt_callback,
|
call_func(curbuf->b_prompt_callback, -1,
|
||||||
(int)STRLEN(curbuf->b_prompt_callback),
|
|
||||||
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
curbuf->b_prompt_partial, NULL);
|
curbuf->b_prompt_partial, NULL);
|
||||||
clear_tv(&argv[0]);
|
clear_tv(&argv[0]);
|
||||||
@ -6093,8 +6092,7 @@ invoke_prompt_interrupt(void)
|
|||||||
argv[0].v_type = VAR_UNKNOWN;
|
argv[0].v_type = VAR_UNKNOWN;
|
||||||
|
|
||||||
got_int = FALSE; // don't skip executing commands
|
got_int = FALSE; // don't skip executing commands
|
||||||
call_func(curbuf->b_prompt_interrupt,
|
call_func(curbuf->b_prompt_interrupt, -1,
|
||||||
(int)STRLEN(curbuf->b_prompt_interrupt),
|
|
||||||
&rettv, 0, argv, NULL, 0L, 0L, &dummy, TRUE,
|
&rettv, 0, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
curbuf->b_prompt_int_partial, NULL);
|
curbuf->b_prompt_int_partial, NULL);
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
|
@ -765,7 +765,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
|
|||||||
s = expr->vval.v_string;
|
s = expr->vval.v_string;
|
||||||
if (s == NULL || *s == NUL)
|
if (s == NULL || *s == NUL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
if (call_func(s, (int)STRLEN(s), rettv, argc, argv, NULL,
|
if (call_func(s, -1, rettv, argc, argv, NULL,
|
||||||
0L, 0L, &dummy, TRUE, NULL, NULL) == FAIL)
|
0L, 0L, &dummy, TRUE, NULL, NULL) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
@ -776,7 +776,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
|
|||||||
s = partial_name(partial);
|
s = partial_name(partial);
|
||||||
if (s == NULL || *s == NUL)
|
if (s == NULL || *s == NUL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
if (call_func(s, (int)STRLEN(s), rettv, argc, argv, NULL,
|
if (call_func(s, -1, rettv, argc, argv, NULL,
|
||||||
0L, 0L, &dummy, TRUE, partial, NULL) == FAIL)
|
0L, 0L, &dummy, TRUE, partial, NULL) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
@ -1088,7 +1088,7 @@ call_vim_function(
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
rettv->v_type = VAR_UNKNOWN; /* clear_tv() uses this */
|
rettv->v_type = VAR_UNKNOWN; /* clear_tv() uses this */
|
||||||
ret = call_func(func, (int)STRLEN(func), rettv, argc, argv, NULL,
|
ret = call_func(func, -1, rettv, argc, argv, NULL,
|
||||||
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
||||||
&doesrange, TRUE, NULL, NULL);
|
&doesrange, TRUE, NULL, NULL);
|
||||||
if (ret == FAIL)
|
if (ret == FAIL)
|
||||||
@ -7109,7 +7109,7 @@ handle_subscript(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
s = (char_u *)"";
|
s = (char_u *)"";
|
||||||
ret = get_func_tv(s, (int)STRLEN(s), rettv, arg,
|
ret = get_func_tv(s, -1, rettv, arg,
|
||||||
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
||||||
&len, evaluate, pt, selfdict);
|
&len, evaluate, pt, selfdict);
|
||||||
|
|
||||||
|
@ -767,6 +767,8 @@ static struct fst
|
|||||||
{"line2byte", 1, 1, f_line2byte},
|
{"line2byte", 1, 1, f_line2byte},
|
||||||
{"lispindent", 1, 1, f_lispindent},
|
{"lispindent", 1, 1, f_lispindent},
|
||||||
{"list2str", 1, 2, f_list2str},
|
{"list2str", 1, 2, f_list2str},
|
||||||
|
{"listener_add", 1, 2, f_listener_add},
|
||||||
|
{"listener_remove", 1, 1, f_listener_remove},
|
||||||
{"localtime", 0, 0, f_localtime},
|
{"localtime", 0, 0, f_localtime},
|
||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
{"log", 1, 1, f_log},
|
{"log", 1, 1, f_log},
|
||||||
@ -2007,12 +2009,11 @@ tv_get_buf(typval_T *tv, int curtab_only)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_SIGNS
|
|
||||||
/*
|
/*
|
||||||
* Get the buffer from "arg" and give an error and return NULL if it is not
|
* Get the buffer from "arg" and give an error and return NULL if it is not
|
||||||
* valid.
|
* valid.
|
||||||
*/
|
*/
|
||||||
static buf_T *
|
buf_T *
|
||||||
get_buf_arg(typval_T *arg)
|
get_buf_arg(typval_T *arg)
|
||||||
{
|
{
|
||||||
buf_T *buf;
|
buf_T *buf;
|
||||||
@ -2024,7 +2025,6 @@ get_buf_arg(typval_T *arg)
|
|||||||
semsg(_("E158: Invalid buffer name: %s"), tv_get_string(arg));
|
semsg(_("E158: Invalid buffer name: %s"), tv_get_string(arg));
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "bufname(expr)" function
|
* "bufname(expr)" function
|
||||||
@ -9746,9 +9746,9 @@ f_readfile(typval_T *argvars, typval_T *rettv)
|
|||||||
|
|
||||||
if (failed)
|
if (failed)
|
||||||
{
|
{
|
||||||
|
// an empty list is returned on error
|
||||||
list_free(rettv->vval.v_list);
|
list_free(rettv->vval.v_list);
|
||||||
/* readfile doc says an empty list is returned on error */
|
rettv_list_alloc(rettv);
|
||||||
rettv->vval.v_list = list_alloc();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vim_free(prev);
|
vim_free(prev);
|
||||||
@ -12644,8 +12644,7 @@ item_compare2(const void *s1, const void *s2)
|
|||||||
copy_tv(&si2->item->li_tv, &argv[1]);
|
copy_tv(&si2->item->li_tv, &argv[1]);
|
||||||
|
|
||||||
rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */
|
rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */
|
||||||
res = call_func(func_name, (int)STRLEN(func_name),
|
res = call_func(func_name, -1, &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
&rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE,
|
|
||||||
partial, sortinfo->item_compare_selfdict);
|
partial, sortinfo->item_compare_selfdict);
|
||||||
clear_tv(&argv[0]);
|
clear_tv(&argv[0]);
|
||||||
clear_tv(&argv[1]);
|
clear_tv(&argv[1]);
|
||||||
@ -14676,7 +14675,6 @@ f_test_settime(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
time_for_testing = (time_t)tv_get_number(&argvars[0]);
|
time_for_testing = (time_t)tv_get_number(&argvars[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_JOB_CHANNEL) || defined(FEAT_TIMERS) || defined(PROTO)
|
|
||||||
/*
|
/*
|
||||||
* Get a callback from "arg". It can be a Funcref or a function name.
|
* Get a callback from "arg". It can be a Funcref or a function name.
|
||||||
* When "arg" is zero return an empty string.
|
* When "arg" is zero return an empty string.
|
||||||
@ -14717,7 +14715,6 @@ free_callback(char_u *callback, partial_T *partial)
|
|||||||
vim_free(callback);
|
vim_free(callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FEAT_TIMERS
|
#ifdef FEAT_TIMERS
|
||||||
/*
|
/*
|
||||||
|
@ -325,7 +325,7 @@ timer_callback(timer_T *timer)
|
|||||||
argv[0].vval.v_number = (varnumber_T)timer->tr_id;
|
argv[0].vval.v_number = (varnumber_T)timer->tr_id;
|
||||||
argv[1].v_type = VAR_UNKNOWN;
|
argv[1].v_type = VAR_UNKNOWN;
|
||||||
|
|
||||||
call_func(timer->tr_callback, (int)STRLEN(timer->tr_callback),
|
call_func(timer->tr_callback, -1,
|
||||||
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
&rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
|
||||||
timer->tr_partial, NULL);
|
timer->tr_partial, NULL);
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
|
@ -1637,7 +1637,7 @@ ml_recover(void)
|
|||||||
* empty. Don't set the modified flag then. */
|
* empty. Don't set the modified flag then. */
|
||||||
if (!(curbuf->b_ml.ml_line_count == 2 && *ml_get(1) == NUL))
|
if (!(curbuf->b_ml.ml_line_count == 2 && *ml_get(1) == NUL))
|
||||||
{
|
{
|
||||||
changed_int();
|
changed_internal();
|
||||||
++CHANGEDTICK(curbuf);
|
++CHANGEDTICK(curbuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1651,7 +1651,7 @@ ml_recover(void)
|
|||||||
vim_free(p);
|
vim_free(p);
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
{
|
{
|
||||||
changed_int();
|
changed_internal();
|
||||||
++CHANGEDTICK(curbuf);
|
++CHANGEDTICK(curbuf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
2249
src/misc1.c
2249
src/misc1.c
File diff suppressed because it is too large
Load Diff
@ -63,6 +63,7 @@ extern int _stricoll(char *a, char *b);
|
|||||||
# endif
|
# endif
|
||||||
# include "autocmd.pro"
|
# include "autocmd.pro"
|
||||||
# include "buffer.pro"
|
# include "buffer.pro"
|
||||||
|
# include "change.pro"
|
||||||
# include "charset.pro"
|
# include "charset.pro"
|
||||||
# ifdef FEAT_CSCOPE
|
# ifdef FEAT_CSCOPE
|
||||||
# include "if_cscope.pro"
|
# include "if_cscope.pro"
|
||||||
|
27
src/proto/change.pro
Normal file
27
src/proto/change.pro
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* change.c */
|
||||||
|
void change_warning(int col);
|
||||||
|
void changed(void);
|
||||||
|
void changed_internal(void);
|
||||||
|
void f_listener_add(typval_T *argvars, typval_T *rettv);
|
||||||
|
void f_listener_remove(typval_T *argvars, typval_T *rettv);
|
||||||
|
void invoke_listeners(void);
|
||||||
|
void changed_bytes(linenr_T lnum, colnr_T col);
|
||||||
|
void inserted_bytes(linenr_T lnum, colnr_T col, int added);
|
||||||
|
void appended_lines(linenr_T lnum, long count);
|
||||||
|
void appended_lines_mark(linenr_T lnum, long count);
|
||||||
|
void deleted_lines(linenr_T lnum, long count);
|
||||||
|
void deleted_lines_mark(linenr_T lnum, long count);
|
||||||
|
void changed_lines(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra);
|
||||||
|
void unchanged(buf_T *buf, int ff);
|
||||||
|
void ins_bytes(char_u *p);
|
||||||
|
void ins_bytes_len(char_u *p, int len);
|
||||||
|
void ins_char(int c);
|
||||||
|
void ins_char_bytes(char_u *buf, int charlen);
|
||||||
|
void ins_str(char_u *s);
|
||||||
|
int del_char(int fixpos);
|
||||||
|
int del_chars(long count, int fixpos);
|
||||||
|
int del_bytes(long count, int fixpos_arg, int use_delcombine);
|
||||||
|
int open_line(int dir, int flags, int second_line_indent);
|
||||||
|
int truncate_line(int fixpos);
|
||||||
|
void del_lines(long nlines, int undo);
|
||||||
|
/* vim: set ft=c : */
|
@ -5,6 +5,7 @@ int find_internal_func(char_u *name);
|
|||||||
int call_internal_func(char_u *name, int argcount, typval_T *argvars, typval_T *rettv);
|
int call_internal_func(char_u *name, int argcount, typval_T *argvars, typval_T *rettv);
|
||||||
buf_T *buflist_find_by_name(char_u *name, int curtab_only);
|
buf_T *buflist_find_by_name(char_u *name, int curtab_only);
|
||||||
buf_T *tv_get_buf(typval_T *tv, int curtab_only);
|
buf_T *tv_get_buf(typval_T *tv, int curtab_only);
|
||||||
|
buf_T *get_buf_arg(typval_T *arg);
|
||||||
void execute_redir_str(char_u *value, int value_len);
|
void execute_redir_str(char_u *value, int value_len);
|
||||||
void mzscheme_call_vim(char_u *name, typval_T *args, typval_T *rettv);
|
void mzscheme_call_vim(char_u *name, typval_T *args, typval_T *rettv);
|
||||||
float_T vim_round(float_T f);
|
float_T vim_round(float_T f);
|
||||||
|
@ -7,7 +7,6 @@ int get_indent_str_vtab(char_u *ptr, int ts, int *vts, int list);
|
|||||||
int set_indent(int size, int flags);
|
int set_indent(int size, int flags);
|
||||||
int get_number_indent(linenr_T lnum);
|
int get_number_indent(linenr_T lnum);
|
||||||
int get_breakindent_win(win_T *wp, char_u *line);
|
int get_breakindent_win(win_T *wp, char_u *line);
|
||||||
int open_line(int dir, int flags, int second_line_indent);
|
|
||||||
int get_leader_len(char_u *line, char_u **flags, int backward, int include_space);
|
int get_leader_len(char_u *line, char_u **flags, int backward, int include_space);
|
||||||
int get_last_leader_offset(char_u *line, char_u **flags);
|
int get_last_leader_offset(char_u *line, char_u **flags);
|
||||||
int plines(linenr_T lnum);
|
int plines(linenr_T lnum);
|
||||||
@ -17,33 +16,12 @@ int plines_win_nofill(win_T *wp, linenr_T lnum, int winheight);
|
|||||||
int plines_win_nofold(win_T *wp, linenr_T lnum);
|
int plines_win_nofold(win_T *wp, linenr_T lnum);
|
||||||
int plines_win_col(win_T *wp, linenr_T lnum, long column);
|
int plines_win_col(win_T *wp, linenr_T lnum, long column);
|
||||||
int plines_m_win(win_T *wp, linenr_T first, linenr_T last);
|
int plines_m_win(win_T *wp, linenr_T first, linenr_T last);
|
||||||
void ins_bytes(char_u *p);
|
|
||||||
void ins_bytes_len(char_u *p, int len);
|
|
||||||
void ins_char(int c);
|
|
||||||
void ins_char_bytes(char_u *buf, int charlen);
|
|
||||||
void ins_str(char_u *s);
|
|
||||||
int del_char(int fixpos);
|
|
||||||
int del_chars(long count, int fixpos);
|
|
||||||
int del_bytes(long count, int fixpos_arg, int use_delcombine);
|
|
||||||
int truncate_line(int fixpos);
|
|
||||||
void del_lines(long nlines, int undo);
|
|
||||||
int gchar_pos(pos_T *pos);
|
int gchar_pos(pos_T *pos);
|
||||||
int gchar_cursor(void);
|
int gchar_cursor(void);
|
||||||
void pchar_cursor(int c);
|
void pchar_cursor(int c);
|
||||||
int inindent(int extra);
|
int inindent(int extra);
|
||||||
char_u *skip_to_option_part(char_u *p);
|
char_u *skip_to_option_part(char_u *p);
|
||||||
void changed(void);
|
|
||||||
void changed_int(void);
|
|
||||||
void changed_bytes(linenr_T lnum, colnr_T col);
|
|
||||||
void inserted_bytes(linenr_T lnum, colnr_T col, int added);
|
|
||||||
void appended_lines(linenr_T lnum, long count);
|
|
||||||
void appended_lines_mark(linenr_T lnum, long count);
|
|
||||||
void deleted_lines(linenr_T lnum, long count);
|
|
||||||
void deleted_lines_mark(linenr_T lnum, long count);
|
|
||||||
void changed_lines(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra);
|
|
||||||
void unchanged(buf_T *buf, int ff);
|
|
||||||
void check_status(buf_T *buf);
|
void check_status(buf_T *buf);
|
||||||
void change_warning(int col);
|
|
||||||
int ask_yesno(char_u *str, int direct);
|
int ask_yesno(char_u *str, int direct);
|
||||||
int is_mouse_key(int c);
|
int is_mouse_key(int c);
|
||||||
int get_keystroke(void);
|
int get_keystroke(void);
|
||||||
|
@ -7423,7 +7423,7 @@ vim_regsub_both(
|
|||||||
if (expr->v_type == VAR_FUNC)
|
if (expr->v_type == VAR_FUNC)
|
||||||
{
|
{
|
||||||
s = expr->vval.v_string;
|
s = expr->vval.v_string;
|
||||||
call_func(s, (int)STRLEN(s), &rettv,
|
call_func(s, -1, &rettv,
|
||||||
1, argv, fill_submatch_list,
|
1, argv, fill_submatch_list,
|
||||||
0L, 0L, &dummy, TRUE, NULL, NULL);
|
0L, 0L, &dummy, TRUE, NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -7432,7 +7432,7 @@ vim_regsub_both(
|
|||||||
partial_T *partial = expr->vval.v_partial;
|
partial_T *partial = expr->vval.v_partial;
|
||||||
|
|
||||||
s = partial_name(partial);
|
s = partial_name(partial);
|
||||||
call_func(s, (int)STRLEN(s), &rettv,
|
call_func(s, -1, &rettv,
|
||||||
1, argv, fill_submatch_list,
|
1, argv, fill_submatch_list,
|
||||||
0L, 0L, &dummy, TRUE, partial, NULL);
|
0L, 0L, &dummy, TRUE, partial, NULL);
|
||||||
}
|
}
|
||||||
|
@ -564,6 +564,11 @@ update_screen(int type_arg)
|
|||||||
type = 0;
|
type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
// Before updating the screen, notify any listeners of changed text.
|
||||||
|
invoke_listeners();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (must_redraw)
|
if (must_redraw)
|
||||||
{
|
{
|
||||||
if (type < must_redraw) /* use maximal type */
|
if (type < must_redraw) /* use maximal type */
|
||||||
|
@ -1873,6 +1873,19 @@ typedef struct
|
|||||||
#endif
|
#endif
|
||||||
} jobopt_T;
|
} jobopt_T;
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
/*
|
||||||
|
* Structure used for listeners added with listener_add().
|
||||||
|
*/
|
||||||
|
typedef struct listener_S listener_T;
|
||||||
|
struct listener_S
|
||||||
|
{
|
||||||
|
listener_T *lr_next;
|
||||||
|
int lr_id;
|
||||||
|
char_u *lr_callback;
|
||||||
|
partial_T *lr_partial;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* structure used for explicit stack while garbage collecting hash tables */
|
/* structure used for explicit stack while garbage collecting hash tables */
|
||||||
typedef struct ht_stack_S
|
typedef struct ht_stack_S
|
||||||
@ -2424,6 +2437,8 @@ struct file_buffer
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
dictitem_T b_bufvar; /* variable for "b:" Dictionary */
|
dictitem_T b_bufvar; /* variable for "b:" Dictionary */
|
||||||
dict_T *b_vars; /* internal variables, local to buffer */
|
dict_T *b_vars; /* internal variables, local to buffer */
|
||||||
|
|
||||||
|
listener_T *b_listener;
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_TEXT_PROP
|
#ifdef FEAT_TEXT_PROP
|
||||||
int b_has_textprop; // TRUE when text props were added
|
int b_has_textprop; // TRUE when text props were added
|
||||||
|
15
src/term.c
15
src/term.c
@ -2108,8 +2108,9 @@ set_termname(char_u *term)
|
|||||||
# define HMT_JSBTERM 8
|
# define HMT_JSBTERM 8
|
||||||
# define HMT_PTERM 16
|
# define HMT_PTERM 16
|
||||||
# define HMT_URXVT 32
|
# define HMT_URXVT 32
|
||||||
# define HMT_SGR 64
|
# define HMT_GPM 64
|
||||||
# define HMT_SGR_REL 128
|
# define HMT_SGR 128
|
||||||
|
# define HMT_SGR_REL 256
|
||||||
static int has_mouse_termcode = 0;
|
static int has_mouse_termcode = 0;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -2149,6 +2150,11 @@ set_mouse_termcode(
|
|||||||
if (n == KS_URXVT_MOUSE)
|
if (n == KS_URXVT_MOUSE)
|
||||||
has_mouse_termcode |= HMT_URXVT;
|
has_mouse_termcode |= HMT_URXVT;
|
||||||
else
|
else
|
||||||
|
# endif
|
||||||
|
# ifdef FEAT_MOUSE_GPM
|
||||||
|
if (n == KS_GPM_MOUSE)
|
||||||
|
has_mouse_termcode |= HMT_GPM;
|
||||||
|
else
|
||||||
# endif
|
# endif
|
||||||
if (n == KS_SGR_MOUSE)
|
if (n == KS_SGR_MOUSE)
|
||||||
has_mouse_termcode |= HMT_SGR;
|
has_mouse_termcode |= HMT_SGR;
|
||||||
@ -2196,6 +2202,11 @@ del_mouse_termcode(
|
|||||||
if (n == KS_URXVT_MOUSE)
|
if (n == KS_URXVT_MOUSE)
|
||||||
has_mouse_termcode &= ~HMT_URXVT;
|
has_mouse_termcode &= ~HMT_URXVT;
|
||||||
else
|
else
|
||||||
|
# endif
|
||||||
|
# ifdef FEAT_MOUSE_GPM
|
||||||
|
if (n == KS_GPM_MOUSE)
|
||||||
|
has_mouse_termcode &= ~HMT_GPM;
|
||||||
|
else
|
||||||
# endif
|
# endif
|
||||||
if (n == KS_SGR_MOUSE)
|
if (n == KS_SGR_MOUSE)
|
||||||
has_mouse_termcode &= ~HMT_SGR;
|
has_mouse_termcode &= ~HMT_SGR;
|
||||||
|
@ -3779,7 +3779,7 @@ handle_call_command(term_T *term, channel_T *channel, listitem_T *item)
|
|||||||
argvars[0].v_type = VAR_NUMBER;
|
argvars[0].v_type = VAR_NUMBER;
|
||||||
argvars[0].vval.v_number = term->tl_buffer->b_fnum;
|
argvars[0].vval.v_number = term->tl_buffer->b_fnum;
|
||||||
argvars[1] = item->li_next->li_tv;
|
argvars[1] = item->li_next->li_tv;
|
||||||
if (call_func(func, (int)STRLEN(func), &rettv,
|
if (call_func(func, -1, &rettv,
|
||||||
2, argvars, /* argv_func */ NULL,
|
2, argvars, /* argv_func */ NULL,
|
||||||
/* firstline */ 1, /* lastline */ 1,
|
/* firstline */ 1, /* lastline */ 1,
|
||||||
&doesrange, /* evaluate */ TRUE,
|
&doesrange, /* evaluate */ TRUE,
|
||||||
@ -3976,7 +3976,9 @@ create_vterm(term_T *term, int rows, int cols)
|
|||||||
&term->tl_default_color.fg,
|
&term->tl_default_color.fg,
|
||||||
&term->tl_default_color.bg);
|
&term->tl_default_color.bg);
|
||||||
|
|
||||||
if (t_colors >= 16)
|
if (t_colors < 16)
|
||||||
|
// Less than 16 colors: assume that bold means using a bright color for
|
||||||
|
// the foreground color.
|
||||||
vterm_state_set_bold_highbright(vterm_obtain_state(vterm), 1);
|
vterm_state_set_bold_highbright(vterm_obtain_state(vterm), 1);
|
||||||
|
|
||||||
/* Required to initialize most things. */
|
/* Required to initialize most things. */
|
||||||
|
@ -168,6 +168,7 @@ NEW_TESTS = \
|
|||||||
test_lispwords \
|
test_lispwords \
|
||||||
test_listchars \
|
test_listchars \
|
||||||
test_listdict \
|
test_listdict \
|
||||||
|
test_listener \
|
||||||
test_listlbr \
|
test_listlbr \
|
||||||
test_listlbr_utf8 \
|
test_listlbr_utf8 \
|
||||||
test_lua \
|
test_lua \
|
||||||
@ -359,6 +360,7 @@ NEW_TESTS_RES = \
|
|||||||
test_lineending.res \
|
test_lineending.res \
|
||||||
test_listchars.res \
|
test_listchars.res \
|
||||||
test_listdict.res \
|
test_listdict.res \
|
||||||
|
test_listener.res \
|
||||||
test_listlbr.res \
|
test_listlbr.res \
|
||||||
test_lua.res \
|
test_lua.res \
|
||||||
test_makeencoding.res \
|
test_makeencoding.res \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
>A+0#0000001#8080809@1|B+0#e000002#ff404010@1|C+0#00e0003#40ff4011@1|D+0#e0e0004#ffff4012@1|E+0#0000e05#4040ff13@1|F+0#e000e06#ff40ff14@1|G+0#00e0e07#40ffff15@1|H+0#e0e0e08#ffffff16@1|I+0#8080809#0000001@1|J+0#ff404010#e000002@1|K+0#40ff4011#00e0003@1|L+0#ffff4012#e0e0004@1|M+0#4040ff13#0000e05@1|N+0#ff40ff14#e000e06@1|O+0#40ffff15#00e0e07@1|P+0#ffffff16#e0e0e08@1| +0#0000000#ffffff0@42
|
>A+0#0000001#8080809@1|B+0#e000002#ff404010@1|C+0#00e0003#40ff4011@1|D+0#e0e0004#ffff4012@1|E+0#0000e05#4040ff13@1|F+0#e000e06#ff40ff14@1|G+0#00e0e07#40ffff15@1|H+0#e0e0e08#ffffff16@1|I+0#8080809#0000001@1|J+0#ff404010#e000002@1|K+0#40ff4011#00e0003@1|L+0#ffff4012#e0e0004@1|M+0#4040ff13#0000e05@1|N+0#ff40ff14#e000e06@1|O+0#40ffff15#00e0e07@1|P+0#ffffff16#e0e0e08@1| +0#0000000#ffffff0|X+2#e000002&@1|Y+2#40ff4011&@1|Z+2#ff40ff14#e000e06@1| +0#0000000#ffffff0@35
|
||||||
@2| +0#4040ff13&@72
|
@2| +0#4040ff13&@72
|
||||||
|~| @73
|
|~| @73
|
||||||
|~| @73
|
|~| @73
|
||||||
|
@ -18,6 +18,7 @@ func Test_vim_did_enter()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
if has('timers')
|
if has('timers')
|
||||||
|
|
||||||
func ExitInsertMode(id)
|
func ExitInsertMode(id)
|
||||||
call feedkeys("\<Esc>")
|
call feedkeys("\<Esc>")
|
||||||
endfunc
|
endfunc
|
||||||
@ -70,7 +71,30 @@ if has('timers')
|
|||||||
au! CursorHoldI
|
au! CursorHoldI
|
||||||
set updatetime&
|
set updatetime&
|
||||||
endfunc
|
endfunc
|
||||||
endif
|
|
||||||
|
func Test_OptionSet_modeline()
|
||||||
|
call test_override('starting', 1)
|
||||||
|
au! OptionSet
|
||||||
|
augroup set_tabstop
|
||||||
|
au OptionSet tabstop call timer_start(1, {-> execute("echo 'Handler called'", "")})
|
||||||
|
augroup END
|
||||||
|
call writefile(['vim: set ts=7 sw=5 :', 'something'], 'XoptionsetModeline')
|
||||||
|
set modeline
|
||||||
|
let v:errmsg = ''
|
||||||
|
call assert_fails('split XoptionsetModeline', 'E12:')
|
||||||
|
call assert_equal(7, &ts)
|
||||||
|
call assert_equal('', v:errmsg)
|
||||||
|
|
||||||
|
augroup set_tabstop
|
||||||
|
au!
|
||||||
|
augroup END
|
||||||
|
bwipe!
|
||||||
|
set ts&
|
||||||
|
call delete('XoptionsetModeline')
|
||||||
|
call test_override('starting', 0)
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
endif "has('timers')
|
||||||
|
|
||||||
func Test_bufunload()
|
func Test_bufunload()
|
||||||
augroup test_bufunload_group
|
augroup test_bufunload_group
|
||||||
@ -673,28 +697,6 @@ func Test_OptionSet_diffmode_close()
|
|||||||
"delfunc! AutoCommandOptionSet
|
"delfunc! AutoCommandOptionSet
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_OptionSet_modeline()
|
|
||||||
call test_override('starting', 1)
|
|
||||||
au! OptionSet
|
|
||||||
augroup set_tabstop
|
|
||||||
au OptionSet tabstop call timer_start(1, {-> execute("echo 'Handler called'", "")})
|
|
||||||
augroup END
|
|
||||||
call writefile(['vim: set ts=7 sw=5 :', 'something'], 'XoptionsetModeline')
|
|
||||||
set modeline
|
|
||||||
let v:errmsg = ''
|
|
||||||
call assert_fails('split XoptionsetModeline', 'E12:')
|
|
||||||
call assert_equal(7, &ts)
|
|
||||||
call assert_equal('', v:errmsg)
|
|
||||||
|
|
||||||
augroup set_tabstop
|
|
||||||
au!
|
|
||||||
augroup END
|
|
||||||
bwipe!
|
|
||||||
set ts&
|
|
||||||
call delete('XoptionsetModeline')
|
|
||||||
call test_override('starting', 0)
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
" Test for Bufleave autocommand that deletes the buffer we are about to edit.
|
" Test for Bufleave autocommand that deletes the buffer we are about to edit.
|
||||||
func Test_BufleaveWithDelete()
|
func Test_BufleaveWithDelete()
|
||||||
new | edit Xfile1
|
new | edit Xfile1
|
||||||
|
95
src/testdir/test_listener.vim
Normal file
95
src/testdir/test_listener.vim
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
" tests for listener_add() and listener_remove()
|
||||||
|
|
||||||
|
func s:StoreList(l)
|
||||||
|
let s:list = a:l
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func s:AnotherStoreList(l)
|
||||||
|
let s:list2 = a:l
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func s:EvilStoreList(l)
|
||||||
|
let s:list3 = a:l
|
||||||
|
call assert_fails("call add(a:l, 'myitem')", "E742:")
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_listening()
|
||||||
|
new
|
||||||
|
call setline(1, ['one', 'two'])
|
||||||
|
let id = listener_add({l -> s:StoreList(l)})
|
||||||
|
call setline(1, 'one one')
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], s:list)
|
||||||
|
|
||||||
|
" Undo is also a change
|
||||||
|
set undolevels& " start new undo block
|
||||||
|
call append(2, 'two two')
|
||||||
|
undo
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 3, 'end': 3, 'col': 1, 'added': 1},
|
||||||
|
\ {'lnum': 3, 'end': 4, 'col': 1, 'added': -1}, ], s:list)
|
||||||
|
1
|
||||||
|
|
||||||
|
" Two listeners, both get called.
|
||||||
|
let id2 = listener_add({l -> s:AnotherStoreList(l)})
|
||||||
|
let s:list = []
|
||||||
|
let s:list2 = []
|
||||||
|
exe "normal $asome\<Esc>"
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 1, 'end': 2, 'col': 8, 'added': 0}], s:list)
|
||||||
|
call assert_equal([{'lnum': 1, 'end': 2, 'col': 8, 'added': 0}], s:list2)
|
||||||
|
|
||||||
|
call listener_remove(id2)
|
||||||
|
let s:list = []
|
||||||
|
let s:list2 = []
|
||||||
|
call setline(3, 'three')
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 3, 'end': 3, 'col': 1, 'added': 1}], s:list)
|
||||||
|
call assert_equal([], s:list2)
|
||||||
|
|
||||||
|
" the "o" command first adds an empty line and then changes it
|
||||||
|
let s:list = []
|
||||||
|
exe "normal Gofour\<Esc>"
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 4, 'end': 4, 'col': 1, 'added': 1},
|
||||||
|
\ {'lnum': 4, 'end': 5, 'col': 1, 'added': 0}], s:list)
|
||||||
|
|
||||||
|
" Remove last listener
|
||||||
|
let s:list = []
|
||||||
|
call listener_remove(id)
|
||||||
|
call setline(1, 'asdfasdf')
|
||||||
|
redraw
|
||||||
|
call assert_equal([], s:list)
|
||||||
|
|
||||||
|
" Trying to change the list fails
|
||||||
|
let id = listener_add({l -> s:EvilStoreList(l)})
|
||||||
|
let s:list3 = []
|
||||||
|
call setline(1, 'asdfasdf')
|
||||||
|
redraw
|
||||||
|
call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], s:list3)
|
||||||
|
|
||||||
|
call listener_remove(id)
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func s:StoreBufList(buf, l)
|
||||||
|
let s:bufnr = a:buf
|
||||||
|
let s:list = a:l
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_listening_other_buf()
|
||||||
|
new
|
||||||
|
call setline(1, ['one', 'two'])
|
||||||
|
let bufnr = bufnr('')
|
||||||
|
normal ww
|
||||||
|
let id = listener_add(function('s:StoreBufList', [bufnr]), bufnr)
|
||||||
|
let s:list = []
|
||||||
|
call setbufline(bufnr, 1, 'hello')
|
||||||
|
redraw
|
||||||
|
call assert_equal(bufnr, s:bufnr)
|
||||||
|
call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], s:list)
|
||||||
|
|
||||||
|
call listener_remove(id)
|
||||||
|
exe "buf " .. bufnr
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
@ -1491,7 +1491,7 @@ func Test_terminal_all_ansi_colors()
|
|||||||
|
|
||||||
" Use all the ANSI colors.
|
" Use all the ANSI colors.
|
||||||
call writefile([
|
call writefile([
|
||||||
\ 'call setline(1, "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP")',
|
\ 'call setline(1, "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP XXYYZZ")',
|
||||||
\ 'hi Tblack ctermfg=0 ctermbg=8',
|
\ 'hi Tblack ctermfg=0 ctermbg=8',
|
||||||
\ 'hi Tdarkred ctermfg=1 ctermbg=9',
|
\ 'hi Tdarkred ctermfg=1 ctermbg=9',
|
||||||
\ 'hi Tdarkgreen ctermfg=2 ctermbg=10',
|
\ 'hi Tdarkgreen ctermfg=2 ctermbg=10',
|
||||||
@ -1508,6 +1508,9 @@ func Test_terminal_all_ansi_colors()
|
|||||||
\ 'hi Tmagenta ctermfg=13 ctermbg=5',
|
\ 'hi Tmagenta ctermfg=13 ctermbg=5',
|
||||||
\ 'hi Tcyan ctermfg=14 ctermbg=6',
|
\ 'hi Tcyan ctermfg=14 ctermbg=6',
|
||||||
\ 'hi Twhite ctermfg=15 ctermbg=7',
|
\ 'hi Twhite ctermfg=15 ctermbg=7',
|
||||||
|
\ 'hi TdarkredBold ctermfg=1 cterm=bold',
|
||||||
|
\ 'hi TgreenBold ctermfg=10 cterm=bold',
|
||||||
|
\ 'hi TmagentaBold ctermfg=13 cterm=bold ctermbg=5',
|
||||||
\ '',
|
\ '',
|
||||||
\ 'call matchadd("Tblack", "A")',
|
\ 'call matchadd("Tblack", "A")',
|
||||||
\ 'call matchadd("Tdarkred", "B")',
|
\ 'call matchadd("Tdarkred", "B")',
|
||||||
@ -1525,6 +1528,9 @@ func Test_terminal_all_ansi_colors()
|
|||||||
\ 'call matchadd("Tmagenta", "N")',
|
\ 'call matchadd("Tmagenta", "N")',
|
||||||
\ 'call matchadd("Tcyan", "O")',
|
\ 'call matchadd("Tcyan", "O")',
|
||||||
\ 'call matchadd("Twhite", "P")',
|
\ 'call matchadd("Twhite", "P")',
|
||||||
|
\ 'call matchadd("TdarkredBold", "X")',
|
||||||
|
\ 'call matchadd("TgreenBold", "Y")',
|
||||||
|
\ 'call matchadd("TmagentaBold", "Z")',
|
||||||
\ 'redraw',
|
\ 'redraw',
|
||||||
\ ], 'Xcolorscript')
|
\ ], 'Xcolorscript')
|
||||||
let buf = RunVimInTerminal('-S Xcolorscript', {'rows': 10})
|
let buf = RunVimInTerminal('-S Xcolorscript', {'rows': 10})
|
||||||
|
@ -743,6 +743,42 @@ func Test_relative_cursor_second_line_after_resize()
|
|||||||
let &so = so_save
|
let &so = so_save
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_split_noscroll()
|
||||||
|
let so_save = &so
|
||||||
|
new
|
||||||
|
only
|
||||||
|
|
||||||
|
" Make sure windows can hold all content after split.
|
||||||
|
for i in range(1, 20)
|
||||||
|
wincmd +
|
||||||
|
redraw!
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call setline (1, range(1, 8))
|
||||||
|
normal 100%
|
||||||
|
split
|
||||||
|
|
||||||
|
1wincmd w
|
||||||
|
let winid1 = win_getid()
|
||||||
|
let info1 = getwininfo(winid1)[0]
|
||||||
|
|
||||||
|
2wincmd w
|
||||||
|
let winid2 = win_getid()
|
||||||
|
let info2 = getwininfo(winid2)[0]
|
||||||
|
|
||||||
|
call assert_equal(1, info1.topline)
|
||||||
|
call assert_equal(1, info2.topline)
|
||||||
|
|
||||||
|
" Restore original state.
|
||||||
|
for i in range(1, 20)
|
||||||
|
wincmd -
|
||||||
|
redraw!
|
||||||
|
endfor
|
||||||
|
only!
|
||||||
|
bwipe!
|
||||||
|
let &so = so_save
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Tests for the winnr() function
|
" Tests for the winnr() function
|
||||||
func Test_winnr()
|
func Test_winnr()
|
||||||
only | tabonly
|
only | tabonly
|
||||||
|
@ -432,16 +432,16 @@ emsg_funcname(char *ermsg, char_u *name)
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
get_func_tv(
|
get_func_tv(
|
||||||
char_u *name, /* name of the function */
|
char_u *name, // name of the function
|
||||||
int len, /* length of "name" */
|
int len, // length of "name" or -1 to use strlen()
|
||||||
typval_T *rettv,
|
typval_T *rettv,
|
||||||
char_u **arg, /* argument, pointing to the '(' */
|
char_u **arg, // argument, pointing to the '('
|
||||||
linenr_T firstline, /* first line of range */
|
linenr_T firstline, // first line of range
|
||||||
linenr_T lastline, /* last line of range */
|
linenr_T lastline, // last line of range
|
||||||
int *doesrange, /* return: function handled range */
|
int *doesrange, // return: function handled range
|
||||||
int evaluate,
|
int evaluate,
|
||||||
partial_T *partial, /* for extra arguments */
|
partial_T *partial, // for extra arguments
|
||||||
dict_T *selfdict) /* Dictionary for "self" */
|
dict_T *selfdict) // Dictionary for "self"
|
||||||
{
|
{
|
||||||
char_u *argp;
|
char_u *argp;
|
||||||
int ret = OK;
|
int ret = OK;
|
||||||
@ -1435,7 +1435,7 @@ func_call(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
r = call_func(name, (int)STRLEN(name), rettv, argc, argv, NULL,
|
r = call_func(name, -1, rettv, argc, argv, NULL,
|
||||||
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
|
||||||
&dummy, TRUE, partial, selfdict);
|
&dummy, TRUE, partial, selfdict);
|
||||||
|
|
||||||
@ -1458,20 +1458,20 @@ func_call(
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
call_func(
|
call_func(
|
||||||
char_u *funcname, /* name of the function */
|
char_u *funcname, // name of the function
|
||||||
int len, /* length of "name" */
|
int len, // length of "name" or -1 to use strlen()
|
||||||
typval_T *rettv, /* return value goes here */
|
typval_T *rettv, // return value goes here
|
||||||
int argcount_in, /* number of "argvars" */
|
int argcount_in, // number of "argvars"
|
||||||
typval_T *argvars_in, /* vars for arguments, must have "argcount"
|
typval_T *argvars_in, // vars for arguments, must have "argcount"
|
||||||
PLUS ONE elements! */
|
// PLUS ONE elements!
|
||||||
int (* argv_func)(int, typval_T *, int),
|
int (* argv_func)(int, typval_T *, int),
|
||||||
/* function to fill in argvars */
|
// function to fill in argvars
|
||||||
linenr_T firstline, /* first line of range */
|
linenr_T firstline, // first line of range
|
||||||
linenr_T lastline, /* last line of range */
|
linenr_T lastline, // last line of range
|
||||||
int *doesrange, /* return: function handled range */
|
int *doesrange, // return: function handled range
|
||||||
int evaluate,
|
int evaluate,
|
||||||
partial_T *partial, /* optional, can be NULL */
|
partial_T *partial, // optional, can be NULL
|
||||||
dict_T *selfdict_in) /* Dictionary for "self" */
|
dict_T *selfdict_in) // Dictionary for "self"
|
||||||
{
|
{
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
int error = ERROR_NONE;
|
int error = ERROR_NONE;
|
||||||
@ -1487,9 +1487,9 @@ call_func(
|
|||||||
typval_T argv[MAX_FUNC_ARGS + 1]; /* used when "partial" is not NULL */
|
typval_T argv[MAX_FUNC_ARGS + 1]; /* used when "partial" is not NULL */
|
||||||
int argv_clear = 0;
|
int argv_clear = 0;
|
||||||
|
|
||||||
/* Make a copy of the name, if it comes from a funcref variable it could
|
// Make a copy of the name, if it comes from a funcref variable it could
|
||||||
* be changed or deleted in the called function. */
|
// be changed or deleted in the called function.
|
||||||
name = vim_strnsave(funcname, len);
|
name = len > 0 ? vim_strnsave(funcname, len) : vim_strsave(funcname);
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -3285,7 +3285,7 @@ ex_call(exarg_T *eap)
|
|||||||
curwin->w_cursor.coladd = 0;
|
curwin->w_cursor.coladd = 0;
|
||||||
}
|
}
|
||||||
arg = startarg;
|
arg = startarg;
|
||||||
if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg,
|
if (get_func_tv(name, -1, &rettv, &arg,
|
||||||
eap->line1, eap->line2, &doesrange,
|
eap->line1, eap->line2, &doesrange,
|
||||||
!eap->skip, partial, fudi.fd_dict) == FAIL)
|
!eap->skip, partial, fudi.fd_dict) == FAIL)
|
||||||
{
|
{
|
||||||
|
@ -767,6 +767,32 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1330,
|
||||||
|
/**/
|
||||||
|
1329,
|
||||||
|
/**/
|
||||||
|
1328,
|
||||||
|
/**/
|
||||||
|
1327,
|
||||||
|
/**/
|
||||||
|
1326,
|
||||||
|
/**/
|
||||||
|
1325,
|
||||||
|
/**/
|
||||||
|
1324,
|
||||||
|
/**/
|
||||||
|
1323,
|
||||||
|
/**/
|
||||||
|
1322,
|
||||||
|
/**/
|
||||||
|
1321,
|
||||||
|
/**/
|
||||||
|
1320,
|
||||||
|
/**/
|
||||||
|
1319,
|
||||||
|
/**/
|
||||||
|
1318,
|
||||||
/**/
|
/**/
|
||||||
1317,
|
1317,
|
||||||
/**/
|
/**/
|
||||||
|
10
src/window.c
10
src/window.c
@ -5827,9 +5827,13 @@ scroll_to_fraction(win_T *wp, int prev_height)
|
|||||||
int sline, line_size;
|
int sline, line_size;
|
||||||
int height = wp->w_height;
|
int height = wp->w_height;
|
||||||
|
|
||||||
// Don't change w_topline when height is zero. Don't set w_topline when
|
// Don't change w_topline in any of these cases:
|
||||||
// 'scrollbind' is set and this isn't the current window.
|
// - window height is 0
|
||||||
if (height > 0 && (!wp->w_p_scb || wp == curwin))
|
// - 'scrollbind' is set and this isn't the current window
|
||||||
|
// - window height is sufficient to display the whole buffer
|
||||||
|
if (height > 0
|
||||||
|
&& (!wp->w_p_scb || wp == curwin)
|
||||||
|
&& (height < wp->w_buffer->b_ml.ml_line_count))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Find a value for w_topline that shows the cursor at the same
|
* Find a value for w_topline that shows the cursor at the same
|
||||||
|
Reference in New Issue
Block a user