Merge #7735 'runtime fixes, doc updates'

This commit is contained in:
Justin M. Keyes
2017-12-27 12:53:54 +01:00
committed by GitHub
10 changed files with 483 additions and 208 deletions

View File

@@ -174,7 +174,7 @@ function! s:check_terminal() abort
\ .(empty(kbs_entry) ? '? (not found)' : kdch1_entry)) \ .(empty(kbs_entry) ? '? (not found)' : kdch1_entry))
endif endif
for env_var in ['XTERM_VERSION', 'VTE_VERSION', 'TERM_PROGRAM', 'COLORTERM', 'SSH_TTY'] for env_var in ['XTERM_VERSION', 'VTE_VERSION', 'TERM_PROGRAM', 'COLORTERM', 'SSH_TTY']
if !exists('$'.env_var) if exists('$'.env_var)
call health#report_info(printf("$%s='%s'", env_var, eval('$'.env_var))) call health#report_info(printf("$%s='%s'", env_var, eval('$'.env_var)))
endif endif
endfor endfor

View File

@@ -512,27 +512,27 @@ nvim_parse_expression({expr}, {flags}, {highlight})
[start_col, end_col)). [start_col, end_col)).
Return:~ Return:~
AST: top-level dictionary holds keys "error": Dictionary AST: top-level dictionary with these keys: "error":
with error, present only if parser saw some error. Dictionary with error, present only if parser saw some
Contains the following keys: "message": String, error error. Contains the following keys: "message": String,
message in printf format, translated. Must contain exactly error message in printf format, translated. Must contain
one "%.*s". "arg": String, error message argument. "len": exactly one "%.*s". "arg": String, error message argument.
Amount of bytes successfully parsed. With flags equal to "len": Amount of bytes successfully parsed. With flags
"" that should be equal to the length of expr string. equal to "" that should be equal to the length of expr
@note: “Sucessfully parsed” here means “participated in string. @note: “Sucessfully parsed” here means
AST creation”, not “till the first error”. "ast": AST, “participated in AST creation”, not “till the first
either nil or a dictionary with these keys: "type": node error”. "ast": AST, either nil or a dictionary with these
type, one of the value names from ExprASTNodeType keys: "type": node type, one of the value names from
stringified without "kExprNode" prefix. "start": a pair ExprASTNodeType stringified without "kExprNode" prefix.
[line, column] describing where node is “started” where "start": a pair [line, column] describing where node is
"line" is always 0 (will not be 0 if you will be using “started” where "line" is always 0 (will not be 0 if you
nvim_parse_viml() on e.g. ":let", but that is not present will be using nvim_parse_viml() on e.g. ":let", but that
yet). Both elements are Integers. "len": “length” of the is not present yet). Both elements are Integers. "len":
node. This and "start" are there for debugging purposes “length” of the node. This and "start" are there for
primary (debugging parser and providing debug debugging purposes primary (debugging parser and providing
information). "children": a list of nodes described in debug information). "children": a list of nodes described
top/"ast". There always is zero, one or two children, key in top/"ast". There always is zero, one or two children,
will not be present if node has no children. Maximum key will not be present if node has no children. Maximum
number of children may be found in node_maxchildren array. number of children may be found in node_maxchildren array.
Local values (present only for certain nodes): "scope": a Local values (present only for certain nodes): "scope": a
single Integer, specifies scope for "Option" and single Integer, specifies scope for "Option" and

View File

@@ -4,9 +4,9 @@
NVIM REFERENCE MANUAL by Thiago de Arruda NVIM REFERENCE MANUAL by Thiago de Arruda
Nvim's facilities for async io *channel* Nvim asynchronous IO *channel*
Type <M-]> to see the table of contents. Type |gO| to see the table of contents.
============================================================================== ==============================================================================
1. Introduction *channel-intro* 1. Introduction *channel-intro*

View File

@@ -270,9 +270,9 @@ External UIs are expected to implement these common features:
- Send the "super" key (Windows key, Apple key) as a |<D-| chord. - Send the "super" key (Windows key, Apple key) as a |<D-| chord.
Implementation ~ Implementation ~
- Options can be monitored for changes by the |OptionSet| autocmd. E.g. if the - UI-related options ('guifont', 'ambiwidth', …) are published in the
user sets the 'guifont' option, this autocmd notifies channel 42: > "option_set" |ui-global| event. The event is triggered when the UI first
autocmd OptionSet guifont call rpcnotify(42, 'option-changed', 'guifont', &guifont) connects to Nvim and whenever an option is changed by the user or a plugin.
vim:tw=78:ts=8:ft=help:norl: vim:tw=78:ts=8:ft=help:norl:

View File

@@ -70,6 +70,7 @@ Providers
Ruby plugins |provider-ruby| Ruby plugins |provider-ruby|
Shared data |shada| Shared data |shada|
Embedded terminal |terminal| Embedded terminal |terminal|
VimL parser |nvim_parse_expression()|
XDG base directories |xdg| XDG base directories |xdg|
USER EXPERIENCE ~ USER EXPERIENCE ~

View File

@@ -478,7 +478,7 @@ def gen_docs(config):
docs += '\n\n\n' docs += '\n\n\n'
docs = docs.rstrip() + '\n\n' docs = docs.rstrip() + '\n\n'
docs += ' vim:tw=78:ts=8:ft=help:norl:' docs += ' vim:tw=78:ts=8:ft=help:norl:\n'
doc_file = os.path.join(base_dir, 'runtime/doc', doc_filename) doc_file = os.path.join(base_dir, 'runtime/doc', doc_filename)
delete_lines_below(doc_file, section_start_token) delete_lines_below(doc_file, section_start_token)

View File

@@ -14,27 +14,26 @@ readonly BRANCH_PREFIX="vim-"
CREATED_FILES=() CREATED_FILES=()
usage() { usage() {
echo "Helper script for porting Vim patches. For more information, see" echo "Port Vim patches to Neovim"
echo "https://github.com/neovim/neovim/wiki/Merging-patches-from-upstream-vim" echo "https://github.com/neovim/neovim/wiki/Merging-patches-from-upstream-vim"
echo echo
echo "Usage: ${BASENAME} [-h | -l | -p vim-revision | -r pr-number]" echo "Usage: ${BASENAME} [-h | -l | -p vim-revision | -r pr-number]"
echo echo
echo "Options:" echo "Options:"
echo " -h Show this message and exit." echo " -h Show this message and exit."
echo " -l Show list of missing Vim patches." echo " -l List missing Vim patches."
echo " -L Print missing Vim patches in machine-readable form." echo " -L List missing Vim patches (for scripts)."
echo " -p {vim-revision} Download and generate the specified Vim patch." echo " -M List all merged patch-numbers (at current v:version)."
echo " vim-revision can be a version number '8.0.xxx'" echo " -p {vim-revision} Download and generate a Vim patch. vim-revision"
echo " or a valid Git ref (hash, tag, etc.)." echo " can be a Vim version (8.0.xxx) or a Git hash."
echo " -P {vim-revision} Download, generate and apply the Vim patch." echo " -P {vim-revision} Download, generate and apply a Vim patch."
echo " -g {vim-revision} Download the Vim patch vim-revision." echo " -g {vim-revision} Download a Vim patch."
echo " vim-revision can be a version number of the " echo " -s Create a vim-patch pull request."
echo " format '7.4.xxx' or a Git commit hash." echo " -r {pr-number} Review a vim-patch pull request."
echo " -s Submit a vim-patch pull request to Neovim." echo ' -V Clone the Vim source code to $VIM_SOURCE_DIR.'
echo " -r {pr-number} Review a vim-patch pull request to Neovim."
echo echo
echo "Set VIM_SOURCE_DIR to change where Vim's sources are stored." echo ' $VIM_SOURCE_DIR controls where Vim sources are found'
echo "Default is '${VIM_SOURCE_DIR_DEFAULT}'." echo " (default: '${VIM_SOURCE_DIR_DEFAULT}')"
} }
# Checks if a program is in the user's PATH, and is executable. # Checks if a program is in the user's PATH, and is executable.
@@ -173,7 +172,7 @@ preprocess_patch() {
# Rename src/ paths to src/nvim/ # Rename src/ paths to src/nvim/
LC_ALL=C sed -e 's/\( [ab]\/src\)/\1\/nvim/g' \ LC_ALL=C sed -e 's/\( [ab]\/src\)/\1\/nvim/g' \
"$file" > "$file".tmp && mv "$file".tmp "$file" "$file" > "$file".tmp && mv "$file".tmp "$file"
# Rename path to matchit plugin. # Rename path to matchit plugin.
LC_ALL=C sed -e 's@\( [ab]/runtime\)/pack/dist/opt/matchit/\(plugin/matchit.vim\)@\1/\2@g' \ LC_ALL=C sed -e 's@\( [ab]/runtime\)/pack/dist/opt/matchit/\(plugin/matchit.vim\)@\1/\2@g' \
"$file" > "$file".tmp && mv "$file".tmp "$file" "$file" > "$file".tmp && mv "$file".tmp "$file"
@@ -199,7 +198,7 @@ get_vim_patch() {
echo "$patch_content" > "${NVIM_SOURCE_DIR}/${patch_file}" echo "$patch_content" > "${NVIM_SOURCE_DIR}/${patch_file}"
printf "Pre-processing patch...\n" printf "Pre-processing patch...\n"
preprocess_patch "${NVIM_SOURCE_DIR}/${patch_file}" preprocess_patch "${NVIM_SOURCE_DIR}/${patch_file}"
printf "✔ Saved patch to '${NVIM_SOURCE_DIR}/${patch_file}'.\n" printf "✔ Saved patch to '${NVIM_SOURCE_DIR}/${patch_file}'.\n"
} }
@@ -328,31 +327,52 @@ submit_pr() {
patch_file="vim-${patch_file}.patch" patch_file="vim-${patch_file}.patch"
if [[ ! -f "${NVIM_SOURCE_DIR}/${patch_file}" ]]; then if [[ ! -f "${NVIM_SOURCE_DIR}/${patch_file}" ]]; then
continue continue
fi
rm -- "${NVIM_SOURCE_DIR}/${patch_file}"
echo "✔ Removed '${NVIM_SOURCE_DIR}/${patch_file}'."
done
}
# Gets all Vim commits since the "start" commit.
list_vim_commits() { (
cd "${VIM_SOURCE_DIR}" && git log --reverse --format='%H' v8.0.0000..HEAD
) }
# Prints all (sorted) "vim-patch:xxx" tokens found in the Nvim git log.
list_vimpatch_tokens() {
local tokens
# Find all "vim-patch:xxx" tokens in the Nvim git log.
tokens="$(cd "${NVIM_SOURCE_DIR}" && git log -E --grep='vim-patch:[^ ]+' | grep 'vim-patch')"
echo "$tokens" | grep -E 'vim-patch:[^ ,{]{7,}' \
| sed 's/.*\(vim-patch:[.0-9a-z]\+\).*/\1/' \
| sort \
| uniq
}
# Prints all patch-numbers (for the current v:version) for which there is
# a "vim-patch:xxx" token in the Nvim git log.
list_vimpatch_numbers() {
# Transform "vim-patch:X.Y.ZZZZ" to "ZZZZ". # Transform "vim-patch:X.Y.ZZZZ" to "ZZZZ".
rm -- "${NVIM_SOURCE_DIR}/${patch_file}" list_vimpatch_tokens | while read vimpatch_token; do
echo "✔ Removed '${NVIM_SOURCE_DIR}/${patch_file}'." echo "$vimpatch_token" | grep '8\.0\.' | sed 's/.*vim-patch:8\.0\.\([0-9a-z]\+\).*/\1/'
done
}
done done
} }
list_vim_patches() {
# Get missing Vim commits
local vim_commits
# Prints a newline-delimited list of Vim commits, for use by scripts. # Prints a newline-delimited list of Vim commits, for use by scripts.
list_missing_vimpatches() {
local tokens vim_commit vim_commits is_missing vim_tag patch_number
local tokens # Find all "vim-patch:xxx" tokens in the Nvim git log.
tokens="$(cd "${NVIM_SOURCE_DIR}" && git log -E --grep='vim-patch:[^ ]+' | grep 'vim-patch')" tokens="$(list_vimpatch_tokens)"
tokens="$(for i in $tokens ; do echo "$i" | grep -E 'vim-patch:[^ ]{7}' | sed 's/.*\(vim-patch:[.0-9a-z]\+\).*/\1/' ; done)"
# Get missing Vim commits
local vim_commit vim_commits="$(list_vim_commits)"
for vim_commit in ${vim_commits}; do
# Check for vim-patch:<commit_hash> (usually runtime updates). # Check for vim-patch:<commit_hash> (usually runtime updates).
local is_missing is_missing="$(echo "$tokens" | >/dev/null 2>&1 grep "vim\-patch:${vim_commit:0:7}" && echo false || echo true)"
if ! [ "$is_missing" = "false" ] \ if ! [ "$is_missing" = "false" ] \
&& vim_tag="$(cd "${VIM_SOURCE_DIR}" && git describe --tags --exact-match "${vim_commit}" 2>/dev/null)" && vim_tag="$(cd "${VIM_SOURCE_DIR}" && git describe --tags --exact-match "${vim_commit}" 2>/dev/null)"
vim_tag="$(cd "${VIM_SOURCE_DIR}" && git describe --tags --exact-match "${vim_commit}" 2>/dev/null)" || true
if [[ -n "${vim_tag}" ]]; then
# Vim version number (not commit hash).
then then
# Vim version number (not commit hash). # Vim version number (not commit hash).
# Check for vim-patch:<tag> (not commit hash). # Check for vim-patch:<tag> (not commit hash).
@@ -362,11 +382,11 @@ list_vim_patches() {
fi fi
if ! [ "$is_missing" = "false" ]; then if ! [ "$is_missing" = "false" ]; then
echo "${vim_commit}" echo "${vim_commit}"
fi fi
done done
} }
# Prints a human-formatted list of Vim commits, with instructional messages. # Prints a human-formatted list of Vim commits, with instructional messages.
show_vimpatches() { show_vimpatches() {
get_vim_sources get_vim_sources
@@ -440,7 +460,7 @@ review_commit() {
echo "${commit_message#${git_patch_prefix}}" echo "${commit_message#${git_patch_prefix}}"
fi fi
echo echo
echo "Creating files." echo "Creating files."
echo "${nvim_patch}" > "${NVIM_SOURCE_DIR}/n${patch_file}" echo "${nvim_patch}" > "${NVIM_SOURCE_DIR}/n${patch_file}"
echo "✔ Saved pull request diff to '${NVIM_SOURCE_DIR}/n${patch_file}'." echo "✔ Saved pull request diff to '${NVIM_SOURCE_DIR}/n${patch_file}'."
@@ -481,18 +501,22 @@ review_pr() {
if [[ "${reply}" == n ]]; then if [[ "${reply}" == n ]]; then
break break
fi fi
fi fi
done done
clean_files clean_files
} }
while getopts "hlLMVp:P:g:r:s" opt; do while getopts "hlLMVp:P:g:r:s" opt; do
case ${opt} in case ${opt} in
h) h)
usage usage
exit 0 exit 0
;; ;;
l)
show_vimpatches
exit 0
;;
L) L)
list_missing_vimpatches list_missing_vimpatches
exit 0 exit 0
@@ -504,7 +528,7 @@ while getopts "hlLp:P:g:r:s" opt; do
p) p)
stage_patch "${OPTARG}" stage_patch "${OPTARG}"
exit 0 exit 0
;; ;;
P) P)
stage_patch "${OPTARG}" TRY_APPLY stage_patch "${OPTARG}" TRY_APPLY
exit 0 exit 0
@@ -515,6 +539,10 @@ while getopts "hlLp:P:g:r:s" opt; do
;; ;;
r) r)
review_pr "${OPTARG}" review_pr "${OPTARG}"
exit 0
;;
s)
submit_pr
exit 0 exit 0
;; ;;
V) V)

67
scripts/vimpatch.lua Executable file
View File

@@ -0,0 +1,67 @@
-- Updates version.c list of applied Vim patches.
--
-- Usage:
-- VIM_SOURCE_DIR=~/neovim/.vim-src/ nvim -i NONE -u NONE --headless +'luafile ./scripts/vimpatch.lua' +q
local nvim = vim.api
local function pprint(o)
print(nvim.nvim_call_function('string', { o }))
end
local function systemlist(...)
local rv = nvim.nvim_call_function('systemlist', ...)
local err = nvim.nvim_get_vvar('shell_error')
local args_str = nvim.nvim_call_function('string', ...)
if 0 ~= err then
error('command failed: '..args_str)
end
return rv
end
local function vimpatch_sh_list_numbers()
return systemlist( { { 'bash', '-c', 'scripts/vim-patch.sh -M', } } )
end
-- Generates the lines to be inserted into the src/version.c
-- `included_patches[]` definition.
local function gen_version_c_lines()
-- Set of merged Vim 8.0.zzzz patch numbers.
local merged_patch_numbers = {}
local highest = 0
for _, n in ipairs(vimpatch_sh_list_numbers()) do
if n then
merged_patch_numbers[tonumber(n)] = true
highest = math.max(highest, n)
end
end
local lines = {}
for i = highest, 0, -1 do
local is_merged = (nil ~= merged_patch_numbers[i])
if is_merged then
table.insert(lines, string.format(' %s,', i))
else
table.insert(lines, string.format(' // %s,', i))
end
end
return lines
end
local function patch_version_c()
local lines = gen_version_c_lines()
nvim.nvim_command('silent noswapfile noautocmd edit src/nvim/version.c')
nvim.nvim_command('/static const int included_patches')
-- Delete the existing lines.
nvim.nvim_command('silent normal! j0d/};\rk')
-- Insert the lines.
nvim.nvim_call_function('append', {
nvim.nvim_eval('line(".")'),
lines,
})
nvim.nvim_command('silent write')
end
patch_version_c()

View File

@@ -929,7 +929,7 @@ typedef kvec_withinit_t(ExprASTConvStackItem, 16) ExprASTConvStack;
/// starting column and ending column (latter exclusive: /// starting column and ending column (latter exclusive:
/// one should highlight region [start_col, end_col)). /// one should highlight region [start_col, end_col)).
/// ///
/// @return AST: top-level dictionary holds keys /// @return AST: top-level dictionary with these keys:
/// ///
/// "error": Dictionary with error, present only if parser saw some /// "error": Dictionary with error, present only if parser saw some
/// error. Contains the following keys: /// error. Contains the following keys:

View File

@@ -146,7 +146,7 @@ static const int included_patches[] = {
// 1292, // 1292,
// 1291, // 1291,
// 1290, // 1290,
// 1289, 1289,
// 1288, // 1288,
// 1287, // 1287,
// 1286, // 1286,
@@ -228,8 +228,187 @@ static const int included_patches[] = {
// 1210, // 1210,
// 1209, // 1209,
// 1208, // 1208,
// 1207, 1207,
1206, 1206,
// 1205,
// 1204,
// 1203,
// 1202,
// 1201,
// 1200,
// 1199,
// 1198,
// 1197,
// 1196,
// 1195,
// 1194,
// 1193,
// 1192,
// 1191,
// 1190,
1189,
// 1188,
// 1187,
// 1186,
// 1185,
// 1184,
// 1183,
// 1182,
// 1181,
// 1180,
// 1179,
// 1178,
// 1177,
// 1176,
// 1175,
// 1174,
// 1173,
// 1172,
// 1171,
// 1170,
// 1169,
// 1168,
// 1167,
// 1166,
// 1165,
// 1164,
// 1163,
// 1162,
// 1161,
// 1160,
// 1159,
// 1158,
// 1157,
// 1156,
// 1155,
// 1154,
// 1153,
// 1152,
// 1151,
// 1150,
// 1149,
// 1148,
// 1147,
// 1146,
// 1145,
// 1144,
// 1143,
// 1142,
// 1141,
// 1140,
// 1139,
// 1138,
// 1137,
// 1136,
// 1135,
// 1134,
// 1133,
// 1132,
// 1131,
// 1130,
// 1129,
// 1128,
// 1127,
// 1126,
// 1125,
// 1124,
// 1123,
// 1122,
// 1121,
// 1120,
// 1119,
// 1118,
// 1117,
// 1116,
// 1115,
// 1114,
// 1113,
// 1112,
// 1111,
// 1110,
// 1109,
1108,
// 1107,
// 1106,
// 1105,
// 1104,
// 1103,
// 1102,
// 1101,
// 1100,
// 1099,
// 1098,
// 1097,
// 1096,
// 1095,
// 1094,
// 1093,
// 1092,
// 1091,
// 1090,
// 1089,
// 1088,
// 1087,
// 1086,
// 1085,
// 1084,
// 1083,
// 1082,
// 1081,
// 1080,
// 1079,
// 1078,
// 1077,
// 1076,
// 1075,
// 1074,
// 1073,
// 1072,
// 1071,
// 1070,
// 1069,
// 1068,
// 1067,
// 1066,
// 1065,
// 1064,
// 1063,
// 1062,
// 1061,
// 1060,
// 1059,
// 1058,
// 1057,
// 1056,
// 1055,
// 1054,
// 1053,
// 1052,
// 1051,
// 1050,
// 1049,
// 1048,
// 1047,
// 1046,
// 1045,
// 1044,
// 1043,
// 1042,
// 1041,
// 1040,
// 1039,
// 1038,
// 1037,
// 1036,
// 1035,
// 1034,
// 1033,
// 1032,
// 1031,
// 1030,
// 1029,
// 1028,
// 1027,
// 1026, // 1026,
1025, 1025,
1024, 1024,
@@ -237,7 +416,7 @@ static const int included_patches[] = {
// 1022, // 1022,
// 1021, // 1021,
// 1020, // 1020,
// 1019, 1019,
// 1018, // 1018,
// 1017, // 1017,
// 1016, // 1016,
@@ -294,7 +473,7 @@ static const int included_patches[] = {
// 965, // 965,
// 964, // 964,
// 963, // 963,
// 962, 962,
// 961, // 961,
// 960, // 960,
// 959, // 959,
@@ -650,7 +829,7 @@ static const int included_patches[] = {
// 609, // 609,
// 608, // 608,
607, 607,
// 606, 606,
605, 605,
// 604, // 604,
// 603, // 603,
@@ -659,30 +838,30 @@ static const int included_patches[] = {
// 600, // 600,
// 599, // 599,
// 598, // 598,
// 597, 597,
// 596, // 596,
// 595, 595,
// 594, // 594,
// 593, // 593,
// 592, // 592,
// 591, // 591,
// 590, 590,
// 589, // 589,
// 588, // 588,
// 587, // 587,
// 586, // 586,
// 585, // 585,
// 584, 584,
// 583, // 583,
// 582, // 582,
// 581, // 581,
// 580, 580,
// 579, 579,
// 578, // 578,
// 577, // 577,
// 576, // 576,
// 575, // 575,
// 574, 574,
// 573, // 573,
// 572, // 572,
571, 571,
@@ -691,7 +870,7 @@ static const int included_patches[] = {
// 568, // 568,
// 567, // 567,
// 566, // 566,
// 565, 565,
// 564, // 564,
// 563, // 563,
// 562, // 562,
@@ -720,7 +899,7 @@ static const int included_patches[] = {
// 539, // 539,
// 538, // 538,
// 537, // 537,
// 536, 536,
// 535, // 535,
// 534, // 534,
// 533, // 533,
@@ -739,7 +918,7 @@ static const int included_patches[] = {
// 520, // 520,
// 519, // 519,
518, 518,
// 517, 517,
// 516, // 516,
// 515, // 515,
// 514, // 514,
@@ -772,7 +951,7 @@ static const int included_patches[] = {
487, 487,
486, 486,
485, 485,
// 484, 484,
483, 483,
482, 482,
// 481, // 481,
@@ -836,7 +1015,7 @@ static const int included_patches[] = {
// 423, // 423,
// 422, // 422,
// 421, // 421,
// 420, 420,
// 419, // 419,
// 418, // 418,
// 417, // 417,
@@ -851,12 +1030,12 @@ static const int included_patches[] = {
408, 408,
407, 407,
// 406, // 406,
// 405 NA 405,
// 404, 404,
// 403, // 403,
// 402, // 402,
// 401, // 401,
// 400 NA 400,
// 399, // 399,
// 398, // 398,
// 397, // 397,
@@ -877,7 +1056,7 @@ static const int included_patches[] = {
// 382, // 382,
// 381, // 381,
// 380, // 380,
// 379, 379,
378, 378,
377, 377,
376, 376,
@@ -936,7 +1115,7 @@ static const int included_patches[] = {
// 323, // 323,
322, 322,
// 321, // 321,
// 320, 320,
319, 319,
// 318, // 318,
// 317, // 317,
@@ -946,18 +1125,18 @@ static const int included_patches[] = {
// 313, // 313,
// 312, // 312,
311, 311,
// 310, 310,
// 309, 309,
308, 308,
307, 307,
306, 306,
305, 305,
// 304, // 304,
// 303, // 303,
// 302 NA 302,
// 301, // 301,
300, 300,
// 299, 299,
298, 298,
297, 297,
// 296, // 296,
@@ -968,38 +1147,38 @@ static const int included_patches[] = {
291, 291,
290, 290,
289, 289,
// 288 NA 288,
287, 287,
// 286, // 286,
// 285 NA 285,
// 284 NA 284,
283, 283,
282, 282,
// 281 NA 281,
280, 280,
// 279 NA 279,
// 278 NA 278,
// 277 NA 277,
// 276 NA 276,
275, 275,
274, 274,
// 273 NA 273,
// 272 NA 272,
// 271 NA 271,
// 270 NA 270,
// 269 NA 269,
// 268 NA 268,
// 267 NA 267,
266, 266,
// 265, // 265,
// 264, // 264,
// 263, // 263,
// 262, // 262,
// 261, // 261,
// 260 NA 260,
259, 259,
258, 258,
// 257 NA 257,
// 256, // 256,
// 255, // 255,
// 254, // 254,
@@ -1007,45 +1186,45 @@ static const int included_patches[] = {
// 252, // 252,
// 251, // 251,
250, 250,
// 249 NA 249,
// 248 NA 248,
247, 247,
// 246 NA 246,
245, 245,
// 244 NA 244,
243, 243,
242, 242,
// 241 NA 241,
// 240 NA 240,
// 239 NA 239,
// 238, // 238,
237, 237,
// 236, // 236,
235, 235,
// 234, // 234,
// 233, // 233,
// 232 NA 232,
// 231, // 231,
// 230, // 230,
229, 229,
// 228, // 228,
// 227, 227,
226, 226,
// 225, // 225,
224, 224,
223, 223,
// 222, // 222,
// 221 NA 221,
// 220, // 220,
219, 219,
218, 218,
// 217 NA 217,
// 216, // 216,
// 215 NA 215,
// 214, // 214,
// 213 NA 213,
// 212, // 212,
// 211 NA 211,
// 210, // 210,
209, 209,
208, 208,
@@ -1053,49 +1232,49 @@ static const int included_patches[] = {
206, 206,
205, 205,
// 204, // 204,
// 203 NA 203,
// 202, // 202,
// 201, // 201,
// 200, // 200,
// 199 NA 199,
// 198, // 198,
// 197, // 197,
196, 196,
195, 195,
194, 194,
// 193 NA 193,
// 192 NA 192,
// 191 NA 191,
190, 190,
189, 189,
188, 188,
// 187 NA 187,
186, 186,
// 185, // 185,
// 184, // 184,
// 183 NA 183,
182, 182,
181, 181,
// 180 NA 180,
179, 179,
178, 178,
177, 177,
176, 176,
// 175, // 175,
174, 174,
// 173 NA 173,
172, 172,
// 171 NA 171,
// 170 NA 170,
// 169 NA 169,
168, 168,
167, 167,
// 166 NA 166,
165, 165,
164, 164,
// 163 NA 163,
// 162 NA 162,
// 161 NA 161,
// 160, // 160,
159, 159,
158, 158,
@@ -1104,21 +1283,21 @@ static const int included_patches[] = {
155, 155,
// 154, // 154,
// 153, // 153,
// 152 NA 152,
// 151, // 151,
150, 150,
149, 149,
148, 148,
147, 147,
146, 146,
// 145 NA 145,
// 144 NA 144,
143, 143,
142, 142,
// 141 NA 141,
140, 140,
// 139 NA 139,
// 138 NA 138,
137, 137,
136, 136,
135, 135,
@@ -1126,137 +1305,137 @@ static const int included_patches[] = {
133, 133,
132, 132,
131, 131,
// 130 NA 130,
// 129 NA 129,
128, 128,
127, 127,
126, 126,
125, 125,
124, 124,
// 123 NA 123,
// 122 NA 122,
121, 121,
// 120 NA 120,
119, 119,
118, 118,
// 117 NA 117,
116, 116,
// 115 NA 115,
// 114 NA 114,
// 113 NA 113,
112, 112,
111, 111,
110, 110,
// 109 NA 109,
// 108 NA 108,
// 107 NA 107,
106, 106,
// 105 NA 105,
104, 104,
// 103 NA 103,
102, 102,
101, 101,
100, 100,
99, 99,
// 98 NA 98,
// 97 NA 97,
96, 96,
// 95 NA 95,
// 94 NA 94,
// 93 NA 93,
92, 92,
91, 91,
90, 90,
// 89 NA 89,
88, 88,
// 87 NA 87,
86, 86,
85, 85,
84, 84,
83, 83,
// 82 NA 82,
81, 81,
// 80 NA 80,
79, 79,
78, 78,
// 77 NA 77,
// 76 NA 76,
75, 75,
74, 74,
73, 73,
// 72 NA 72,
// 71 NA 71,
// 70 NA 70,
69, 69,
68, 68,
// 67 NA 67,
66, 66,
// 65 NA 65,
64, 64,
// 63 NA 63,
62, 62,
// 61 NA 61,
60, 60,
// 59 NA 59,
58, 58,
57, 57,
56, 56,
// 55 NA 55,
// 54 NA 54,
53, 53,
52, 52,
// 51 NA 51,
// 50 NA 50,
49, 49,
// 48 NA 48,
47, 47,
46, 46,
// 45 NA 45,
44, 44,
43, 43,
42, 42,
41, 41,
40, 40,
// 39 NA 39,
38, 38,
37, 37,
// 36 NA 36,
35, 35,
34, 34,
33, 33,
32, 32,
31, 31,
// 30 NA 30,
// 29 NA 29,
// 28 NA 28,
// 27 NA 27,
26, 26,
25, 25,
// 24 NA 24,
23, 23,
// 22 NA 22,
// 21 NA 21,
20, 20,
19, 19,
// 18 NA 18,
17, 17,
// 16 NA 16,
// 15 NA 15,
// 14 NA 14,
// 13 NA 13,
12, 12,
// 11 NA 11,
// 10 NA 10,
// 9 NA 9,
8, 8,
// 7 NA 7,
6, 6,
// 5 NA 5,
4, 4,
3, 3,
2, 2,
1, 1,
0 0,
}; };
// clang-format on // clang-format on