mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-07 15:37:14 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2eaa14412a | |||
| dd01c0757f |
-31
@@ -1,31 +0,0 @@
|
|||||||
env:
|
|
||||||
CIRRUS_CLONE_DEPTH: 3
|
|
||||||
FEATURES: huge
|
|
||||||
|
|
||||||
freebsd_task:
|
|
||||||
name: FreeBSD
|
|
||||||
matrix:
|
|
||||||
- name: FreeBSD 15.0
|
|
||||||
freebsd_instance:
|
|
||||||
image_family: freebsd-15-0-amd64-ufs
|
|
||||||
timeout_in: 20m
|
|
||||||
install_script:
|
|
||||||
- pkg install -y gettext diffutils
|
|
||||||
build_script:
|
|
||||||
- NPROC=$(getconf _NPROCESSORS_ONLN)
|
|
||||||
- ./configure --with-features=${FEATURES}
|
|
||||||
- make -j${NPROC}
|
|
||||||
test_script:
|
|
||||||
- src/vim --version
|
|
||||||
# run tests as user "cirrus" instead of root
|
|
||||||
- pw useradd cirrus -m
|
|
||||||
- chown -R cirrus:cirrus .
|
|
||||||
- sudo -u cirrus make test
|
|
||||||
on_failure:
|
|
||||||
test_artifacts:
|
|
||||||
name: "Cirrus-${CIRRUS_BUILD_ID}-freebsd-failed-tests"
|
|
||||||
path: |
|
|
||||||
runtime/indent/testdir/*.fail
|
|
||||||
runtime/syntax/testdir/failed/*
|
|
||||||
src/testdir/failed/*
|
|
||||||
type: application/octet-stream
|
|
||||||
-254
@@ -1,254 +0,0 @@
|
|||||||
---
|
|
||||||
Language: Cpp
|
|
||||||
AccessModifierOffset: -4
|
|
||||||
AlignAfterOpenBracket: Align
|
|
||||||
AlignArrayOfStructures: None
|
|
||||||
AlignConsecutiveAssignments:
|
|
||||||
Enabled: false
|
|
||||||
AcrossEmptyLines: false
|
|
||||||
AcrossComments: false
|
|
||||||
AlignCompound: false
|
|
||||||
AlignFunctionPointers: false
|
|
||||||
PadOperators: false
|
|
||||||
AlignConsecutiveBitFields:
|
|
||||||
Enabled: false
|
|
||||||
AcrossEmptyLines: false
|
|
||||||
AcrossComments: false
|
|
||||||
AlignCompound: false
|
|
||||||
AlignFunctionPointers: false
|
|
||||||
PadOperators: false
|
|
||||||
AlignConsecutiveDeclarations:
|
|
||||||
Enabled: false
|
|
||||||
AcrossEmptyLines: false
|
|
||||||
AcrossComments: false
|
|
||||||
AlignCompound: false
|
|
||||||
AlignFunctionPointers: false
|
|
||||||
PadOperators: false
|
|
||||||
AlignConsecutiveMacros:
|
|
||||||
Enabled: false
|
|
||||||
AcrossEmptyLines: false
|
|
||||||
AcrossComments: false
|
|
||||||
AlignCompound: false
|
|
||||||
AlignFunctionPointers: false
|
|
||||||
PadOperators: false
|
|
||||||
AlignConsecutiveShortCaseStatements:
|
|
||||||
Enabled: false
|
|
||||||
AcrossEmptyLines: false
|
|
||||||
AcrossComments: false
|
|
||||||
AlignCaseColons: false
|
|
||||||
AlignEscapedNewlines: DontAlign
|
|
||||||
AlignOperands: Align
|
|
||||||
AlignTrailingComments:
|
|
||||||
Kind: Leave
|
|
||||||
OverEmptyLines: 0
|
|
||||||
AllowAllArgumentsOnNextLine: false
|
|
||||||
AllowAllParametersOfDeclarationOnNextLine: false
|
|
||||||
AllowBreakBeforeNoexceptSpecifier: Never
|
|
||||||
AllowShortBlocksOnASingleLine: Never
|
|
||||||
AllowShortCaseLabelsOnASingleLine: false
|
|
||||||
AllowShortCompoundRequirementOnASingleLine: true
|
|
||||||
AllowShortEnumsOnASingleLine: false
|
|
||||||
AllowShortFunctionsOnASingleLine: None
|
|
||||||
AllowShortIfStatementsOnASingleLine: Never
|
|
||||||
AllowShortLambdasOnASingleLine: None
|
|
||||||
AllowShortLoopsOnASingleLine: false
|
|
||||||
AlwaysBreakAfterDefinitionReturnType: All
|
|
||||||
AlwaysBreakAfterReturnType: AllDefinitions
|
|
||||||
AlwaysBreakBeforeMultilineStrings: false
|
|
||||||
AlwaysBreakTemplateDeclarations: MultiLine
|
|
||||||
BinPackArguments: true
|
|
||||||
BinPackParameters: false
|
|
||||||
BitFieldColonSpacing: Both
|
|
||||||
BraceWrapping:
|
|
||||||
AfterCaseLabel: true
|
|
||||||
AfterClass: true
|
|
||||||
AfterControlStatement: Always
|
|
||||||
AfterEnum: true
|
|
||||||
AfterExternBlock: true
|
|
||||||
AfterFunction: true
|
|
||||||
AfterNamespace: true
|
|
||||||
AfterObjCDeclaration: true
|
|
||||||
AfterStruct: true
|
|
||||||
AfterUnion: true
|
|
||||||
BeforeCatch: true
|
|
||||||
BeforeElse: true
|
|
||||||
BeforeLambdaBody: false
|
|
||||||
BeforeWhile: true
|
|
||||||
IndentBraces: false
|
|
||||||
SplitEmptyFunction: true
|
|
||||||
SplitEmptyRecord: true
|
|
||||||
SplitEmptyNamespace: true
|
|
||||||
BreakAdjacentStringLiterals: true
|
|
||||||
BreakAfterAttributes: Leave
|
|
||||||
BreakAfterJavaFieldAnnotations: false
|
|
||||||
BreakArrays: true
|
|
||||||
BreakBeforeBinaryOperators: None
|
|
||||||
BreakBeforeConceptDeclarations: Always
|
|
||||||
BreakBeforeBraces: Custom
|
|
||||||
BreakBeforeInlineASMColon: OnlyMultiline
|
|
||||||
BreakBeforeTernaryOperators: true
|
|
||||||
BreakConstructorInitializers: BeforeColon
|
|
||||||
BreakInheritanceList: BeforeColon
|
|
||||||
BreakStringLiterals: true
|
|
||||||
ColumnLimit: 80
|
|
||||||
CommentPragmas: '^ IWYU pragma:'
|
|
||||||
CompactNamespaces: false
|
|
||||||
ConstructorInitializerIndentWidth: 4
|
|
||||||
ContinuationIndentWidth: 4
|
|
||||||
Cpp11BracedListStyle: false
|
|
||||||
DerivePointerAlignment: false
|
|
||||||
DisableFormat: false
|
|
||||||
EmptyLineAfterAccessModifier: Never
|
|
||||||
EmptyLineBeforeAccessModifier: LogicalBlock
|
|
||||||
ExperimentalAutoDetectBinPacking: false
|
|
||||||
FixNamespaceComments: false
|
|
||||||
IfMacros:
|
|
||||||
- KJ_IF_MAYBE
|
|
||||||
IncludeBlocks: Preserve
|
|
||||||
IncludeCategories:
|
|
||||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
|
||||||
Priority: 2
|
|
||||||
SortPriority: 0
|
|
||||||
CaseSensitive: false
|
|
||||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
|
||||||
Priority: 3
|
|
||||||
SortPriority: 0
|
|
||||||
CaseSensitive: false
|
|
||||||
- Regex: '.*'
|
|
||||||
Priority: 1
|
|
||||||
SortPriority: 0
|
|
||||||
CaseSensitive: false
|
|
||||||
IncludeIsMainRegex: '(Test)?$'
|
|
||||||
IncludeIsMainSourceRegex: ''
|
|
||||||
IndentAccessModifiers: false
|
|
||||||
IndentCaseBlocks: false
|
|
||||||
IndentCaseLabels: true
|
|
||||||
IndentExternBlock: AfterExternBlock
|
|
||||||
IndentGotoLabels: true
|
|
||||||
IndentPPDirectives: AfterHash
|
|
||||||
IndentRequiresClause: true
|
|
||||||
IndentWidth: 4
|
|
||||||
IndentWrappedFunctionNames: false
|
|
||||||
InsertBraces: false
|
|
||||||
InsertNewlineAtEOF: false
|
|
||||||
InsertTrailingCommas: None
|
|
||||||
IntegerLiteralSeparator:
|
|
||||||
Binary: 0
|
|
||||||
BinaryMinDigits: 0
|
|
||||||
Decimal: 0
|
|
||||||
DecimalMinDigits: 0
|
|
||||||
Hex: 0
|
|
||||||
HexMinDigits: 0
|
|
||||||
JavaScriptQuotes: Leave
|
|
||||||
JavaScriptWrapImports: true
|
|
||||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
|
||||||
KeepEmptyLinesAtEOF: false
|
|
||||||
LambdaBodyIndentation: Signature
|
|
||||||
LineEnding: DeriveLF
|
|
||||||
MacroBlockBegin: ''
|
|
||||||
MacroBlockEnd: ''
|
|
||||||
MaxEmptyLinesToKeep: 1
|
|
||||||
NamespaceIndentation: None
|
|
||||||
ObjCBinPackProtocolList: Auto
|
|
||||||
ObjCBlockIndentWidth: 4
|
|
||||||
ObjCBreakBeforeNestedBlockParam: true
|
|
||||||
ObjCSpaceAfterProperty: false
|
|
||||||
ObjCSpaceBeforeProtocolList: true
|
|
||||||
PackConstructorInitializers: BinPack
|
|
||||||
PenaltyBreakAssignment: 4
|
|
||||||
PenaltyBreakBeforeFirstCallParameter: 19
|
|
||||||
PenaltyBreakComment: 1000000000
|
|
||||||
PenaltyBreakFirstLessLess: 120
|
|
||||||
PenaltyBreakOpenParenthesis: 0
|
|
||||||
PenaltyBreakScopeResolution: 500
|
|
||||||
PenaltyBreakString: 1000
|
|
||||||
PenaltyBreakTemplateDeclaration: 10
|
|
||||||
PenaltyExcessCharacter: 1000000
|
|
||||||
PenaltyIndentedWhitespace: 0
|
|
||||||
PenaltyReturnTypeOnItsOwnLine: 60
|
|
||||||
PointerAlignment: Right
|
|
||||||
PPIndentWidth: 1
|
|
||||||
QualifierAlignment: Leave
|
|
||||||
ReferenceAlignment: Pointer
|
|
||||||
ReflowComments: false
|
|
||||||
RemoveBracesLLVM: false
|
|
||||||
RemoveParentheses: Leave
|
|
||||||
RemoveSemicolon: false
|
|
||||||
RequiresClausePosition: OwnLine
|
|
||||||
RequiresExpressionIndentation: OuterScope
|
|
||||||
SeparateDefinitionBlocks: Leave
|
|
||||||
ShortNamespaceLines: 1
|
|
||||||
SkipMacroDefinitionBody: false
|
|
||||||
SortIncludes: CaseSensitive
|
|
||||||
SortJavaStaticImport: Before
|
|
||||||
SortUsingDeclarations: LexicographicNumeric
|
|
||||||
SpaceAfterCStyleCast: false
|
|
||||||
SpaceAfterLogicalNot: false
|
|
||||||
SpaceAfterTemplateKeyword: true
|
|
||||||
SpaceAroundPointerQualifiers: Default
|
|
||||||
SpaceBeforeAssignmentOperators: true
|
|
||||||
SpaceBeforeCaseColon: false
|
|
||||||
SpaceBeforeCpp11BracedList: false
|
|
||||||
SpaceBeforeCtorInitializerColon: true
|
|
||||||
SpaceBeforeInheritanceColon: true
|
|
||||||
SpaceBeforeJsonColon: false
|
|
||||||
SpaceBeforeParens: ControlStatementsExceptControlMacros
|
|
||||||
SpaceBeforeRangeBasedForLoopColon: true
|
|
||||||
SpaceBeforeSquareBrackets: false
|
|
||||||
SpaceInEmptyBlock: false
|
|
||||||
SpacesBeforeTrailingComments: 1
|
|
||||||
SpacesInAngles: Never
|
|
||||||
SpacesInContainerLiterals: true
|
|
||||||
SpacesInLineCommentPrefix:
|
|
||||||
Minimum: 1
|
|
||||||
Maximum: -1
|
|
||||||
SpacesInParens: Never
|
|
||||||
SpacesInParensOptions:
|
|
||||||
InCStyleCasts: false
|
|
||||||
InConditionalStatements: false
|
|
||||||
InEmptyParentheses: false
|
|
||||||
Other: false
|
|
||||||
SpacesInSquareBrackets: false
|
|
||||||
Standard: c++03
|
|
||||||
TabWidth: 8
|
|
||||||
UseTab: Never
|
|
||||||
VerilogBreakBetweenInstancePorts: true
|
|
||||||
WhitespaceSensitiveMacros:
|
|
||||||
- BOOST_PP_STRINGIZE
|
|
||||||
- CF_SWIFT_NAME
|
|
||||||
- NS_SWIFT_NAME
|
|
||||||
- PP_STRINGIZE
|
|
||||||
- STRINGIZE
|
|
||||||
|
|
||||||
# Taken from:
|
|
||||||
# git grep '^#define *FOR_*' src | cut -d':' -f2 | grep -o '[A-Z]*_.*(' \
|
|
||||||
# | tr -d '(' | LC_ALL=C sort -u
|
|
||||||
ForEachMacros:
|
|
||||||
- 'FOR_ALL_AUTOCMD_PATTERNS'
|
|
||||||
- 'FOR_ALL_BUFFERS'
|
|
||||||
- 'FOR_ALL_BUFS_FROM_LAST'
|
|
||||||
- 'FOR_ALL_BUF_WININFO'
|
|
||||||
- 'FOR_ALL_CHANNELS'
|
|
||||||
- 'FOR_ALL_CHILD_MENUS'
|
|
||||||
- 'FOR_ALL_DIFFBLOCKS_IN_TAB'
|
|
||||||
- 'FOR_ALL_FRAMES'
|
|
||||||
- 'FOR_ALL_HASHTAB_ITEMS'
|
|
||||||
- 'FOR_ALL_JOBS'
|
|
||||||
- 'FOR_ALL_LIST_ITEMS'
|
|
||||||
- 'FOR_ALL_MENUS'
|
|
||||||
- 'FOR_ALL_NODE_SIBLINGS'
|
|
||||||
- 'FOR_ALL_POPUPWINS'
|
|
||||||
- 'FOR_ALL_POPUPWINS_IN_TAB'
|
|
||||||
- 'FOR_ALL_QFL_ITEMS'
|
|
||||||
- 'FOR_ALL_SIGNS'
|
|
||||||
- 'FOR_ALL_SIGNS_IN_BUF'
|
|
||||||
- 'FOR_ALL_SPELL_LANGS'
|
|
||||||
- 'FOR_ALL_SYNSTATES'
|
|
||||||
- 'FOR_ALL_TABPAGES'
|
|
||||||
- 'FOR_ALL_TAB_WINDOWS'
|
|
||||||
- 'FOR_ALL_TERMS'
|
|
||||||
- 'FOR_ALL_TIMERS'
|
|
||||||
- 'FOR_ALL_WATCHERS'
|
|
||||||
- 'FOR_ALL_WINDOWS'
|
|
||||||
- 'FOR_ALL_WINDOWS_IN_TAB'
|
|
||||||
...
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
coverage:
|
|
||||||
range: "80...100"
|
|
||||||
status:
|
|
||||||
project:
|
|
||||||
default:
|
|
||||||
threshold: 0.05%
|
|
||||||
|
|
||||||
comment: false
|
|
||||||
|
|
||||||
# Files not run by tests
|
|
||||||
ignore:
|
|
||||||
- "src/dosinst.c"
|
|
||||||
- "src/dosinst.h"
|
|
||||||
- "src/uninstall.c"
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# https://spec.editorconfig.org/#supported-pairs
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = tab
|
|
||||||
tab_width = 8
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.{c,h,proto}]
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[src/MacVim/**]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[*.{md,yml,sh,bat}]
|
|
||||||
# This will become the default after we migrate the codebase
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
# Markdown uses trailing whitespaces to do an hard line break
|
|
||||||
# https://spec.commonmark.org/0.31.2/#hard-line-breaks
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
[*.vim]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[runtime/pack/dist/opt/{comment,nohlsearch}/**.vim]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[runtime/doc/**.txt]
|
|
||||||
# It can mess up some documentation by trying to strip trailing whitespaces
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
[src/testdir/test*.vim]
|
|
||||||
# Some tests need trailing whitespaces, for example `set showbreak=>>\ `
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
#
|
|
||||||
# Some custom files do not use tabs
|
|
||||||
#
|
|
||||||
[src/sign.c]
|
|
||||||
indent_style = space
|
|
||||||
|
|
||||||
[src/sound.c]
|
|
||||||
indent_style = space
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# When making commits that are strictly formatting/style changes, add the
|
|
||||||
# commit hash here, so git blame can ignore the change. See docs for more details:
|
|
||||||
#
|
|
||||||
# https://git-scm.com/docs/git-config#Documentation/git-config.txt-blameignoreRevsFile
|
|
||||||
#
|
|
||||||
# Run this command to always ignore formatting commits in git blame
|
|
||||||
# git config blame.ignoreRevsFile .git-blame-ignore-revs
|
|
||||||
|
|
||||||
# Patch v9.1.0829 expanded tabs to spaces in sound.c
|
|
||||||
8ce738de3fd7192fa6274730594305cde780074c
|
|
||||||
# Patch v9.1.0879 reformated sound.c and sign.c
|
|
||||||
3cf094edaff815141d9941b8dba52b9e77d8dfc1
|
|
||||||
# change indentation style of netrw plugin
|
|
||||||
c363ca1ecd1f8db03663ef98dcf41eeacc3c22c7
|
|
||||||
c673b805ad80d0aef07e745d412a2bf298ba1c07
|
|
||||||
# fix indentation style in insexpand.c v9.1.1352
|
|
||||||
355db99d12a89f05765948b33eecd6d9733e16bb
|
|
||||||
# fix indentation styles in various files v9.1.1363
|
|
||||||
c2a9000bc1b4a2cbcfeef55450c184b16906d910
|
|
||||||
# indentation style in various files v9.1.1364
|
|
||||||
562610cfa327c8ebff12a1700525e17a070d5e2c
|
|
||||||
# Patch v9.1.1371
|
|
||||||
19e1dd6b6aeb96d64122332a8c3d17b9d5ca007b
|
|
||||||
# Patch v9.1.1372
|
|
||||||
a4a00a7ad0cfa26685c057c11a09bec2c962346a
|
|
||||||
# Patch v9.1.1390
|
|
||||||
e89aef3f65388a8b627c77f250525f2a264716c5
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
# The old test .ok files are expected to use LF line endings, even on Windows.
|
|
||||||
# In src/testdir/Make_mvc.mak and src/testdir/Make_ming.mak, the test result
|
|
||||||
# files .out are converted to LF line endings before being compared.
|
|
||||||
# Therefore, if the .ok files' line endings are not specified and are
|
|
||||||
# converted to CRLF, the comparison between .ok and .out will fail.
|
|
||||||
src/testdir/test*.ok text eol=lf
|
|
||||||
|
|
||||||
# This ok file contains literal CR LF endings. Should not be touched by git,
|
|
||||||
# so handle as binary
|
|
||||||
src/testdir/test21.ok -text
|
|
||||||
|
|
||||||
# `vim.pot` is updated every time any of the *.c files are modified. And as it
|
|
||||||
# contains line numbers for strings from *.c files, inserting a line into a
|
|
||||||
# single .c file may cause many lines in the `vim.pot` file to be updated.
|
|
||||||
#
|
|
||||||
# This generates a lot of "noise" in the diffs. And especially considering that
|
|
||||||
# `vim.pot` is a generated file, looking at changes in this file is not useful.
|
|
||||||
#
|
|
||||||
# By marking it as binary we tell the git machinery that it should not be
|
|
||||||
# presented to the user in patches, use "git diff --text" to override
|
|
||||||
src/po/vim.pot -diff
|
|
||||||
|
|
||||||
# Although vim.pot has been marked as binary, you may want to check the textual differences
|
|
||||||
# using git --text but still want to ignore some noisy output like:
|
|
||||||
# - POT-Creation Date
|
|
||||||
# - comments pointing to the message source location in
|
|
||||||
# *.c/*.h/*.vim/*.cpp/*.in/*.xs files followed by line numbers
|
|
||||||
# Note: location comments should be no longer part of vim.pot, since commit 2844765e903214490e1
|
|
||||||
# which add the --no-location argument for xgettext to no longer ouput such comments
|
|
||||||
#
|
|
||||||
# To ignore certain changes, setup a custom textconv filter using:
|
|
||||||
# git config diff.ignore_vim_pot.textconv "grep -Ev '^.(POT-Creation-Date:|.*\\.([ch]|vim|in|xs|cpp):).*$'"
|
|
||||||
src/po/vim.pot diff=ignore_vim_pot
|
|
||||||
|
|
||||||
# GitHub reacts to the `linguist-generated` attribute, by ignoring marked files
|
|
||||||
# for the repository's language statistics and hiding changes in these files
|
|
||||||
# by default in diffs.
|
|
||||||
#
|
|
||||||
# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
|
|
||||||
src/po/vim.pot linguist-generated=true
|
|
||||||
*.dump linguist-generated=true
|
|
||||||
|
|
||||||
runtime/syntax/testdir/input/vim_ex_help.vim -text diff linguist-language=vim linguist-detectable=true
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
github: macvim-dev
|
|
||||||
open_collective: macvim
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
description: Create a report to help us improve MacVim.
|
|
||||||
labels: [bug]
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for reporting issues of MacVim!
|
|
||||||
|
|
||||||
If you want to report a security issue, instead of reporting it here publicly, please disclose it using the steps listed at https://github.com/macvim-dev/macvim/security/policy.
|
|
||||||
|
|
||||||
For general Vim issues that are not specific to MacVim, please file them at https://github.com/vim/vim.
|
|
||||||
|
|
||||||
To make it easier for us to help you please enter detailed information below.
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Steps to reproduce
|
|
||||||
placeholder: |
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
4.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Expected behaviour
|
|
||||||
placeholder: A clear and concise description of what you expected to happen.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Version of MacVim
|
|
||||||
description: >
|
|
||||||
MacVim release number (e.g. r181). Use "About MacVim" to find out which one you are using. If building manually from source, provide the Git commit hash instead (e.g. a4466fe3b695).
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: MacVim installation method
|
|
||||||
description: >
|
|
||||||
Was MacVim downloaded from GitHub release, installed via Homebrew / Homebrew Cask / MacPorts, or built from source manually?
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Environment
|
|
||||||
description: >
|
|
||||||
macOS version (e.g. macOS 15.3.2 Sequoia), Mac type (e.g. MacBook Air M2), terminal (e.g. Apple Terminal/iTerm); anything that might matter
|
|
||||||
placeholder: |
|
|
||||||
macOS version:
|
|
||||||
Mac:
|
|
||||||
Terminal:
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Logs and stack traces
|
|
||||||
placeholder: Insert log or other text here (if necessary)
|
|
||||||
render: shell
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Vim and MacVim configuration where issue is reproducable
|
|
||||||
description: Provide a link to vimrc and/or MacVim settings (see https://github.com/macvim-dev/macvim/wiki/Reporting-an-Issue for how to obtain it).
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: How was MacVim launched?
|
|
||||||
description: Different ways of opening MacVim can have an impact on the behavior.
|
|
||||||
options:
|
|
||||||
- label: by launching MacVim.app in macOS (by using the Dock, Spotlight, or the `open` command)
|
|
||||||
- label: by running mvim/gvim in the terminal
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Issue has been tested with clean configuration
|
|
||||||
description: Running MacVim and Vim with clean configurations allow us to narrow down whether this is a configuration issue.
|
|
||||||
options:
|
|
||||||
- label: by running `mvim --clean` (or `gvim`, supplied by MacVim distribution). You can also use the File → "New Clean Window" menu item within MacVim.
|
|
||||||
- label: by running `vim --clean` (in terminal, supplied by MacVim distribution)
|
|
||||||
- label: by running `vim --clean` (in terminal, other suppliers, e.g. /usr/bin/vim)
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an enhancement for Vim
|
|
||||||
title: ''
|
|
||||||
labels: enhancement
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
_Instructions: Replace the template text and remove irrelevant text (including this line)_
|
|
||||||
|
|
||||||
**Is your feature request about something that is currently impossible or hard to do? Please describe the problem.**
|
|
||||||
A clear and concise description of what is hard to do. Ex. It is difficult to [...] when [...]
|
|
||||||
(If it is related to runtime files, please check their header for where to discuss enhancements.)
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
@@ -1,755 +0,0 @@
|
|||||||
# Lines starting with '#' are comments.
|
|
||||||
# Each line is a file pattern followed by one or more owners.
|
|
||||||
# You can use github users with @user or email addresses
|
|
||||||
|
|
||||||
# These owners will be the default owners for everything in the repo.
|
|
||||||
#* @brammool
|
|
||||||
|
|
||||||
# Order is important. The last matching pattern has the most precedence.
|
|
||||||
# So if a pull request only touches javascript files, only these owners
|
|
||||||
# will be requested to review.
|
|
||||||
|
|
||||||
nsis/lang/russian.nsi @RestorerZ
|
|
||||||
runtime/autoload/context.vim @lifepillar
|
|
||||||
runtime/autoload/freebasic.vim @dkearns
|
|
||||||
runtime/autoload/hare.vim @selenebun
|
|
||||||
runtime/autoload/hcl.vim @gpanders
|
|
||||||
runtime/autoload/javascriptcomplete.vim @jsit
|
|
||||||
runtime/autoload/modula2.vim @dkearns
|
|
||||||
runtime/autoload/rubycomplete.vim @segfault @dkearns
|
|
||||||
runtime/autoload/rust.vim @lilyball
|
|
||||||
runtime/autoload/tohtml.vim @fritzophrenic
|
|
||||||
runtime/autoload/typeset.vim @lifepillar
|
|
||||||
runtime/autoload/xmlformat.vim @chrisbra
|
|
||||||
runtime/autoload/dist/json.vim @habamax
|
|
||||||
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/catppuccin.vim @mao-yining
|
|
||||||
runtime/colors/darkblue.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/default.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/delek.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/desert.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/elflord.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/evening.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/habamax.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/industry.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/koehler.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/lunaperche.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/morning.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/murphy.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/pablo.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/peachpuff.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/quiet.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/retrobox.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/ron.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/shine.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/slate.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/sorbet.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/tools @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/torte.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/wildcharm.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/zaibatsu.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/colors/zellner.vim @habamax @romainl @neutaaaaan
|
|
||||||
runtime/compiler/bash.vim @Konfekt
|
|
||||||
runtime/compiler/biome.vim @Konfekt
|
|
||||||
runtime/compiler/cabal.vim @mateoxh
|
|
||||||
runtime/compiler/checkstyle.vim @dkearns
|
|
||||||
runtime/compiler/cm3.vim @dkearns
|
|
||||||
runtime/compiler/context.vim @lifepillar
|
|
||||||
runtime/compiler/cppcheck.vim @Konfekt
|
|
||||||
runtime/compiler/cucumber.vim @tpope
|
|
||||||
runtime/compiler/dart.vim @dkearns
|
|
||||||
runtime/compiler/dart2js.vim @dkearns
|
|
||||||
runtime/compiler/dart2native.vim @dkearns
|
|
||||||
runtime/compiler/dartanalyser.vim @dkearns
|
|
||||||
runtime/compiler/dartdevc.vim @dkearns
|
|
||||||
runtime/compiler/dartdoc.vim @dkearns
|
|
||||||
runtime/compiler/dartfmt.vim @dkearns
|
|
||||||
runtime/compiler/dotnet.vim @nickspoons
|
|
||||||
runtime/compiler/eruby.vim @dkearns
|
|
||||||
runtime/compiler/fbc.vim @dkearns
|
|
||||||
runtime/compiler/gawk.vim @dkearns
|
|
||||||
runtime/compiler/gjs.vim @dkearns
|
|
||||||
runtime/compiler/gm2.vim @dkearns
|
|
||||||
runtime/compiler/go.vim @dbarnett
|
|
||||||
runtime/compiler/groff.vim @Konfekt
|
|
||||||
runtime/compiler/haml.vim @tpope
|
|
||||||
runtime/compiler/hare.vim @selenebun
|
|
||||||
runtime/compiler/icon.vim @dkearns
|
|
||||||
runtime/compiler/javac.vim @dkearns
|
|
||||||
runtime/compiler/jest.vim @dkearns
|
|
||||||
runtime/compiler/jjs.vim @dkearns
|
|
||||||
runtime/compiler/jq.vim @vito-c
|
|
||||||
runtime/compiler/jshint.vim @dkearns
|
|
||||||
runtime/compiler/jsonlint.vim @dkearns
|
|
||||||
runtime/compiler/just.vim @Alarcritty
|
|
||||||
runtime/compiler/make.vim @Konfekt
|
|
||||||
runtime/compiler/mypy.vim @Konfekt
|
|
||||||
runtime/compiler/pandoc.vim @Konfekt
|
|
||||||
runtime/compiler/perl.vim @petdance @heptite
|
|
||||||
runtime/compiler/perlcritic.vim @petdance @dkearns
|
|
||||||
runtime/compiler/php.vim @dkearns
|
|
||||||
runtime/compiler/phpstan.vim @dietrichm
|
|
||||||
runtime/compiler/podchecker.vim @petdance @dkearns
|
|
||||||
runtime/compiler/powershell.vim @heaths
|
|
||||||
runtime/compiler/pyright.vim @Konfekt
|
|
||||||
runtime/compiler/pytest.vim @Konfekt
|
|
||||||
runtime/compiler/raco.vim @benknoble
|
|
||||||
runtime/compiler/racomake.vim @benknoble
|
|
||||||
runtime/compiler/racosetup.vim @benknoble
|
|
||||||
runtime/compiler/racotest.vim @benknoble
|
|
||||||
runtime/compiler/rake.vim @tpope @dkearns
|
|
||||||
runtime/compiler/rhino.vim @dkearns
|
|
||||||
runtime/compiler/rspec.vim @tpope @dkearns
|
|
||||||
runtime/compiler/rubocop.vim @dkearns
|
|
||||||
runtime/compiler/ruby.vim @tpope @dkearns
|
|
||||||
runtime/compiler/rubyunit.vim @dkearns
|
|
||||||
runtime/compiler/sass.vim @tpope
|
|
||||||
runtime/compiler/se.vim @dkearns
|
|
||||||
runtime/compiler/shellcheck.vim @dkearns
|
|
||||||
runtime/compiler/sml.vim @dkearns
|
|
||||||
runtime/compiler/spectral.vim @romainl
|
|
||||||
runtime/compiler/stylelint.vim @dkearns
|
|
||||||
runtime/compiler/svelte-check.vim @Konfekt
|
|
||||||
runtime/compiler/tcl.vim @dkearns
|
|
||||||
runtime/compiler/tidy.vim @dkearns
|
|
||||||
runtime/compiler/tombi.vim @Konfekt
|
|
||||||
runtime/compiler/ts-node.vim @dkearns
|
|
||||||
runtime/compiler/tsc.vim @dkearns
|
|
||||||
runtime/compiler/ty.vim @Konfekt
|
|
||||||
runtime/compiler/typedoc.vim @dkearns
|
|
||||||
runtime/compiler/xmllint.vim @dkearns
|
|
||||||
runtime/compiler/xo.vim @dkearns
|
|
||||||
runtime/compiler/yamllint.vim @romainl
|
|
||||||
runtime/compiler/zsh.vim @dkearns
|
|
||||||
runtime/doc/ft_hare.txt @selenebun
|
|
||||||
runtime/doc/evim-ru.1 @RestorerZ
|
|
||||||
runtime/doc/evim-ru.UTF-8.1 @RestorerZ
|
|
||||||
runtime/doc/vim-ru.1 @RestorerZ
|
|
||||||
runtime/doc/vim-ru.UTF-8.1 @RestorerZ
|
|
||||||
runtime/doc/vimdiff-ru.1 @RestorerZ
|
|
||||||
runtime/doc/vimdiff-ru.UTF-8.1 @RestorerZ
|
|
||||||
runtime/doc/vimtutor-ru.1 @RestorerZ
|
|
||||||
runtime/doc/vimtutor-ru.UTF-8.1 @RestorerZ
|
|
||||||
runtime/doc/xxd-ru.1 @RestorerZ
|
|
||||||
runtime/doc/xxd-ru.UTF-8.1 @RestorerZ
|
|
||||||
runtime/ftplugin/abaqus.vim @costerwi
|
|
||||||
runtime/ftplugin/abnf.vim @A4-Tacks
|
|
||||||
runtime/ftplugin/algol68.vim @dkearns
|
|
||||||
runtime/ftplugin/antlr4.vim @jiangyinzuo
|
|
||||||
runtime/ftplugin/apache.vim @dubgeiser
|
|
||||||
runtime/ftplugin/arduino.vim @k-takata
|
|
||||||
runtime/ftplugin/astro.vim @romainl
|
|
||||||
runtime/ftplugin/asy.vim @avidseeker
|
|
||||||
runtime/ftplugin/autohotkey.vim @telemachus
|
|
||||||
runtime/ftplugin/awk.vim @dkearns
|
|
||||||
runtime/ftplugin/basic.vim @dkearns
|
|
||||||
runtime/ftplugin/bicep.vim @scottmckendry
|
|
||||||
runtime/ftplugin/bicep-params.vim @scottmckendry
|
|
||||||
runtime/ftplugin/brighterscript.vim @ribru17
|
|
||||||
runtime/ftplugin/brightscript.vim @ribru17
|
|
||||||
runtime/ftplugin/bst.vim @tpope
|
|
||||||
runtime/ftplugin/bpftrace.vim @sgruszka
|
|
||||||
runtime/ftplugin/c3.vim @ttytm
|
|
||||||
runtime/ftplugin/cabal.vim @ribru17
|
|
||||||
runtime/ftplugin/cedar.vim @ribru17
|
|
||||||
runtime/ftplugin/cfg.vim @chrisbra
|
|
||||||
runtime/ftplugin/chatito.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/chicken.vim @evhan
|
|
||||||
runtime/ftplugin/clojure.vim @axvr
|
|
||||||
runtime/ftplugin/cmakecache.vim @ribru17
|
|
||||||
runtime/ftplugin/codeowners.vim @jparise
|
|
||||||
runtime/ftplugin/context.vim @lifepillar
|
|
||||||
runtime/ftplugin/cook.vim @ribru17
|
|
||||||
runtime/ftplugin/cs.vim @nickspoons
|
|
||||||
runtime/ftplugin/csh.vim @dkearns
|
|
||||||
runtime/ftplugin/css.vim @dkearns
|
|
||||||
runtime/ftplugin/csv.vim @habamax
|
|
||||||
runtime/ftplugin/cucumber.vim @tpope
|
|
||||||
runtime/ftplugin/cuda.vim @ribru17
|
|
||||||
runtime/ftplugin/dart.vim @ribru17
|
|
||||||
runtime/ftplugin/dax.vim @anarion80
|
|
||||||
runtime/ftplugin/deb822sources.vim @jamessan
|
|
||||||
runtime/ftplugin/debchangelog.vim @jamessan
|
|
||||||
runtime/ftplugin/debcontrol.vim @jamessan
|
|
||||||
runtime/ftplugin/debsources.vim @jamessan
|
|
||||||
runtime/ftplugin/desktop.vim @e-kwsm
|
|
||||||
runtime/ftplugin/dnsmasq.vim @dringsim
|
|
||||||
runtime/ftplugin/dosbatch.vim @mrdubya
|
|
||||||
runtime/ftplugin/editorconfig.vim @ribru17
|
|
||||||
runtime/ftplugin/eiffel.vim @dkearns
|
|
||||||
runtime/ftplugin/elixir.vim @mhanberg
|
|
||||||
runtime/ftplugin/erlang.vim @hcs42
|
|
||||||
runtime/ftplugin/eruby.vim @tpope @dkearns
|
|
||||||
runtime/ftplugin/expect.vim @dkearns
|
|
||||||
runtime/ftplugin/exports.vim @mperry2
|
|
||||||
runtime/ftplugin/fennel.vim @gpanders
|
|
||||||
runtime/ftplugin/fetchmail.vim @dkearns
|
|
||||||
runtime/ftplugin/fga.vim @ribru17
|
|
||||||
runtime/ftplugin/forth.vim @jkotlinski
|
|
||||||
runtime/ftplugin/fpcmake.vim @dkearns
|
|
||||||
runtime/ftplugin/freebasic.vim @dkearns
|
|
||||||
runtime/ftplugin/fstab.vim @rid9
|
|
||||||
runtime/ftplugin/gdb.vim @xeyownt
|
|
||||||
runtime/ftplugin/gdscript.vim @habamax
|
|
||||||
runtime/ftplugin/gdshader.vim @habamax
|
|
||||||
runtime/ftplugin/git.vim @tpope
|
|
||||||
runtime/ftplugin/gitattributes.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/gitcommit.vim @tpope
|
|
||||||
runtime/ftplugin/gitconfig.vim @tpope
|
|
||||||
runtime/ftplugin/gitignore.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/gitrebase.vim @tpope
|
|
||||||
runtime/ftplugin/gitsendemail.vim @tpope
|
|
||||||
runtime/ftplugin/gleam.vim @kirillmorozov
|
|
||||||
runtime/ftplugin/go.vim @dbarnett
|
|
||||||
runtime/ftplugin/goaccess.vim @meonkeys
|
|
||||||
runtime/ftplugin/gomod.vim @yu-yk
|
|
||||||
runtime/ftplugin/gprof.vim @dpelle
|
|
||||||
runtime/ftplugin/graphql.vim @jparise
|
|
||||||
runtime/ftplugin/groff.vim @e-kwsm
|
|
||||||
runtime/ftplugin/gyp.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/haml.vim @tpope
|
|
||||||
runtime/ftplugin/hare.vim @selenebun
|
|
||||||
runtime/ftplugin/haredoc.vim @selenebun
|
|
||||||
runtime/ftplugin/hcl.vim @gpanders
|
|
||||||
runtime/ftplugin/heex.vim @cvincent
|
|
||||||
runtime/ftplugin/hgcommit.vim @k-takata
|
|
||||||
runtime/ftplugin/hlsplaylist.vim @avidseeker
|
|
||||||
runtime/ftplugin/hog.vim @wtfbbqhax
|
|
||||||
runtime/ftplugin/html.vim @dkearns
|
|
||||||
runtime/ftplugin/http.vim @ribru17
|
|
||||||
runtime/ftplugin/hyprlang.vim @ribru17
|
|
||||||
runtime/ftplugin/i3config.vim @hiqua
|
|
||||||
runtime/ftplugin/icon.vim @dkearns
|
|
||||||
runtime/ftplugin/indent.vim @dkearns
|
|
||||||
runtime/ftplugin/ishd.vim @dkearns
|
|
||||||
runtime/ftplugin/j.vim @glts
|
|
||||||
runtime/ftplugin/java.vim @zzzyxwvut
|
|
||||||
runtime/ftplugin/javacc.vim @ribru17
|
|
||||||
runtime/ftplugin/javascript.vim @dkearns
|
|
||||||
runtime/ftplugin/javascriptreact.vim @dkearns
|
|
||||||
runtime/ftplugin/jjdescription.vim @gpanders
|
|
||||||
runtime/ftplugin/jq.vim @vito-c
|
|
||||||
runtime/ftplugin/json.vim @dbarnett
|
|
||||||
runtime/ftplugin/json5.vim @dkearns
|
|
||||||
runtime/ftplugin/jsonc.vim @izhakjakov
|
|
||||||
runtime/ftplugin/julia.vim @carlobaldassi
|
|
||||||
runtime/ftplugin/just.vim @pbnj
|
|
||||||
runtime/ftplugin/kconfig.vim @chrisbra
|
|
||||||
runtime/ftplugin/kdl.vim @imsnif @jiangyinzuo
|
|
||||||
runtime/ftplugin/kerml.vim @daumantas-kavolis-sensmetry
|
|
||||||
runtime/ftplugin/kitty.vim @rivenirvana
|
|
||||||
runtime/ftplugin/kivy.vim @ribru17
|
|
||||||
runtime/ftplugin/kotlin.vim @udalov
|
|
||||||
runtime/ftplugin/lc.vim @ribru17
|
|
||||||
runtime/ftplugin/ldapconf.vim @ribru17
|
|
||||||
runtime/ftplugin/leex.vim @jparise
|
|
||||||
runtime/ftplugin/leo.vim @ribru17
|
|
||||||
runtime/ftplugin/less.vim @genoma
|
|
||||||
runtime/ftplugin/lex.vim @ribru17
|
|
||||||
runtime/ftplugin/lf.vim @andis-sprinkis
|
|
||||||
runtime/ftplugin/liquid.vim @tpope
|
|
||||||
runtime/ftplugin/logtalk.dict @pmoura
|
|
||||||
runtime/ftplugin/logtalk.vim @pmoura
|
|
||||||
runtime/ftplugin/lua.vim @dkearns
|
|
||||||
runtime/ftplugin/lynx.vim @dkearns
|
|
||||||
runtime/ftplugin/m17ndb.vim @dseomn
|
|
||||||
runtime/ftplugin/m3build.vim @dkearns
|
|
||||||
runtime/ftplugin/m3quake.vim @dkearns
|
|
||||||
runtime/ftplugin/markdown.vim @tpope
|
|
||||||
runtime/ftplugin/mbsync.vim @fymyte
|
|
||||||
runtime/ftplugin/mediawiki.vim @avidseeker
|
|
||||||
runtime/ftplugin/meson.vim @Liambeguin
|
|
||||||
runtime/ftplugin/mf.vim @lifepillar
|
|
||||||
runtime/ftplugin/modula2.vim @dkearns
|
|
||||||
runtime/ftplugin/modula3.vim @dkearns
|
|
||||||
runtime/ftplugin/mojo.vim @ribru17
|
|
||||||
runtime/ftplugin/mp.vim @lifepillar
|
|
||||||
runtime/ftplugin/mss.vim @Freed-Wu
|
|
||||||
runtime/ftplugin/nginx.vim @chr4
|
|
||||||
runtime/ftplugin/nickel.vim @ribru17
|
|
||||||
runtime/ftplugin/nim.vim @ribru17
|
|
||||||
runtime/ftplugin/nroff.vim @averms
|
|
||||||
runtime/ftplugin/nsis.vim @k-takata
|
|
||||||
runtime/ftplugin/nu.vim @elkasztano
|
|
||||||
runtime/ftplugin/octave.vim @dkearns
|
|
||||||
runtime/ftplugin/ondir.vim @jparise
|
|
||||||
runtime/ftplugin/opencl.vim @Freed-Wu
|
|
||||||
runtime/ftplugin/openscad.vim @squibid
|
|
||||||
runtime/ftplugin/openvpn.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/pascal.vim @dkearns
|
|
||||||
runtime/ftplugin/pbtxt.vim @lakshayg
|
|
||||||
runtime/ftplugin/pdf.vim @tpope
|
|
||||||
runtime/ftplugin/perl.vim @petdance @dkearns
|
|
||||||
runtime/ftplugin/php.vim @dkearns
|
|
||||||
runtime/ftplugin/pkl.vim @ribru17
|
|
||||||
runtime/ftplugin/plsql.vim @lee-lindley
|
|
||||||
runtime/ftplugin/pod.vim @petdance @dkearns
|
|
||||||
runtime/ftplugin/poefilter.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/postscr.vim @mrdubya
|
|
||||||
runtime/ftplugin/pq.vim @anarion80
|
|
||||||
runtime/ftplugin/prisma.vim @ribru17
|
|
||||||
runtime/ftplugin/proto.vim @Limero
|
|
||||||
runtime/ftplugin/ps1.vim @heaths
|
|
||||||
runtime/ftplugin/ps1xml.vim @heaths
|
|
||||||
runtime/ftplugin/ptx.vim @jiangyinzuo
|
|
||||||
runtime/ftplugin/purescript.vim @ribru17
|
|
||||||
runtime/ftplugin/pymanifest.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/python.vim @tpict
|
|
||||||
runtime/ftplugin/qb64.vim @dkearns
|
|
||||||
runtime/ftplugin/qml.vim @ChaseKnowlden
|
|
||||||
runtime/ftplugin/racket.vim @benknoble
|
|
||||||
runtime/ftplugin/rasi.vim @fymyte
|
|
||||||
runtime/ftplugin/readline.vim @dkearns
|
|
||||||
runtime/ftplugin/remind.vim @joereynolds
|
|
||||||
runtime/ftplugin/rescript.vim @ribru17
|
|
||||||
runtime/ftplugin/routeros.vim @zainin
|
|
||||||
runtime/ftplugin/rst.vim @marshallward
|
|
||||||
runtime/ftplugin/ruby.vim @tpope @dkearns
|
|
||||||
runtime/ftplugin/rust.vim @lilyball
|
|
||||||
runtime/ftplugin/samba.vim @mperry2
|
|
||||||
runtime/ftplugin/sass.vim @tpope
|
|
||||||
runtime/ftplugin/scala.vim @derekwyatt
|
|
||||||
runtime/ftplugin/scheme.vim @evhan
|
|
||||||
runtime/ftplugin/scss.vim @tpope
|
|
||||||
runtime/ftplugin/sed.vim @dkearns
|
|
||||||
runtime/ftplugin/sh.vim @dkearns
|
|
||||||
runtime/ftplugin/shaderslang.vim @mTvare6
|
|
||||||
runtime/ftplugin/slint.vim @ribru17
|
|
||||||
runtime/ftplugin/sml.vim @tocariimaa
|
|
||||||
runtime/ftplugin/snakemake.vim @ribru17
|
|
||||||
runtime/ftplugin/solidity.vim @coti-z
|
|
||||||
runtime/ftplugin/solution.vim @dkearns
|
|
||||||
runtime/ftplugin/soy.vim @ribru17
|
|
||||||
runtime/ftplugin/spajson.vim @dseomn
|
|
||||||
runtime/ftplugin/spec.vim @ignatenkobrain
|
|
||||||
runtime/ftplugin/squirrel.vim @ribru17
|
|
||||||
runtime/ftplugin/ssa.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/sshdconfig.vim @jiangyinzuo
|
|
||||||
runtime/ftplugin/svelte.vim @igorlfs
|
|
||||||
runtime/ftplugin/sway.vim @ribru17
|
|
||||||
runtime/ftplugin/swayconfig.vim @jamespeapen
|
|
||||||
runtime/ftplugin/sysml.vim @daumantas-kavolis-sensmetry
|
|
||||||
runtime/ftplugin/systemverilog.vim @Kocha
|
|
||||||
runtime/ftplugin/swig.vim @jmarrec
|
|
||||||
runtime/ftplugin/tap.vim @petdance
|
|
||||||
runtime/ftplugin/tcsh.vim @dkearns
|
|
||||||
runtime/ftplugin/tera.vim @MuntasirSZN
|
|
||||||
runtime/ftplugin/terraform.vim @JannoTjarks
|
|
||||||
runtime/ftplugin/tf.vim @ribru17
|
|
||||||
runtime/ftplugin/thrift.vim @jiangyinzuo
|
|
||||||
runtime/ftplugin/tiasm.vim @Freed-Wu
|
|
||||||
runtime/ftplugin/tidy.vim @dkearns
|
|
||||||
runtime/ftplugin/tmux.vim @ericpruitt
|
|
||||||
runtime/ftplugin/tolk.vim @redavy
|
|
||||||
runtime/ftplugin/toml.vim @averms
|
|
||||||
runtime/ftplugin/tt2html.vim @petdance
|
|
||||||
runtime/ftplugin/twig.vim @ribru17
|
|
||||||
runtime/ftplugin/typescript.vim @dkearns
|
|
||||||
runtime/ftplugin/typescriptreact.vim @dkearns
|
|
||||||
runtime/ftplugin/uc.vim @ribru17
|
|
||||||
runtime/ftplugin/unison.vim @chuwy
|
|
||||||
runtime/ftplugin/v.vim @ribru17
|
|
||||||
runtime/ftplugin/vdf.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/vim.vim @dkearns
|
|
||||||
runtime/ftplugin/wget.vim @dkearns
|
|
||||||
runtime/ftplugin/wget2.vim @dkearns
|
|
||||||
runtime/ftplugin/wks.vim @anakin4747
|
|
||||||
runtime/ftplugin/xcompose.vim @ObserverOfTime
|
|
||||||
runtime/ftplugin/xml.vim @chrisbra
|
|
||||||
runtime/ftplugin/xs.vim @petdance
|
|
||||||
runtime/ftplugin/yacc.vim @ribru17
|
|
||||||
runtime/ftplugin/zsh.vim @chrisbra
|
|
||||||
runtime/import/dist/vimhighlight.vim @lacygoill
|
|
||||||
runtime/indent/arduino.vim @k-takata
|
|
||||||
runtime/indent/astro.vim @wuelnerdotexe
|
|
||||||
runtime/indent/basic.vim @dkearns
|
|
||||||
runtime/indent/bpftrace.vim @sgruszka
|
|
||||||
runtime/indent/bst.vim @tpope
|
|
||||||
runtime/indent/cdl.vim @dkearns
|
|
||||||
runtime/indent/chatito.vim @ObserverOfTime
|
|
||||||
runtime/indent/clojure.vim @axvr
|
|
||||||
runtime/indent/config.vim @dkearns
|
|
||||||
runtime/indent/context.vim @lifepillar
|
|
||||||
runtime/indent/cs.vim @nickspoons
|
|
||||||
runtime/indent/css.vim @dkearns
|
|
||||||
runtime/indent/cucumber.vim @tpope
|
|
||||||
runtime/indent/d.vim @dkearns
|
|
||||||
runtime/indent/dosbatch.vim @k-takata
|
|
||||||
runtime/indent/dtd.vim @dkearns
|
|
||||||
runtime/indent/dylan.vim @dkearns
|
|
||||||
runtime/indent/eiffel.vim @jocelyn
|
|
||||||
runtime/indent/elm.vim @andys8
|
|
||||||
runtime/indent/erlang.vim @hcs42
|
|
||||||
runtime/indent/eruby.vim @tpope @dkearns
|
|
||||||
runtime/indent/eterm.vim @dkearns
|
|
||||||
runtime/indent/falcon.vim @steveno
|
|
||||||
runtime/indent/framescript.vim @dkearns
|
|
||||||
runtime/indent/freebasic.vim @dkearns
|
|
||||||
runtime/indent/gdscript.vim @habamax
|
|
||||||
runtime/indent/gitconfig.vim @tpope
|
|
||||||
runtime/indent/gitolite.vim @sitaramc
|
|
||||||
runtime/indent/glsl.vim @gpanders
|
|
||||||
runtime/indent/go.vim @dbarnett
|
|
||||||
runtime/indent/graphql.vim @jparise
|
|
||||||
runtime/indent/gyp.vim @ObserverOfTime
|
|
||||||
runtime/indent/haml.vim @tpope
|
|
||||||
runtime/indent/handlebars.vim @sukima
|
|
||||||
runtime/indent/hare.vim @selenebun
|
|
||||||
runtime/indent/hcl.vim @gpanders
|
|
||||||
runtime/indent/hog.vim @wtfbbqhax
|
|
||||||
runtime/indent/idlang.vim @dkearns
|
|
||||||
runtime/indent/j.vim @glts
|
|
||||||
runtime/indent/java.vim @xuhdev
|
|
||||||
runtime/indent/javascript.vim @bounceme
|
|
||||||
runtime/indent/json.vim @elzr
|
|
||||||
runtime/indent/jsonc.vim @izhakjakov
|
|
||||||
runtime/indent/julia.vim @carlobaldassi
|
|
||||||
runtime/indent/just.vim @pbnj
|
|
||||||
runtime/indent/karel.vim @KnoP-01
|
|
||||||
runtime/indent/kdl.vim @imsnif @jiangyinzuo
|
|
||||||
runtime/indent/kotlin.vim @udalov
|
|
||||||
runtime/indent/krl.vim @KnoP-01
|
|
||||||
runtime/indent/ld.vim @dkearns
|
|
||||||
runtime/indent/lf.vim @andis-sprinkis
|
|
||||||
runtime/indent/less.vim @genoma
|
|
||||||
runtime/indent/liquid.vim @tpope
|
|
||||||
runtime/indent/logtalk.vim @pmoura
|
|
||||||
runtime/indent/lua.vim @marcuscf
|
|
||||||
runtime/indent/m17ndb.vim @dseomn
|
|
||||||
runtime/indent/make.vim @dkearns
|
|
||||||
runtime/indent/meson.vim @Liambeguin
|
|
||||||
runtime/indent/mf.vim @lifepillar
|
|
||||||
runtime/indent/mma.vim @dkearns
|
|
||||||
runtime/indent/mojo.vim @ribru17
|
|
||||||
runtime/indent/mp.vim @lifepillar
|
|
||||||
runtime/indent/nginx.vim @chr4
|
|
||||||
runtime/indent/nsis.vim @k-takata
|
|
||||||
runtime/indent/nu.vim @elkasztano
|
|
||||||
runtime/indent/occam.vim @dkearns
|
|
||||||
runtime/indent/perl.vim @petdance
|
|
||||||
runtime/indent/php.vim @2072
|
|
||||||
runtime/indent/postscr.vim @mrdubya
|
|
||||||
runtime/indent/prolog.vim @dkearns
|
|
||||||
runtime/indent/proto.vim @Limero
|
|
||||||
runtime/indent/ps1.vim @heaths
|
|
||||||
runtime/indent/qb64.vim @dkearns
|
|
||||||
runtime/indent/qml.vim @ChaseKnowlden
|
|
||||||
runtime/indent/racket.vim @benknoble
|
|
||||||
runtime/indent/rapid.vim @KnoP-01
|
|
||||||
runtime/indent/readline.vim @dkearns
|
|
||||||
runtime/indent/ruby.vim @AndrewRadev @dkearns
|
|
||||||
runtime/indent/sass.vim @tpope
|
|
||||||
runtime/indent/scala.vim @derekwyatt
|
|
||||||
runtime/indent/scheme.vim @evhan
|
|
||||||
runtime/indent/scss.vim @tpope
|
|
||||||
runtime/indent/sh.vim @chrisbra
|
|
||||||
runtime/indent/solidity.vim @coti-z
|
|
||||||
runtime/indent/spajson.vim @dseomn
|
|
||||||
runtime/indent/systemverilog.vim @Kocha
|
|
||||||
runtime/indent/tcl.vim @dkearns
|
|
||||||
runtime/indent/tcsh.vim @dkearns
|
|
||||||
runtime/indent/teraterm.vim @k-takata
|
|
||||||
runtime/indent/terraform.vim @gpanders
|
|
||||||
runtime/indent/thrift.vim @jiangyinzuo
|
|
||||||
runtime/indent/typescript.vim @HerringtonDarkholme
|
|
||||||
runtime/indent/vroom.vim @dbarnett
|
|
||||||
runtime/indent/xml.vim @chrisbra
|
|
||||||
runtime/indent/zsh.vim @chrisbra
|
|
||||||
runtime/keymap/armenian-eastern_utf-8.vim @blinskey
|
|
||||||
runtime/keymap/armenian-western_utf-8.vim @blinskey
|
|
||||||
runtime/keymap/brazilian_portuguese-abnt.vim @LuMarquesIlva
|
|
||||||
runtime/keymap/brazilian_portuguese-compact.vim @LuMarquesIlva
|
|
||||||
runtime/keymap/russian-typograph.vim @RestorerZ
|
|
||||||
runtime/keymap/tamil_tscii.vim @yegappan
|
|
||||||
runtime/keymap/ukrainian-enhanced.vim @Dolfost
|
|
||||||
runtime/lang/menu_en_gb.latin1.vim @mrdubya
|
|
||||||
runtime/lang/menu_ru_ru.cp1251.vim @RestorerZ
|
|
||||||
runtime/lang/menu_ru_ru.koi8-r.vim @RestorerZ
|
|
||||||
runtime/lang/menu_ru_ru.utf-8.vim @RestorerZ
|
|
||||||
runtime/pack/dist/opt/cfilter/plugin/cfilter.vim @yegappan
|
|
||||||
runtime/pack/dist/opt/comment/ @habamax
|
|
||||||
runtime/pack/dist/opt/helptoc/ @kennypete
|
|
||||||
runtime/pack/dist/opt/matchit/ @chrisbra
|
|
||||||
runtime/pack/dist/opt/nohlsearch/ @habamax
|
|
||||||
runtime/plugin/manpager.vim @Konfekt
|
|
||||||
runtime/plugin/tohtml.vim @fritzophrenic
|
|
||||||
runtime/syntax/2html.vim @fritzophrenic
|
|
||||||
runtime/syntax/abaqus.vim @costerwi
|
|
||||||
runtime/syntax/abnf.vim @A4-Tacks
|
|
||||||
runtime/syntax/aidl.vim @dpelle
|
|
||||||
runtime/syntax/algol68.vim @dkearns
|
|
||||||
runtime/syntax/amiga.vim @sodero
|
|
||||||
runtime/syntax/ant.vim @dkearns
|
|
||||||
runtime/syntax/antlr4.vim @jiangyinzuo
|
|
||||||
runtime/syntax/arduino.vim @johshoff
|
|
||||||
runtime/syntax/asciidoc.vim @aerostitch
|
|
||||||
runtime/syntax/asm.vim @dkearns
|
|
||||||
runtime/syntax/asmh8300.vim @dkearns
|
|
||||||
runtime/syntax/asterisk.vim @jaunis
|
|
||||||
runtime/syntax/astro.vim @wuelnerdotexe
|
|
||||||
runtime/syntax/asy.vim @avidseeker
|
|
||||||
runtime/syntax/autohotkey.vim @mmikeww
|
|
||||||
runtime/syntax/awk.vim @dkearns
|
|
||||||
runtime/syntax/basic.vim @dkearns
|
|
||||||
runtime/syntax/bpftrace.vim @sgruszka
|
|
||||||
runtime/syntax/bst.vim @tpope
|
|
||||||
runtime/syntax/bzl.vim @dbarnett
|
|
||||||
runtime/syntax/bzr.vim @hdima
|
|
||||||
runtime/syntax/cabal.vim @coot
|
|
||||||
runtime/syntax/cabalconfig.vim @coot
|
|
||||||
runtime/syntax/cabalproject.vim @coot
|
|
||||||
runtime/syntax/cangjie.vim @WuJunkai2004
|
|
||||||
runtime/syntax/cf.vim @ernstvanderlinden
|
|
||||||
runtime/syntax/chatito.vim @ObserverOfTime
|
|
||||||
runtime/syntax/chicken.vim @evhan
|
|
||||||
runtime/syntax/chuck.vim @andreacfromtheapp
|
|
||||||
runtime/syntax/clojure.vim @axvr
|
|
||||||
runtime/syntax/codeowners.vim @jparise
|
|
||||||
runtime/syntax/context.vim @lifepillar
|
|
||||||
runtime/syntax/cs.vim @nickspoons
|
|
||||||
runtime/syntax/csh.vim @dkearns
|
|
||||||
runtime/syntax/css.vim @jsit
|
|
||||||
runtime/syntax/csv.vim @habamax
|
|
||||||
runtime/syntax/cucumber.vim @tpope
|
|
||||||
runtime/syntax/d.vim @JesseKPhillips
|
|
||||||
runtime/syntax/dart.vim @pr3d4t0r
|
|
||||||
runtime/syntax/datascript.vim @dpelle
|
|
||||||
runtime/syntax/dax.vim @anarion80
|
|
||||||
runtime/syntax/deb822sources.vim @jamessan
|
|
||||||
runtime/syntax/debchangelog.vim @jamessan
|
|
||||||
runtime/syntax/debcontrol.vim @jamessan
|
|
||||||
runtime/syntax/debcopyright.vim @jamessan
|
|
||||||
runtime/syntax/debsources.vim @jamessan
|
|
||||||
runtime/syntax/dep3patch.vim @jamessan
|
|
||||||
runtime/syntax/desktop.vim @e-kwsm
|
|
||||||
runtime/syntax/dosbatch.vim @mrdubya
|
|
||||||
runtime/syntax/dosini.vim @xuhdev
|
|
||||||
runtime/syntax/dot.vim @mmottl
|
|
||||||
runtime/syntax/doxygen.vim @frogonwheels
|
|
||||||
runtime/syntax/dtd.vim @chrisbra
|
|
||||||
runtime/syntax/dts.vim @zonque
|
|
||||||
runtime/syntax/editorconfig.vim @gpanders
|
|
||||||
runtime/syntax/eiffel.vim @jocelyn
|
|
||||||
runtime/syntax/erlang.vim @hcs42
|
|
||||||
runtime/syntax/eruby.vim @tpope @dkearns
|
|
||||||
runtime/syntax/expect.vim @dkearns
|
|
||||||
runtime/syntax/falcon.vim @steveno
|
|
||||||
runtime/syntax/fetchmail.vim @dkearns
|
|
||||||
runtime/syntax/forth.vim @jkotlinski
|
|
||||||
runtime/syntax/fpcmake.vim @dkearns
|
|
||||||
runtime/syntax/freebasic.vim @dkearns
|
|
||||||
runtime/syntax/fstab.vim @rid9
|
|
||||||
runtime/syntax/gdb.vim @dkearns
|
|
||||||
runtime/syntax/gdresource.vim @habamax
|
|
||||||
runtime/syntax/gdscript.vim @habamax
|
|
||||||
runtime/syntax/gdshader.vim @habamax
|
|
||||||
runtime/syntax/git.vim @tpope
|
|
||||||
runtime/syntax/gitattributes.vim @ObserverOfTime
|
|
||||||
runtime/syntax/gitcommit.vim @tpope
|
|
||||||
runtime/syntax/gitconfig.vim @tpope
|
|
||||||
runtime/syntax/gitignore.vim @ObserverOfTime
|
|
||||||
runtime/syntax/gitolite.vim @sitaramc
|
|
||||||
runtime/syntax/gitrebase.vim @tpope
|
|
||||||
runtime/syntax/gleam.vim @kirillmorozov
|
|
||||||
runtime/syntax/glimmer.vim @sukima
|
|
||||||
runtime/syntax/glsl.vim @gpanders
|
|
||||||
runtime/syntax/go.vim @bhcleek
|
|
||||||
runtime/syntax/goaccess.vim @meonkeys
|
|
||||||
runtime/syntax/godoc.vim @dbarnett
|
|
||||||
runtime/syntax/gp.vim @KBelabas
|
|
||||||
runtime/syntax/gprof.vim @dpelle
|
|
||||||
runtime/syntax/graphql.vim @jparise
|
|
||||||
runtime/syntax/groff.vim @jmarshall
|
|
||||||
runtime/syntax/gyp.vim @ObserverOfTime
|
|
||||||
runtime/syntax/haml.vim @tpope
|
|
||||||
runtime/syntax/handlebars.vim @sukima
|
|
||||||
runtime/syntax/hare.vim @selenebun
|
|
||||||
runtime/syntax/haredoc.vim @selenebun
|
|
||||||
runtime/syntax/haskell.vim @coot
|
|
||||||
runtime/syntax/hcl.vim @gpanders
|
|
||||||
runtime/syntax/help.vim @dkearns
|
|
||||||
runtime/syntax/help_ru.vim @RestorerZ
|
|
||||||
runtime/syntax/hgcommit.vim @k-takata
|
|
||||||
runtime/syntax/hitest.vim @lacygoill
|
|
||||||
runtime/syntax/hog.vim @wtfbbqhax
|
|
||||||
runtime/syntax/hollywood.vim @sodero
|
|
||||||
runtime/syntax/html.vim @dkearns
|
|
||||||
runtime/syntax/htmlangular.vim @dlvandenberg
|
|
||||||
runtime/syntax/i3config.vim @hiqua
|
|
||||||
runtime/syntax/icon.vim @dkearns
|
|
||||||
runtime/syntax/indent.vim @dkearns
|
|
||||||
runtime/syntax/j.vim @glts
|
|
||||||
runtime/syntax/jargon.vim @h3xx
|
|
||||||
runtime/syntax/java.vim @zzzyxwvut
|
|
||||||
runtime/syntax/javascript.vim @fleiner
|
|
||||||
runtime/syntax/jinja.vim @gpanders
|
|
||||||
runtime/syntax/jjdescription.vim @gpanders
|
|
||||||
runtime/syntax/jq.vim @vito-c
|
|
||||||
runtime/syntax/json.vim @vito-c
|
|
||||||
runtime/syntax/jsonc.vim @izhakjakov
|
|
||||||
runtime/syntax/julia.vim @carlobaldassi
|
|
||||||
runtime/syntax/just.vim @pbnj
|
|
||||||
runtime/syntax/karel.vim @kirillmorozov
|
|
||||||
runtime/syntax/kconfig.vim @chrisbra
|
|
||||||
runtime/syntax/kdl.vim @imsnif @jiangyinzuo
|
|
||||||
runtime/syntax/kitty.vim @OXY2DEV
|
|
||||||
runtime/syntax/kivy.vim @prophittcorey
|
|
||||||
runtime/syntax/kotlin.vim @udalov
|
|
||||||
runtime/syntax/krl.vim @KnoP-01
|
|
||||||
runtime/syntax/leex.vim @jparise
|
|
||||||
runtime/syntax/less.vim @genoma
|
|
||||||
runtime/syntax/lf.vim @andis-sprinkis
|
|
||||||
runtime/syntax/liquid.vim @tpope
|
|
||||||
runtime/syntax/log.vim @mao-yining
|
|
||||||
runtime/syntax/logtalk.vim @pmoura
|
|
||||||
runtime/syntax/lua.vim @marcuscf
|
|
||||||
runtime/syntax/lynx.vim @dkearns
|
|
||||||
runtime/syntax/lyrics.vim @ObserverOfTime
|
|
||||||
runtime/syntax/m17ndb.vim @dseomn
|
|
||||||
runtime/syntax/m3build.vim @dkearns
|
|
||||||
runtime/syntax/m3quake.vim @dkearns
|
|
||||||
runtime/syntax/mailcap.vim @dkearns
|
|
||||||
runtime/syntax/mallard.vim @jhradilek
|
|
||||||
runtime/syntax/markdown.vim @tpope
|
|
||||||
runtime/syntax/mason.vim @petdance
|
|
||||||
runtime/syntax/mbsync.vim @fymyte
|
|
||||||
runtime/syntax/mediawiki.vim @avidseeker
|
|
||||||
runtime/syntax/meson.vim @Liambeguin
|
|
||||||
runtime/syntax/mf.vim @lifepillar
|
|
||||||
runtime/syntax/modula2.vim @dkearns
|
|
||||||
runtime/syntax/modula2/opt/iso.vim @trijezdci
|
|
||||||
runtime/syntax/modula2/opt/pim.vim @trijezdci
|
|
||||||
runtime/syntax/modula2/opt/r10.vim @trijezdci
|
|
||||||
runtime/syntax/modula3.vim @dkearns
|
|
||||||
runtime/syntax/mp.vim @lifepillar
|
|
||||||
runtime/syntax/mss.vim @Freed-Wu
|
|
||||||
runtime/syntax/n1ql.vim @pr3d4t0r
|
|
||||||
runtime/syntax/nginx.vim @chr4
|
|
||||||
runtime/syntax/ninja.vim @nico
|
|
||||||
runtime/syntax/nix.vim @equill
|
|
||||||
runtime/syntax/nroff.vim @jmarshall
|
|
||||||
runtime/syntax/nsis.vim @k-takata
|
|
||||||
runtime/syntax/nu.vim @elkasztano
|
|
||||||
runtime/syntax/odin.vim @habamax
|
|
||||||
runtime/syntax/omnimark.vim @kennypete
|
|
||||||
runtime/syntax/ondir.vim @jparise
|
|
||||||
runtime/syntax/opencl.vim @Freed-Wu
|
|
||||||
runtime/syntax/openvpn.vim @ObserverOfTime
|
|
||||||
runtime/syntax/pacmanlog.vim @rpigott
|
|
||||||
runtime/syntax/pascal.vim @dkearns
|
|
||||||
runtime/syntax/pbtxt.vim @lakshayg
|
|
||||||
runtime/syntax/pdf.vim @tpope
|
|
||||||
runtime/syntax/perl.vim @petdance
|
|
||||||
runtime/syntax/php.vim @TysonAndre
|
|
||||||
runtime/syntax/pkl.vim @jclsn
|
|
||||||
runtime/syntax/plsql.vim @lee-lindley
|
|
||||||
runtime/syntax/pod.vim @petdance
|
|
||||||
runtime/syntax/poefilter.vim @ObserverOfTime
|
|
||||||
runtime/syntax/postscr.vim @mrdubya
|
|
||||||
runtime/syntax/pq.vim @anarion80
|
|
||||||
runtime/syntax/privoxy.vim @dkearns
|
|
||||||
runtime/syntax/progress.vim @rdnlsmith
|
|
||||||
runtime/syntax/prolog.vim @XVilka
|
|
||||||
runtime/syntax/prql.vim @vanillajonathan
|
|
||||||
runtime/syntax/ps1.vim @heaths
|
|
||||||
runtime/syntax/ps1xml.vim @heaths
|
|
||||||
runtime/syntax/psl.vim @danielkho
|
|
||||||
runtime/syntax/ptx.vim @jiangyinzuo
|
|
||||||
runtime/syntax/pymanifest.vim @ObserverOfTime
|
|
||||||
runtime/syntax/qb64.vim @dkearns
|
|
||||||
runtime/syntax/qml.vim @ChaseKnowlden
|
|
||||||
runtime/syntax/racket.vim @benknoble
|
|
||||||
runtime/syntax/raml.vim @in3d
|
|
||||||
runtime/syntax/rapid.vim @KnoP-01
|
|
||||||
runtime/syntax/rasi.vim @fymyte
|
|
||||||
runtime/syntax/ratpoison.vim @trapd00r
|
|
||||||
runtime/syntax/rc.vim @chrisbra
|
|
||||||
runtime/syntax/rcs.vim @hdima
|
|
||||||
runtime/syntax/rebol.vim @mrdubya
|
|
||||||
runtime/syntax/rego.vim @zenmatic
|
|
||||||
runtime/syntax/resolv.vim @rid9
|
|
||||||
runtime/syntax/rng.vim @jhradilek
|
|
||||||
runtime/syntax/routeros.vim @zainin
|
|
||||||
runtime/syntax/rst.vim @marshallward
|
|
||||||
runtime/syntax/ruby.vim @dkearns
|
|
||||||
runtime/syntax/salt.vim @gpanders
|
|
||||||
runtime/syntax/sass.vim @tpope
|
|
||||||
runtime/syntax/scala.vim @derekwyatt
|
|
||||||
runtime/syntax/scheme.vim @evhan
|
|
||||||
runtime/syntax/scss.vim @tpope
|
|
||||||
runtime/syntax/sed.vim @dkearns
|
|
||||||
runtime/syntax/sgf.vim @lykahb
|
|
||||||
runtime/syntax/shaderslang.vim @mTvare6
|
|
||||||
runtime/syntax/shared/debversions.vim @jamessan
|
|
||||||
runtime/syntax/shared/hgcommitDiff.vim @vegerot
|
|
||||||
runtime/syntax/skhd.vim @kiyoon
|
|
||||||
runtime/syntax/solidity.vim @coti-z
|
|
||||||
runtime/syntax/spajson.vim @dseomn
|
|
||||||
runtime/syntax/spec.vim @ignatenkobrain
|
|
||||||
runtime/syntax/sqloracle.vim @chrisbra
|
|
||||||
runtime/syntax/squirrel.vim @zenmatic
|
|
||||||
runtime/syntax/srt.vim @ObserverOfTime
|
|
||||||
runtime/syntax/ssa.vim @ObserverOfTime
|
|
||||||
runtime/syntax/sshconfig.vim @Jakuje
|
|
||||||
runtime/syntax/sshdconfig.vim @Jakuje
|
|
||||||
runtime/syntax/sudoers.vim @e-kwsm
|
|
||||||
runtime/syntax/svn.vim @hdima
|
|
||||||
runtime/syntax/swayconfig.vim @jamespeapen
|
|
||||||
runtime/syntax/swig.vim @jmarrec
|
|
||||||
runtime/syntax/systemverilog.vim @Kocha
|
|
||||||
runtime/syntax/tap.vim @petdance
|
|
||||||
runtime/syntax/tcsh.vim @dkearns
|
|
||||||
runtime/syntax/tera.vim @MuntasirSZN
|
|
||||||
runtime/syntax/teraterm.vim @k-takata
|
|
||||||
runtime/syntax/terraform.vim @gpanders
|
|
||||||
runtime/syntax/thrift.vim @jiangyinzuo
|
|
||||||
runtime/syntax/tiasm.vim @Freed-Wu
|
|
||||||
runtime/syntax/tidy.vim @dkearns
|
|
||||||
runtime/syntax/tmux.vim @ericpruitt
|
|
||||||
runtime/syntax/tolk.vim @redavy
|
|
||||||
runtime/syntax/toml.vim @averms
|
|
||||||
runtime/syntax/tt2.vim @petdance
|
|
||||||
runtime/syntax/tt2html.vim @petdance
|
|
||||||
runtime/syntax/tt2js.vim @petdance
|
|
||||||
runtime/syntax/typescript.vim @HerringtonDarkholme @rhysd
|
|
||||||
runtime/syntax/typescriptreact.vim @HerringtonDarkholme @rhysd
|
|
||||||
runtime/syntax/typst.vim @gpanders
|
|
||||||
runtime/syntax/shared/typescriptcommon.vim @HerringtonDarkholme @rhysd
|
|
||||||
runtime/syntax/unison.vim @chuwy
|
|
||||||
runtime/syntax/vdf.vim @ObserverOfTime
|
|
||||||
runtime/syntax/vroom.vim @dbarnett
|
|
||||||
runtime/syntax/wdl.vim @zenmatic
|
|
||||||
runtime/syntax/wget.vim @dkearns
|
|
||||||
runtime/syntax/wget2.vim @dkearns
|
|
||||||
runtime/syntax/wks.vim @anakin4747
|
|
||||||
runtime/syntax/xbl.vim @dkearns
|
|
||||||
runtime/syntax/xcompose.vim @ObserverOfTime
|
|
||||||
runtime/syntax/xml.vim @chrisbra
|
|
||||||
runtime/syntax/xs.vim @petdance
|
|
||||||
runtime/syntax/xslt.vim @Boobies
|
|
||||||
runtime/syntax/zserio.vim @dpelle
|
|
||||||
runtime/syntax/zsh.vim @chrisbra
|
|
||||||
runtime/tools/preproc_indent.vim @h-east
|
|
||||||
runtime/tutor/tutor1.eo @dpelle
|
|
||||||
runtime/tutor/tutor1.fr @dpelle
|
|
||||||
runtime/tutor/tutor1.ru @RestorerZ
|
|
||||||
src/iscygpty.* @k-takata
|
|
||||||
src/libvterm/ @leonerd
|
|
||||||
src/po/ca.po @nfdisco
|
|
||||||
src/po/de.po @chrisbra
|
|
||||||
src/po/eo.po @dpelle
|
|
||||||
src/po/es.po @victorhck
|
|
||||||
src/po/fi.po @flammie
|
|
||||||
src/po/fr.po @dpelle
|
|
||||||
src/po/ga.po @kscanne
|
|
||||||
src/po/hy.po @gagikh
|
|
||||||
src/po/it.po @azc100
|
|
||||||
src/po/ja.po @k-takata
|
|
||||||
src/po/ru.po @RestorerZ
|
|
||||||
src/po/sr.po @eevan78
|
|
||||||
src/po/tr.po @bitigchi
|
|
||||||
src/po/uk.po @sakhnik
|
|
||||||
src/proto/gen_prototypes.py @h-east
|
|
||||||
src/xxd/ @jnweiger
|
|
||||||
|
|
||||||
# vim:ft=codeowners
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
**Please do not report security vulnerabilities through public GitHub issues.**
|
|
||||||
|
|
||||||
To report a security vulnerability for MacVim, please either email security@macvim.org, or visit https://github.com/macvim-dev/macvim/security/advisories/new.
|
|
||||||
@@ -1,325 +0,0 @@
|
|||||||
name: Build Vim on Linux
|
|
||||||
description: Build Vim on Linux
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
features:
|
|
||||||
description: Vim features
|
|
||||||
required: true
|
|
||||||
compiler:
|
|
||||||
description: Compiler
|
|
||||||
required: true
|
|
||||||
architecture:
|
|
||||||
description: Architecture
|
|
||||||
required: false
|
|
||||||
extra:
|
|
||||||
description: Extra flags
|
|
||||||
required: true
|
|
||||||
shadow:
|
|
||||||
description: Shadow directory
|
|
||||||
required: false
|
|
||||||
interface:
|
|
||||||
description: Interface of language interpreter
|
|
||||||
required: false
|
|
||||||
lua_ver:
|
|
||||||
description: Lua version
|
|
||||||
required: false
|
|
||||||
python3:
|
|
||||||
description: Python3 ABI type
|
|
||||||
required: false
|
|
||||||
coverage:
|
|
||||||
description: Enable coverage
|
|
||||||
required: false
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
- name: Check Filelist (for packaging)
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Check Filelist (for packaging)'
|
|
||||||
# If any files in the repository are not listed in Filelist this will
|
|
||||||
# exit with an error code and list the missing entries.
|
|
||||||
make -f ci/unlisted.make
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Check hlgroups (are any new hlgroups added, but not handled in highlight.c)
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Check hlgroups (are any new hlgroups added, but not handled in highlight.c)'
|
|
||||||
# If any highlight groups have been documented, but not handled in
|
|
||||||
# highlight.c, nor listed as 'intentionally left out' in hlgroups.ignore,
|
|
||||||
# exit with an error code and list the missing entries.
|
|
||||||
make -C ci -f hlgroups.make
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Report executable syntax tests
|
|
||||||
if: contains(fromJSON(inputs.extra), 'syn_test_execs')
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Report executable syntax tests'
|
|
||||||
# Search and list all found executable syntax tests, and exit with
|
|
||||||
# an error code.
|
|
||||||
make -C runtime/syntax executables
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Add i386 packages to dpkg
|
|
||||||
if: inputs.architecture == 'i386'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Add i386 packages to dpkg'
|
|
||||||
sudo dpkg --add-architecture i386
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Uninstall snap
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Uninstall snap'
|
|
||||||
sudo bash ci/remove_snap.sh
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Enable debug packages
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Enable debug packages'
|
|
||||||
# Some of the ASAN suppressions are in libraries linked with dlopen
|
|
||||||
# and symbolization of them requires these debug packages.
|
|
||||||
sudo apt install ubuntu-dbgsym-keyring
|
|
||||||
sudo cp ci/ddebs.list /etc/apt/sources.list.d/ddebs.list
|
|
||||||
sudo cp ci/pinned-pkgs /etc/apt/preferences.d/pinned-pkgs
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
# TODO: switch to GTK4 GUI
|
|
||||||
- name: Install packages
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Install packages'
|
|
||||||
# This is added by default, and it is often broken, but we don't need anything from it
|
|
||||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
|
|
||||||
PKGS=( \
|
|
||||||
gettext \
|
|
||||||
x11-utils \
|
|
||||||
labwc \
|
|
||||||
wl-clipboard \
|
|
||||||
wayland-utils \
|
|
||||||
libgtk-3-dev:${{ inputs.architecture }} \
|
|
||||||
libgtk-3-bin:${{ inputs.architecture }} \
|
|
||||||
desktop-file-utils \
|
|
||||||
libc6-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libtool-bin \
|
|
||||||
libncurses-dev:${{ inputs.architecture }} \
|
|
||||||
libxt-dev:${{ inputs.architecture }} \
|
|
||||||
libegl-mesa0:${{ inputs.architecture }} \
|
|
||||||
libegl1:${{ inputs.architecture }} \
|
|
||||||
libegl1-mesa-dev:${{ inputs.architecture }} \
|
|
||||||
libepoxy-dev:${{ inputs.architecture }} \
|
|
||||||
libwayland-egl1:${{ inputs.architecture }} \
|
|
||||||
libwayland-client0:${{ inputs.architecture }} \
|
|
||||||
libwayland-cursor0:${{ inputs.architecture }} \
|
|
||||||
locales-all \
|
|
||||||
software-properties-common \
|
|
||||||
)
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'asan') }} && ${{ contains(inputs.architecture, 'native') }}; then
|
|
||||||
PKGS+=( \
|
|
||||||
libepoxy0-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libxdamage1-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libxcb1-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libgtk-3-bin-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libgtk-3-0t64-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libglib2.0-0t64-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libglib2.0-bin-dbgsym:${{ inputs.architecture }} \
|
|
||||||
libglib2.0-dev-bin-dbgsym:${{ inputs.architecture }} \
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
if ${{ inputs.features == 'huge' }}; then
|
|
||||||
LUA_VER=${{ inputs.lua_ver || '5.4' }}
|
|
||||||
PKGS+=( \
|
|
||||||
autoconf \
|
|
||||||
gdb \
|
|
||||||
lcov \
|
|
||||||
libcanberra-dev \
|
|
||||||
libperl-dev \
|
|
||||||
python3-dev \
|
|
||||||
liblua${LUA_VER}-dev \
|
|
||||||
lua${LUA_VER} \
|
|
||||||
ruby-dev \
|
|
||||||
tcl-dev \
|
|
||||||
cscope \
|
|
||||||
libsodium-dev \
|
|
||||||
attr \
|
|
||||||
libattr1-dev
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'proto') }}; then
|
|
||||||
PKGS+=( python3-clang )
|
|
||||||
fi
|
|
||||||
sudo apt-get update && sudo apt-get upgrade -y --allow-downgrades && sudo apt-get install -y --allow-downgrades "${PKGS[@]}"
|
|
||||||
|
|
||||||
- name: Install gcc-${{ env.GCC_VER }}
|
|
||||||
if: inputs.compiler == 'gcc'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Install gcc-${{ env.GCC_VER }}'
|
|
||||||
# ubuntu-toolchain-r/test PPA for gcc-13 compiler
|
|
||||||
# disabled because the installation failed, causing test failures
|
|
||||||
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ inputs.architecture }}
|
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
|
|
||||||
sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Install clang-${{ env.CLANG_VER }}
|
|
||||||
if: inputs.compiler == 'clang'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Install clang-${{ env.CLANG_VER }}'
|
|
||||||
. /etc/lsb-release
|
|
||||||
curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/llvm-archive-keyring.gpg > /dev/null
|
|
||||||
echo "Types: deb
|
|
||||||
URIs: https://apt.llvm.org/${DISTRIB_CODENAME}/
|
|
||||||
Suites: llvm-toolchain-${DISTRIB_CODENAME}-${{ env.CLANG_VER }}
|
|
||||||
Components: main
|
|
||||||
Signed-By: /usr/share/keyrings/llvm-archive-keyring.gpg" | sudo tee /etc/apt/sources.list.d/llvm-toolchain.sources > /dev/null
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y clang-${{ env.CLANG_VER }} llvm-${{ env.CLANG_VER }}
|
|
||||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.CLANG_VER }} 100
|
|
||||||
sudo update-alternatives --set clang /usr/bin/clang-${{ env.CLANG_VER }}
|
|
||||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${{ env.CLANG_VER }} 100
|
|
||||||
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${{ env.CLANG_VER }} 100
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Set up environment
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Set up environment'
|
|
||||||
mkdir -p "${LOG_DIR}"
|
|
||||||
mkdir -p "${HOME}/bin"
|
|
||||||
echo "${HOME}/bin" >> $GITHUB_PATH
|
|
||||||
(
|
|
||||||
echo "LINUX_VERSION=$(uname -r)"
|
|
||||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
echo "TMPDIR=$(mktemp -d -p /tmp)"
|
|
||||||
|
|
||||||
case "${{ inputs.features }}" in
|
|
||||||
tiny)
|
|
||||||
echo "TEST=testtiny"
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'nogui') }}; then
|
|
||||||
CONFOPT="--disable-gui"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
normal)
|
|
||||||
;;
|
|
||||||
huge)
|
|
||||||
echo "TEST=scripttests test_libvterm indenttest syntaxtest"
|
|
||||||
INTERFACE=${{ inputs.interface || 'yes' }}
|
|
||||||
if ${{ inputs.python3 == 'stable-abi' }}; then
|
|
||||||
PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
|
|
||||||
fi
|
|
||||||
# The ubuntu-24.04 CI runner does not provide a python2 package.
|
|
||||||
CONFOPT="--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'no_x11_wl') }}; then
|
|
||||||
CONFOPT="${CONFOPT} --without-x --disable-gui --without-wayland --enable-socketserver"
|
|
||||||
fi
|
|
||||||
if ${{ inputs.coverage == true }}; then
|
|
||||||
CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
|
|
||||||
echo "LDFLAGS=--coverage"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'uchar') }}; then
|
|
||||||
CFLAGS="${CFLAGS} -funsigned-char"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'testgui') }}; then
|
|
||||||
echo "TEST=-C src testgui"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'unittests') }}; then
|
|
||||||
echo "TEST=unittests"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'asan') }}; then
|
|
||||||
echo "SANITIZER_CFLAGS=-g -O0 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
|
||||||
echo "ASAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/asan"
|
|
||||||
echo "UBSAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/ubsan"
|
|
||||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'vimtags') }}; then
|
|
||||||
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
|
||||||
fi
|
|
||||||
if ${{ contains(fromJSON(inputs.extra), 'proto') }}; then
|
|
||||||
echo "TEST=-C src protoclean proto"
|
|
||||||
fi
|
|
||||||
echo "CFLAGS=${CFLAGS}"
|
|
||||||
echo "CONFOPT=${CONFOPT}"
|
|
||||||
# Disables GTK attempt to integrate with the accessibility service that does run in CI.
|
|
||||||
echo "NO_AT_BRIDGE=1"
|
|
||||||
) >> $GITHUB_ENV
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Set up system
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Set up system'
|
|
||||||
if [[ ${CC} = clang ]]; then
|
|
||||||
# Use llvm-cov instead of gcov when compiler is clang.
|
|
||||||
ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
|
|
||||||
fi
|
|
||||||
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
|
|
||||||
sudo usermod -a -G audio "${USER}"
|
|
||||||
sudo bash ci/setup-xvfb.sh
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Check autoconf
|
|
||||||
if: contains(fromJSON(inputs.extra), 'unittests')
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Check autoconf'
|
|
||||||
make -C src autoconf
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Set up shadow dir
|
|
||||||
if: inputs.shadow
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Set up shadow dir'
|
|
||||||
make -C src shadow
|
|
||||||
echo "SRCDIR=${{ inputs.shadow }}" >> $GITHUB_ENV
|
|
||||||
echo "SHADOWOPT=-C ${{ inputs.shadow }}" >> $GITHUB_ENV
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Configure'
|
|
||||||
./configure --with-features=${{ inputs.features }} ${CONFOPT} --enable-fail-if-missing
|
|
||||||
# Append various warning flags to CFLAGS.
|
|
||||||
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
|
||||||
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
|
|
||||||
if [[ ${CC} = clang ]]; then
|
|
||||||
# Suppress some warnings produced by clang 12 and later.
|
|
||||||
sed -i -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
|
|
||||||
fi
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: (!contains(fromJSON(inputs.extra), 'unittests'))
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Build'
|
|
||||||
make ${SHADOWOPT} -j${NPROC}
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Check version
|
|
||||||
if: (!contains(fromJSON(inputs.extra), 'unittests'))
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Check version'
|
|
||||||
"${SRCDIR}"/vim --version
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
|
||||||
if ${{ inputs.features == 'huge' }}; then
|
|
||||||
# Also check that optional and dynamic features are configured and working
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
|
|
||||||
-c "let g:required=['gettext', 'sodium', 'sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
|
|
||||||
-S ci/if_feat_check.vim -c quit
|
|
||||||
fi
|
|
||||||
echo '::endgroup::'
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
name: "test_artifacts"
|
|
||||||
description: "Upload failed test artifacts"
|
|
||||||
inputs:
|
|
||||||
artifact-name:
|
|
||||||
description: Name of the artifact
|
|
||||||
required: true
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
# MacVim: We don't use a matrix within the reused
|
|
||||||
# workflow, and so would prefer to manually pass
|
|
||||||
# in the name of the artifact rather than deriving
|
|
||||||
# it from the matrix automatically like in Vim
|
|
||||||
# upstream.
|
|
||||||
# - name: Collect matrix properties for naming
|
|
||||||
# uses: actions/github-script@v9
|
|
||||||
# id: matrix-props
|
|
||||||
# env:
|
|
||||||
# MATRIX_PROPS: ${{ toJSON(inputs) }}
|
|
||||||
# with:
|
|
||||||
# # An array-flattening-to-string JavaScript function.
|
|
||||||
# script: |
|
|
||||||
# const f = function (x) { return x.toString().length > 0; }
|
|
||||||
# const g = function (x) {
|
|
||||||
# return (Array.isArray(x))
|
|
||||||
# ? x.filter(f)
|
|
||||||
# .map((function (h) { return function (y) { return h(y); }; })(g))
|
|
||||||
# .join('-')
|
|
||||||
# : x;
|
|
||||||
# }
|
|
||||||
# return Object.values(JSON.parse(process.env.MATRIX_PROPS))
|
|
||||||
# .filter(f)
|
|
||||||
# .map(g)
|
|
||||||
# .join('-');
|
|
||||||
# # By default, the JSON-encoded return value of the function is
|
|
||||||
# # set as the "result".
|
|
||||||
# result-encoding: string
|
|
||||||
- name: Upload failed tests
|
|
||||||
uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
# Name of the artifact to upload.
|
|
||||||
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-tests',
|
|
||||||
github.run_id,
|
|
||||||
github.run_attempt,
|
|
||||||
github.job,
|
|
||||||
strategy.job-index,
|
|
||||||
inputs.artifact-name) }}
|
|
||||||
|
|
||||||
# A file, directory or wildcard pattern that describes what
|
|
||||||
# to upload.
|
|
||||||
path: |
|
|
||||||
${{ github.workspace }}/logs/**/*.symbolized
|
|
||||||
${{ github.workspace }}/runtime/indent/testdir/*.fail
|
|
||||||
${{ github.workspace }}/runtime/syntax/testdir/failed/*
|
|
||||||
${{ github.workspace }}/src/testdir/failed/*
|
|
||||||
# The desired behavior if no files are found using the
|
|
||||||
# provided path.
|
|
||||||
if-no-files-found: ignore
|
|
||||||
|
|
||||||
# Duration after which artifact will expire in days. 0 means
|
|
||||||
# using repository settings.
|
|
||||||
retention-days: 0
|
|
||||||
|
|
||||||
# If true, an artifact with a matching name will be deleted
|
|
||||||
overwrite: true
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# This is a clone of test_artifacts for MacVim-specific files
|
|
||||||
# This should be almost identical to test_artifacts, other than the artifact
|
|
||||||
# name/path. In the future we could potentially combine the two, but for now
|
|
||||||
# it's simpler to keep them separate to ease upstream merging.
|
|
||||||
name: 'test_macvim_artifacts'
|
|
||||||
description: "Upload failed MacVim test artifacts"
|
|
||||||
inputs:
|
|
||||||
artifact-name:
|
|
||||||
description: Name of the artifact
|
|
||||||
required: true
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
- name: Upload failed tests
|
|
||||||
uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
# Name of the artifact to upload.
|
|
||||||
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-macvim-tests',
|
|
||||||
github.run_id,
|
|
||||||
github.run_attempt,
|
|
||||||
github.job,
|
|
||||||
strategy.job-index,
|
|
||||||
inputs.artifact-name) }}
|
|
||||||
|
|
||||||
# A file, directory or wildcard pattern that describes what
|
|
||||||
# to upload.
|
|
||||||
path: |
|
|
||||||
/Users/runner/Library/Developer/Xcode/DerivedData/MacVim-*/Logs/Test/*.xcresult
|
|
||||||
# The desired behavior if no files are found using the
|
|
||||||
# provided path.
|
|
||||||
if-no-files-found: ignore
|
|
||||||
|
|
||||||
# Duration after which artifact will expire in days. 0 means
|
|
||||||
# using repository settings.
|
|
||||||
retention-days: 0
|
|
||||||
|
|
||||||
# If true, an artifact with a matching name will be deleted
|
|
||||||
overwrite: true
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
name: Universal package
|
|
||||||
description: Create universal Homebrew package which contains x86_64 and arm64
|
|
||||||
|
|
||||||
# Instead of using the default binary installed by Homebrew, we need to build our own because third-party libraries are
|
|
||||||
# statically linked in MacVim, and need to be built against MACOSX_DEPLOYMENT_TARGET to ensure the built binary will
|
|
||||||
# work on supported macOS versions. Another reason for building our own custom package is to build a unviersal binary
|
|
||||||
# that has both x86_64 and arm64 arch, as Homebrew's distributed bottles are thin binaries with only one arch.
|
|
||||||
#
|
|
||||||
# We still use Homebrew to manage the library because their formulas are up to date and have correct build instructions
|
|
||||||
# that will work. This way we don't have to manually configure, build, and update the package info.
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
formula:
|
|
||||||
description: Formula name
|
|
||||||
required: true
|
|
||||||
contents:
|
|
||||||
description: Path for contents in package's keg
|
|
||||||
required: true
|
|
||||||
gnuiconv:
|
|
||||||
description: Use the Homebrew GNU libiconv instead of system one
|
|
||||||
type: boolean
|
|
||||||
required: false
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- name: Set up formula
|
|
||||||
id: setup-formula
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Set up formula'
|
|
||||||
set -o pipefail
|
|
||||||
formula=${{ inputs.formula }}
|
|
||||||
|
|
||||||
# Need to make sure we get the latest before patching. Otherwise Homebrew may later try to get the latest
|
|
||||||
# version and stomp what we have here.
|
|
||||||
brew update
|
|
||||||
|
|
||||||
brew cat ${formula} >${formula}.rb
|
|
||||||
|
|
||||||
if [[ "${{ inputs.gnuiconv }}" == "true" ]]; then
|
|
||||||
# Modify formula to build using Homebrew libiconv. Usually just adding "depends_on" is enough, but since we
|
|
||||||
# override "CC" to use vanilla system clang, we need to manually inject the compilation/link flags to specify
|
|
||||||
# the locations.
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/i\'$'\n depends_on "libiconv"\n' ${formula}.rb
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CFLAGS"] += " -I'$(brew --prefix)$'/opt/libiconv/include"\n' ${formula}.rb
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["LDFLAGS"] += " -L'$(brew --prefix)$'/opt/libiconv/lib"\n' ${formula}.rb
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Patch the official Homebrew formula to explicitly build for min deployment target and a universal binary. We
|
|
||||||
# also need to explicitly use system Clang because Homebrew's bundled clang script tries to inject -march
|
|
||||||
# compiler flags that will cause universal builds to fail as Clang does not like that.
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["MACOSX_DEPLOYMENT_TARGET"] = "'${MACOSX_DEPLOYMENT_TARGET}$'"\n' ${formula}.rb
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CC"] = "/usr/bin/clang"\n' ${formula}.rb
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CFLAGS"] = "-arch x86_64 -arch arm64"\n' ${formula}.rb
|
|
||||||
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["LDFLAGS"] = "-arch x86_64 -arch arm64"\n' ${formula}.rb
|
|
||||||
|
|
||||||
# Homebrew requires formula files to be placed in taps and disallows
|
|
||||||
# installing from raw paths, so we manually create a taps folder for a
|
|
||||||
# 'macvim-dev/deps' tap.
|
|
||||||
FORMULA_DIR="$(brew --repository)/Library/Taps/macvim-dev/homebrew-deps/Formula/"
|
|
||||||
mkdir -p "$FORMULA_DIR"
|
|
||||||
cp ${formula}.rb "$FORMULA_DIR"
|
|
||||||
|
|
||||||
# Uninstall the already installed formula because we want to build our own
|
|
||||||
brew uninstall --ignore-dependencies ${formula} || true
|
|
||||||
|
|
||||||
# Extract Xcode version to serve as part of the key for caching
|
|
||||||
xcode_version=$(xcodebuild -version | tail -1 | sed -E 's/Build version (.*)/\1/')
|
|
||||||
echo "xcode_version=$xcode_version" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
# Find Homebrew's install location which could be /usr/local or /opt/homebrew
|
|
||||||
brew_prefix=$(brew --prefix)
|
|
||||||
echo "brew_prefix=$brew_prefix" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Restore keg cache
|
|
||||||
id: cache-keg-restore
|
|
||||||
uses: actions/cache/restore@v5
|
|
||||||
with:
|
|
||||||
path: ${{ steps.setup-formula.outputs.brew_prefix }}/Cellar/${{ inputs.formula }}
|
|
||||||
key: ${{ inputs.formula }}-homebrew-cache-custom-unified-prefix${{ steps.setup-formula.outputs.brew_prefix }}-xcode${{ steps.setup-formula.outputs.xcode_version }}-${{ hashFiles(format('{0}.rb', inputs.formula)) }}
|
|
||||||
|
|
||||||
- name: Install formula
|
|
||||||
id: install-formula
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '::group::Install formula'
|
|
||||||
formula=${{ inputs.formula }}
|
|
||||||
|
|
||||||
# We don't want brew to go upgrade all our dependents for now. They are
|
|
||||||
# time consuming and sometimes cause problems with the CI environment
|
|
||||||
# where they fail to link in random binaries (e.g. Python's 2to3),
|
|
||||||
# which cause brew install to return non-zero and fail the build.
|
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
||||||
|
|
||||||
# This will be a no-op if formula was cached. We check if the package
|
|
||||||
# exists first just to avoid an "already installed" warning.
|
|
||||||
brew list ${formula} &>/dev/null || brew install --quiet --formula -s macvim-dev/deps/${formula}
|
|
||||||
|
|
||||||
# If formula was cached, this step is necessary to relink it to brew prefix (e.g. /usr/local)
|
|
||||||
# The "-f" is there to force link keg-only formulas. Homebrew doesn't provide a command to just link in the
|
|
||||||
# optional /opt/homebrew/opt/... folders, so we have to resort to doing this.
|
|
||||||
brew unlink ${formula} && brew link -f ${formula}
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
echo '::group::Verify built version'
|
|
||||||
contents=($(IFS=,; for x in ${{ inputs.contents }}; do echo ${x}; done))
|
|
||||||
|
|
||||||
for content in "${contents[@]}"; do
|
|
||||||
# Print out the archs and verify they are universal fat binary.
|
|
||||||
lipo -info $(brew --prefix)/${content} | grep 'x86_64 arm64'
|
|
||||||
|
|
||||||
# Make sure deployment target is correct. Later macOS versions have a different binary format (just search for
|
|
||||||
# "minos") but for 10.13 we need to look for LC_VERSION_MIN_MACOSX.
|
|
||||||
otool -l $(brew --prefix)/${content} | grep -A 2 LC_VERSION_MIN_MACOSX | tail -1 | grep "${MACOSX_DEPLOYMENT_TARGET}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo '::endgroup::'
|
|
||||||
|
|
||||||
- name: Save keg cache
|
|
||||||
id: cache-keg-save
|
|
||||||
uses: actions/cache/save@v5
|
|
||||||
# We always save the generated artifact even if the whole run
|
|
||||||
# fails due to other issues. This helps debugging build
|
|
||||||
# failure issues faster if the cache doesn't already exist as
|
|
||||||
# we want subsequent runs to not have to re-generate this
|
|
||||||
# artifact again.
|
|
||||||
if: always() && steps.cache-keg-restore.outputs.cache-hit != 'true' && steps.install-formula.conclusion == 'success'
|
|
||||||
with:
|
|
||||||
path: ${{ steps.setup-formula.outputs.brew_prefix }}/Cellar/${{ inputs.formula }}
|
|
||||||
key: ${{ steps.cache-keg-restore.outputs.cache-primary-key }}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directories:
|
|
||||||
- "/"
|
|
||||||
- "/.github/actions/**/*"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
commit-message:
|
|
||||||
prefix: "CI"
|
|
||||||
cooldown:
|
|
||||||
default-days: 7
|
|
||||||
groups:
|
|
||||||
github-actions:
|
|
||||||
patterns:
|
|
||||||
- "*"
|
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
# list of labels and minimatch globs to match to apply the label.
|
|
||||||
|
|
||||||
CI:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- '.cirrus.yml'
|
|
||||||
- '.github/dependabot.yml'
|
|
||||||
- '.github/labeler.yml'
|
|
||||||
- '.github/workflows/*'
|
|
||||||
- '.codecov.yml'
|
|
||||||
|
|
||||||
documentation:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-all-files:
|
|
||||||
- '*/doc/*'
|
|
||||||
|
|
||||||
translation:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/po/*.po'
|
|
||||||
|
|
||||||
if_lua:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_lua.c'
|
|
||||||
- 'src/proto/if_lua.pro'
|
|
||||||
- 'runtime/doc/if_lua.txt'
|
|
||||||
|
|
||||||
if_mzscheme:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_mzsch.c'
|
|
||||||
- 'src/if_mzsch.h'
|
|
||||||
- 'src/proto/if_mzsch.pro'
|
|
||||||
- 'runtime/doc/if_mzsch.txt'
|
|
||||||
|
|
||||||
if_perl:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_perl.xs'
|
|
||||||
- 'src/proto/if_perl.pro'
|
|
||||||
- 'runtime/doc/if_perl.txt'
|
|
||||||
|
|
||||||
if_python:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_py_both.h'
|
|
||||||
- 'runtime/doc/if_pyth.txt'
|
|
||||||
- 'src/if_python.c'
|
|
||||||
- 'src/if_python3.c'
|
|
||||||
- 'src/proto/if_python.pro'
|
|
||||||
- 'src/proto/if_python3.pro'
|
|
||||||
|
|
||||||
if_ruby:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_ruby.c'
|
|
||||||
- 'src/proto/if_ruby.pro'
|
|
||||||
- 'runtime/doc/if_ruby.txt'
|
|
||||||
|
|
||||||
if_tcl:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/if_tcl.c'
|
|
||||||
- 'src/proto/if_tcl.pro'
|
|
||||||
- 'runtime/doc/if_tcl.txt'
|
|
||||||
|
|
||||||
installer:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'nsis/**'
|
|
||||||
- 'src/dosinst.*'
|
|
||||||
- 'src/uninstall.c'
|
|
||||||
|
|
||||||
platform-mac:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/INSTALLmac.txt'
|
|
||||||
- 'src/os_mac*'
|
|
||||||
- 'src/proto/os_mac*'
|
|
||||||
|
|
||||||
platform-windows:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'nsis/**'
|
|
||||||
- 'src/*.bat'
|
|
||||||
- 'src/*.bmp'
|
|
||||||
- 'src/*.ico'
|
|
||||||
- 'src/GvimExt/*'
|
|
||||||
- 'src/INSTALLpc.txt'
|
|
||||||
- 'src/Make_cyg*.mak'
|
|
||||||
- 'src/Make_ming.mak'
|
|
||||||
- 'src/Make_mvc.mak'
|
|
||||||
- 'src/dosinst.*'
|
|
||||||
- 'src/gui_dwrite.*'
|
|
||||||
- 'src/gui_w32*'
|
|
||||||
- 'src/if_ole.*'
|
|
||||||
- 'src/iid_ole.c'
|
|
||||||
- 'src/os_mswin*'
|
|
||||||
- 'src/os_w32*'
|
|
||||||
- 'src/os_win32.*'
|
|
||||||
- 'src/proto/gui_w32.pro'
|
|
||||||
- 'src/proto/os_mswin.pro'
|
|
||||||
- 'src/proto/os_win32.pro'
|
|
||||||
- 'src/proto/winclip.pro'
|
|
||||||
- 'src/uninstall.c'
|
|
||||||
- 'src/vim.manifest'
|
|
||||||
- 'src/vim.rc'
|
|
||||||
- 'src/vimrun.c'
|
|
||||||
- 'src/winclip.c'
|
|
||||||
- 'src/xpm/**'
|
|
||||||
- 'src/xpm_w32.*'
|
|
||||||
|
|
||||||
runtime:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'runtime/autoload/**/*.vim'
|
|
||||||
- 'runtime/colors/**/*.vim'
|
|
||||||
- 'runtime/compiler/**/*.vim'
|
|
||||||
- 'runtime/ftplugin/**/*.vim'
|
|
||||||
- 'runtime/indent/**/*.vim'
|
|
||||||
- 'runtime/syntax/**/*.vim'
|
|
||||||
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
|
|
||||||
|
|
||||||
termdebug:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
|
|
||||||
|
|
||||||
plugin-netrw:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'runtime/plugin/netrwPlugin.vim'
|
|
||||||
- 'runtime/pack/dist/opt/netrw/**'
|
|
||||||
|
|
||||||
xxd:
|
|
||||||
- all:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- 'src/xxd/*'
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Customize GitHub release notes generation. This is only used for pre-release builds for now as
|
|
||||||
# main releases have hand-written release notes.
|
|
||||||
changelog:
|
|
||||||
exclude:
|
|
||||||
labels:
|
|
||||||
- dependencies
|
|
||||||
- Non User Facing
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
name: CI for Linux
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-linux-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
linux:
|
|
||||||
runs-on: ${{ matrix.architecture == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
|
|
||||||
|
|
||||||
env:
|
|
||||||
CC: ${{ matrix.compiler }}
|
|
||||||
GCC_VER: 14
|
|
||||||
CLANG_VER: 22
|
|
||||||
TEST: test
|
|
||||||
SRCDIR: ./src
|
|
||||||
LEAK_CFLAGS: -DEXITFREE
|
|
||||||
LOG_DIR: ${{ github.workspace }}/logs
|
|
||||||
TERM: xterm
|
|
||||||
DISPLAY: ":99"
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
features: [tiny, normal, huge]
|
|
||||||
compiler: [clang, gcc]
|
|
||||||
extra: [[]]
|
|
||||||
# Only use non-native architecture when features != huge.
|
|
||||||
# features=huge tries to install python3-dev, which fails to install
|
|
||||||
# for the non-native architecture.
|
|
||||||
architecture: [native]
|
|
||||||
include:
|
|
||||||
- features: tiny
|
|
||||||
compiler: clang
|
|
||||||
extra: [nogui]
|
|
||||||
- features: tiny
|
|
||||||
compiler: gcc
|
|
||||||
extra: [nogui, syn_test_execs]
|
|
||||||
- features: tiny
|
|
||||||
compiler: gcc
|
|
||||||
extra: [nogui]
|
|
||||||
architecture: arm64
|
|
||||||
- features: normal
|
|
||||||
shadow: ./src/shadow
|
|
||||||
compiler: gcc
|
|
||||||
architecture: i386
|
|
||||||
- features: huge
|
|
||||||
coverage: true
|
|
||||||
- features: huge
|
|
||||||
compiler: clang
|
|
||||||
interface: dynamic
|
|
||||||
python3: stable-abi
|
|
||||||
- features: huge
|
|
||||||
compiler: gcc
|
|
||||||
coverage: true
|
|
||||||
interface: dynamic
|
|
||||||
extra: [uchar, testgui]
|
|
||||||
- features: huge
|
|
||||||
compiler: gcc
|
|
||||||
coverage: true
|
|
||||||
extra: [unittests]
|
|
||||||
- features: huge
|
|
||||||
compiler: gcc
|
|
||||||
coverage: true
|
|
||||||
extra: [unittests]
|
|
||||||
architecture: arm64
|
|
||||||
- features: normal
|
|
||||||
compiler: gcc
|
|
||||||
extra: [vimtags, proto, preproc_indent, encoding, codestyle]
|
|
||||||
- features: huge
|
|
||||||
compiler: gcc
|
|
||||||
extra: [no_x11_wl]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository from GitHub
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
timeout-minutes: 15
|
|
||||||
uses: ./.github/actions/build_vim_on_linux
|
|
||||||
with:
|
|
||||||
features: ${{ matrix.features }}
|
|
||||||
compiler: ${{ matrix.compiler }}
|
|
||||||
architecture: ${{ matrix.architecture }}
|
|
||||||
extra: ${{ toJSON(matrix.extra) }}
|
|
||||||
shadow: ${{ matrix.shadow }}
|
|
||||||
interface: ${{ matrix.interface }}
|
|
||||||
lua_ver: ${{ matrix.lua_ver }}
|
|
||||||
python3: ${{ matrix.python3 }}
|
|
||||||
coverage: ${{ matrix.coverage }}
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
timeout-minutes: 20
|
|
||||||
run: make ${SHADOWOPT} ${TEST}
|
|
||||||
|
|
||||||
# Enable to debug failing tests live and ssh into the CI runners
|
|
||||||
# - name: Setup tmate session
|
|
||||||
# if: ${{ failure() }}
|
|
||||||
# uses: mxschmitt/action-tmate@v3
|
|
||||||
# with:
|
|
||||||
# limit-access-to-actor: true
|
|
||||||
|
|
||||||
- name: Upload failed test artifacts
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
uses: ./.github/actions/test_artifacts
|
|
||||||
|
|
||||||
- name: Vim tags
|
|
||||||
if: contains(matrix.extra, 'vimtags')
|
|
||||||
run: |
|
|
||||||
# This will exit with an error code if the generated vim tags differs from source.
|
|
||||||
(
|
|
||||||
cd runtime/doc
|
|
||||||
git diff --exit-code -- tags
|
|
||||||
make html; rm *.html tags.ref;
|
|
||||||
test -f errors.log && exit 3;
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Generate Proto files
|
|
||||||
if: contains(matrix.extra, 'proto')
|
|
||||||
run: |
|
|
||||||
# This will exit with an error code if the generated proto files differ from source
|
|
||||||
(
|
|
||||||
git diff --exit-code -- src/proto/
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Check Source Code style
|
|
||||||
if: contains(matrix.extra, 'codestyle')
|
|
||||||
run: |
|
|
||||||
make -C src/testdir codestyle
|
|
||||||
|
|
||||||
- name: Check preprocessor indent
|
|
||||||
if: contains(matrix.extra, 'preproc_indent')
|
|
||||||
run: |
|
|
||||||
# This will exit with an error code if the files differ from source
|
|
||||||
(
|
|
||||||
"${SRCDIR}"/vim -u NONE --not-a-term -esNX +"cd runtime/tools" -S preproc_indent.vim
|
|
||||||
git diff --exit-code -- src/*.[ch] src/xxd/xxd.c
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Check encoding of utf-8 runtime files
|
|
||||||
if: contains(matrix.extra, 'encoding')
|
|
||||||
run: |
|
|
||||||
# This will exit with an error code if utf-8 runtime files are not in utf-8 encoding
|
|
||||||
(
|
|
||||||
find . -type f -name "*utf-8*.vim" -exec sh -c \
|
|
||||||
'iconv -f utf-8 -t utf-8 "$1" >/dev/null 2>&1 || echo "non utf-8 encoding detected in $1"' \
|
|
||||||
find-sh {} \; |grep "non utf-8 encoding" && exit 3
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Generate gcov files
|
|
||||||
if: matrix.coverage
|
|
||||||
run: |
|
|
||||||
cd "${SRCDIR}"
|
|
||||||
find . -type f -name '*.gcno' -exec gcov -pb {} + || true
|
|
||||||
|
|
||||||
- name: Codecov
|
|
||||||
timeout-minutes: 20
|
|
||||||
if: matrix.coverage
|
|
||||||
uses: codecov/codecov-action@v6
|
|
||||||
with:
|
|
||||||
flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ join(matrix.extra, '-') }}
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
name: CI for Linux ASan
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-linux_asan-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
linux-asan:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
|
|
||||||
env:
|
|
||||||
CC: clang
|
|
||||||
CLANG_VER: 21
|
|
||||||
SRCDIR: ./src
|
|
||||||
LEAK_CFLAGS: -DEXITFREE
|
|
||||||
LOG_DIR: ${{ github.workspace }}/logs
|
|
||||||
TERM: xterm
|
|
||||||
DISPLAY: ":99"
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
testset:
|
|
||||||
- tinytests
|
|
||||||
- newtests.1
|
|
||||||
- newtests.2
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository from GitHub
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
timeout-minutes: 15
|
|
||||||
uses: ./.github/actions/build_vim_on_linux
|
|
||||||
with:
|
|
||||||
features: huge
|
|
||||||
compiler: clang
|
|
||||||
extra: '["asan"]'
|
|
||||||
# Lua5.1 is the most widely used version (since it's what LuaJIT is
|
|
||||||
# compatible with), so ensure it works
|
|
||||||
lua_ver: "5.1"
|
|
||||||
|
|
||||||
- name: Test (tinytests)
|
|
||||||
if: matrix.testset == 'tinytests'
|
|
||||||
timeout-minutes: 20
|
|
||||||
run: make ${TEST} NEW_TESTS_RES=
|
|
||||||
|
|
||||||
- name: Test (newtests)
|
|
||||||
if: startsWith(matrix.testset, 'newtests')
|
|
||||||
timeout-minutes: 20
|
|
||||||
env:
|
|
||||||
JOB_INDEX: ${{ strategy.job-index }}
|
|
||||||
JOB_TOTAL: ${{ strategy.job-total }}
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
make -C src/testdir SCRIPTS_TINY_OUT= \
|
|
||||||
NEW_TESTS_RES="$(python3 ci/gen_testset.py $((JOB_TOTAL-1)) | jq -r --argjson i $((JOB_INDEX-1)) '.[$i]|join(" ")')"
|
|
||||||
|
|
||||||
- name: ASan logs
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
run: |
|
|
||||||
for f in $(grep -lR '#[[:digit:]]* *0x[[:xdigit:]]*' "${LOG_DIR}"); do
|
|
||||||
(
|
|
||||||
echo "$f"
|
|
||||||
asan_symbolize -l "$f"
|
|
||||||
) | tee "$f".symbolized
|
|
||||||
false # in order to fail a job
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Upload failed test artifacts
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
uses: ./.github/actions/test_artifacts
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
name: CI for macOS
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-macos-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
macos:
|
|
||||||
runs-on: ${{ matrix.runner }}
|
|
||||||
|
|
||||||
env:
|
|
||||||
CC: clang
|
|
||||||
TEST: test
|
|
||||||
SRCDIR: ./src
|
|
||||||
LEAK_CFLAGS: -DEXITFREE
|
|
||||||
TERM: xterm
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
features: [tiny, normal, huge]
|
|
||||||
runner: [macos-15-intel, macos-26]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository from GitHub
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: matrix.features == 'huge'
|
|
||||||
run: |
|
|
||||||
brew install lua libtool
|
|
||||||
echo "LUA_PREFIX=$(brew --prefix)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Set up environment
|
|
||||||
run: |
|
|
||||||
(
|
|
||||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
case "${{ matrix.features }}" in
|
|
||||||
tiny)
|
|
||||||
echo "TEST=testtiny"
|
|
||||||
echo "CONFOPT=--disable-gui"
|
|
||||||
;;
|
|
||||||
normal)
|
|
||||||
;;
|
|
||||||
huge)
|
|
||||||
echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
) >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
|
|
||||||
# Append various warning flags to CFLAGS.
|
|
||||||
# BSD sed needs backup extension specified.
|
|
||||||
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
|
||||||
# On macOS, the entity of gcc is clang.
|
|
||||||
sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
|
|
||||||
# Suppress some warnings produced by clang 12 and later.
|
|
||||||
if clang --version | grep -qs 'Apple clang version \(1[3-9]\|[2-9]\)\.'; then
|
|
||||||
sed -i.bak -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
env:
|
|
||||||
LC_ALL: C
|
|
||||||
run: |
|
|
||||||
make -j${NPROC}
|
|
||||||
|
|
||||||
- name: Check version
|
|
||||||
run: |
|
|
||||||
"${SRCDIR}"/vim --version
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
|
||||||
if ${{ matrix.features == 'huge' }}; then
|
|
||||||
# Also check that optional and dynamic features are configured and working
|
|
||||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
|
|
||||||
-c "let g:required=['sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
|
|
||||||
-S ci/if_feat_check.vim -c quit
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Install packages for testing
|
|
||||||
run: |
|
|
||||||
# Apple diff is broken. Use GNU diff instead. See #14032.
|
|
||||||
brew install diffutils
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
timeout-minutes: 25
|
|
||||||
run: |
|
|
||||||
make ${TEST}
|
|
||||||
|
|
||||||
- name: Upload failed test artifacts
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
uses: ./.github/actions/test_artifacts
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
name: MacVim GitHub CI
|
|
||||||
|
|
||||||
# Main CI workflow for MacVim. Will build and test MacVim on different platforms.
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Builds and test MacVim
|
|
||||||
build-and-test:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
# Self-hosted runner with old enough software (Xcode 14.0.1) to be
|
|
||||||
# able to make legacy builds. We only run this when making a full
|
|
||||||
# release build.
|
|
||||||
- os: macos-13-xcode14-self-hosted
|
|
||||||
publish: true
|
|
||||||
publish_postfix: '_10.9'
|
|
||||||
skip: ${{ ! startswith(github.ref, 'refs/tags/release') }}
|
|
||||||
legacy: true
|
|
||||||
|
|
||||||
- os: macos-14
|
|
||||||
xcode: '15.4'
|
|
||||||
testgui: true
|
|
||||||
extra: [vimtags, check-xcodeproj-compat]
|
|
||||||
|
|
||||||
- os: macos-15
|
|
||||||
xcode: '16.4'
|
|
||||||
testgui: false
|
|
||||||
publish: true
|
|
||||||
optimized: true
|
|
||||||
|
|
||||||
uses: ./.github/workflows/macvim-buildtest.yaml
|
|
||||||
with:
|
|
||||||
skip: ${{ matrix.skip && true || false }}
|
|
||||||
os: ${{ matrix.os }}
|
|
||||||
legacy: ${{ matrix.legacy && true || false }}
|
|
||||||
xcode: ${{ matrix.xcode }}
|
|
||||||
testgui: ${{ matrix.testgui && true || false }}
|
|
||||||
publish: ${{ matrix.publish && true || false }}
|
|
||||||
publish_postfix: ${{ matrix.publish_postfix }}
|
|
||||||
optimized: ${{ matrix.optimized && true || false }}
|
|
||||||
vimtags: ${{ contains(matrix.extra, 'vimtags') }}
|
|
||||||
check-xcodeproj-compat: ${{ contains(matrix.extra, 'check-xcodeproj-compat') }}
|
|
||||||
@@ -1,362 +0,0 @@
|
|||||||
name: CI for Windows
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-windows-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
windows:
|
|
||||||
runs-on: windows-2022
|
|
||||||
|
|
||||||
env:
|
|
||||||
# Interfaces
|
|
||||||
# Lua
|
|
||||||
LUA_VER: 54
|
|
||||||
LUA_VER_DOT: "5.4"
|
|
||||||
LUA_RELEASE: 5.4.2
|
|
||||||
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
|
|
||||||
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
|
|
||||||
LUA_DIR: D:\Lua
|
|
||||||
# do not want \L to end up in pathdef.c and compiler complaining about unknown escape sequences \l
|
|
||||||
LUA_DIR_SLASH: D:/Lua
|
|
||||||
# Python 2
|
|
||||||
PYTHON_VER: 27
|
|
||||||
PYTHON_VER_DOT: "2.7"
|
|
||||||
PYTHON_DIR: 'C:\Python27'
|
|
||||||
# Python 3
|
|
||||||
PYTHON3_VER: 313
|
|
||||||
PYTHON3_VER_DOT: "3.13"
|
|
||||||
# Other dependencies
|
|
||||||
# winpty
|
|
||||||
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
|
|
||||||
# libsodium
|
|
||||||
SODIUM_VER: "1.0.20"
|
|
||||||
# SODIUM_MSVC_URL: https://download.libsodium.org/libsodium/releases/libsodium-%SODIUM_VER%-stable-msvc.zip
|
|
||||||
SODIUM_MSVC_URL: https://github.com/jedisct1/libsodium/releases/download/%SODIUM_VER%-RELEASE/libsodium-%SODIUM_VER%-msvc.zip
|
|
||||||
SODIUM_MSVC_VER: v143
|
|
||||||
# SODIUM_MINGW_URL: https://download.libsodium.org/libsodium/releases/libsodium-%SODIUM_VER%-stable-mingw.tar.gz
|
|
||||||
SODIUM_MINGW_URL: https://github.com/jedisct1/libsodium/releases/download/%SODIUM_VER%-RELEASE/libsodium-%SODIUM_VER%-mingw.tar.gz
|
|
||||||
SODIUM_MINGW_VER: 26
|
|
||||||
# Gettext-tools, iconv and libraries
|
|
||||||
GETTEXT32_URL: https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-32.zip
|
|
||||||
GETTEXT64_URL: https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.zip
|
|
||||||
# Escape sequences
|
|
||||||
COL_RED: "\x1b[31m"
|
|
||||||
COL_GREEN: "\x1b[32m"
|
|
||||||
COL_YELLOW: "\x1b[33m"
|
|
||||||
COL_RESET: "\x1b[m"
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, python3: stable }
|
|
||||||
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, python3: stable, coverage: yes }
|
|
||||||
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: yes, arch: x86 }
|
|
||||||
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: no, arch: x64, coverage: yes }
|
|
||||||
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, ttytype: conpty }
|
|
||||||
- { features: NORMAL, toolchain: msvc, VIMDLL: yes, GUI: no, arch: x86 }
|
|
||||||
- { features: NORMAL, toolchain: mingw, VIMDLL: no, GUI: yes, arch: x64 }
|
|
||||||
- { features: TINY, toolchain: msvc, VIMDLL: yes, GUI: yes, arch: x64 }
|
|
||||||
- { features: TINY, toolchain: mingw, VIMDLL: no, GUI: no, arch: x86 }
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Initialize
|
|
||||||
id: init
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# Show Windows version
|
|
||||||
cmd /c ver
|
|
||||||
|
|
||||||
if ${{ matrix.arch == 'x64' }}; then
|
|
||||||
cygreg=registry
|
|
||||||
pyreg=
|
|
||||||
echo "VCARCH=amd64" >> $GITHUB_ENV
|
|
||||||
echo "WARCH=x64" >> $GITHUB_ENV
|
|
||||||
echo "BITS=64" >> $GITHUB_ENV
|
|
||||||
echo "MSYSTEM=MINGW64" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
cygreg=registry32
|
|
||||||
pyreg=-32
|
|
||||||
echo "VCARCH=x86" >> $GITHUB_ENV
|
|
||||||
echo "WARCH=ia32" >> $GITHUB_ENV
|
|
||||||
echo "BITS=32" >> $GITHUB_ENV
|
|
||||||
echo "MSYSTEM=MINGW32" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
|
|
||||||
if ${{ matrix.features != 'TINY' }}; then
|
|
||||||
if ${{ matrix.arch == 'x86' }}; then
|
|
||||||
choco install python2 --no-progress --forcex86
|
|
||||||
else
|
|
||||||
choco install python2 --no-progress
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
python3_dir=$(cat "/proc/$cygreg/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}$pyreg/InstallPath/@")
|
|
||||||
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
if ${{ matrix.toolchain == 'msvc' }}; then
|
|
||||||
SODIUM_DIR=D:\\libsodium
|
|
||||||
echo "SODIUM_LIB=${SODIUM_DIR}\\${{ matrix.arch == 'x64' && 'x64' || 'Win32' }}\\Release\\${SODIUM_MSVC_VER}\\dynamic" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
SODIUM_DIR=D:\\libsodium-win${{ matrix.arch == 'x64' && '64' || '32' }}
|
|
||||||
# do not want \L to end up in pathdef.c and compiler complaining about unknown escape sequences \l
|
|
||||||
SODIUM_DIR_SLASH=D:/libsodium-win${{ matrix.arch == 'x64' && '64' || '32' }}
|
|
||||||
echo "SODIUM_LIB=${SODIUM_DIR}\\bin" >> $GITHUB_ENV
|
|
||||||
echo "SODIUM_DIR_SLASH=${SODIUM_DIR_SLASH}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
echo "SODIUM_DIR=${SODIUM_DIR}" >> $GITHUB_ENV
|
|
||||||
echo "GETTEXT_PATH=D:\gettext${{ matrix.arch == 'x64' && '64' || '32' }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- uses: msys2/setup-msys2@v2.31.1
|
|
||||||
if: matrix.toolchain == 'mingw'
|
|
||||||
with:
|
|
||||||
update: true
|
|
||||||
install: tar
|
|
||||||
pacboy: >-
|
|
||||||
make:p gcc:p
|
|
||||||
msystem: ${{ env.MSYSTEM }}
|
|
||||||
release: false
|
|
||||||
|
|
||||||
- name: Checkout repository from GitHub
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Create a list of download URLs
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
type NUL > urls.txt
|
|
||||||
echo %LUA_RELEASE%>> urls.txt
|
|
||||||
echo %WINPTY_URL%>> urls.txt
|
|
||||||
echo %SODIUM_VER%>> urls.txt
|
|
||||||
echo %GETTEXT32_URL%>> urls.txt
|
|
||||||
echo %GETTEXT64_URL%>> urls.txt
|
|
||||||
|
|
||||||
- name: Cache downloaded files
|
|
||||||
uses: actions/cache@v5.0.5
|
|
||||||
with:
|
|
||||||
path: downloads
|
|
||||||
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('urls.txt') }}
|
|
||||||
|
|
||||||
- name: Download dependencies
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
path C:\Program Files\7-Zip;%path%
|
|
||||||
if not exist downloads mkdir downloads
|
|
||||||
|
|
||||||
echo %COL_GREEN%Download Lua%COL_RESET%
|
|
||||||
call :downloadfile %LUA${{ env.BITS }}_URL% downloads\lua.zip
|
|
||||||
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
|
|
||||||
|
|
||||||
if not "${{ matrix.ttytype }}" == "conpty" (
|
|
||||||
echo %COL_GREEN%Download winpty%COL_RESET%
|
|
||||||
call :downloadfile %WINPTY_URL% downloads\winpty.zip
|
|
||||||
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
|
|
||||||
copy /Y D:\winpty\%WARCH%\bin\winpty.dll src\winpty%BITS%.dll
|
|
||||||
copy /Y D:\winpty\%WARCH%\bin\winpty-agent.exe src\
|
|
||||||
)
|
|
||||||
|
|
||||||
echo %COL_GREEN%Download libsodium%COL_RESET%
|
|
||||||
if "${{ matrix.toolchain }}"=="msvc" (
|
|
||||||
call :downloadfile %SODIUM_MSVC_URL% downloads\libsodium.zip
|
|
||||||
7z x -y downloads\libsodium.zip -oD:\ > nul || exit 1
|
|
||||||
) else (
|
|
||||||
call :downloadfile %SODIUM_MINGW_URL% downloads\libsodium.tar.gz
|
|
||||||
7z x -y downloads\libsodium.tar.gz -so | 7z x -si -ttar -oD:\ > nul || exit 1
|
|
||||||
mklink %SODIUM_LIB%\libsodium.dll %SODIUM_LIB%\libsodium-%SODIUM_MINGW_VER%.dll
|
|
||||||
)
|
|
||||||
|
|
||||||
echo %COL_GREEN%Download Gettext%COL_RESET%
|
|
||||||
call :downloadfile %GETTEXT${{ env.BITS }}_URL% downloads\gettext${{ env.BITS }}.zip
|
|
||||||
7z e -y downloads\gettext${{ env.BITS }}.zip -oD:\gettext${{ env.BITS }} > nul || exit 1
|
|
||||||
copy /y D:\gettext${{ env.BITS }}\libintl-8.dll src\ || exit 1
|
|
||||||
copy /y D:\gettext${{ env.BITS }}\libiconv-2.dll src\ || exit 1
|
|
||||||
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:downloadfile
|
|
||||||
:: call :downloadfile <URL> <localfile>
|
|
||||||
if not exist %2 (
|
|
||||||
curl -f -L %1 -o %2
|
|
||||||
)
|
|
||||||
if ERRORLEVEL 1 (
|
|
||||||
rem Retry once.
|
|
||||||
curl -f -L %1 -o %2 || exit 1
|
|
||||||
)
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
- name: Build (MSVC)
|
|
||||||
if: matrix.toolchain == 'msvc'
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
call "%VCVARSALL%" %VCARCH%
|
|
||||||
cd src
|
|
||||||
if "${{ matrix.VIMDLL }}"=="yes" (
|
|
||||||
set GUI=yes
|
|
||||||
) else (
|
|
||||||
set GUI=${{ matrix.GUI }}
|
|
||||||
)
|
|
||||||
if "${{ matrix.python3 }}"=="stable" (
|
|
||||||
set PYTHON3_STABLE=yes
|
|
||||||
) else (
|
|
||||||
set PYTHON3_STABLE=no
|
|
||||||
)
|
|
||||||
if "${{ matrix.features }}"=="HUGE" (
|
|
||||||
nmake -nologo -f Make_mvc.mak ^
|
|
||||||
FEATURES=${{ matrix.features }} ^
|
|
||||||
GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} ^
|
|
||||||
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
|
|
||||||
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
|
|
||||||
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% ^
|
|
||||||
DYNAMIC_PYTHON3_STABLE_ABI=%PYTHON3_STABLE% ^
|
|
||||||
DYNAMIC_SODIUM=yes SODIUM=%SODIUM_DIR% ^
|
|
||||||
CI_FLAGS=/we4267
|
|
||||||
) else (
|
|
||||||
nmake -nologo -f Make_mvc.mak ^
|
|
||||||
FEATURES=${{ matrix.features }} ^
|
|
||||||
GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} ^
|
|
||||||
CI_FLAGS=/we4267
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Build (MinGW)
|
|
||||||
if: matrix.toolchain == 'mingw'
|
|
||||||
shell: msys2 {0}
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
if [ "${{ matrix.VIMDLL }}" = "yes" ]; then
|
|
||||||
GUI=yes
|
|
||||||
else
|
|
||||||
GUI=${{ matrix.GUI }}
|
|
||||||
fi
|
|
||||||
if [ "${{ matrix.python3 }}" = "stable" ]; then
|
|
||||||
PYTHON3_STABLE=yes
|
|
||||||
else
|
|
||||||
PYTHON3_STABLE=no
|
|
||||||
fi
|
|
||||||
if [ "${{ matrix.features }}" = "HUGE" ]; then
|
|
||||||
mingw32-make -f Make_ming.mak -j2 \
|
|
||||||
FEATURES=${{ matrix.features }} \
|
|
||||||
GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
|
|
||||||
DYNAMIC_LUA=yes LUA=${LUA_DIR_SLASH} \
|
|
||||||
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
|
|
||||||
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
|
|
||||||
DYNAMIC_PYTHON3_STABLE_ABI=${PYTHON3_STABLE} \
|
|
||||||
DYNAMIC_SODIUM=yes SODIUM=${SODIUM_DIR_SLASH} \
|
|
||||||
STATIC_STDCPLUS=yes COVERAGE=${{ matrix.coverage }}
|
|
||||||
else
|
|
||||||
mingw32-make -f Make_ming.mak -j2 \
|
|
||||||
FEATURES=${{ matrix.features }} \
|
|
||||||
GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
|
|
||||||
STATIC_STDCPLUS=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Check version
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%
|
|
||||||
if "${{ matrix.GUI }}"=="yes" (
|
|
||||||
start /wait src\gvim -u NONE -i NONE -c "redir > version.txt | ver | q" || exit 1
|
|
||||||
type version.txt
|
|
||||||
echo.
|
|
||||||
start /wait src\gvim -u NONE -i NONE -c "redir! > version.txt | so ci\if_ver-1.vim | q"
|
|
||||||
start /wait src\gvim -u NONE -i NONE -c "redir >> version.txt | so ci\if_ver-2.vim | q"
|
|
||||||
type version.txt
|
|
||||||
del version.txt
|
|
||||||
) else (
|
|
||||||
src\vim --version || exit 1
|
|
||||||
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
|
||||||
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
|
||||||
if "${{ matrix.features }}"=="HUGE" (
|
|
||||||
src\vim -u NONE -i NONE --not-a-term -esNX -V1 ^
|
|
||||||
-c "let g:required=['gettext', 'sodium', 'sound', 'python3', 'lua']" ^
|
|
||||||
-S ci/if_feat_check.vim -c quit
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
#- name: Prepare Artifact
|
|
||||||
# shell: cmd
|
|
||||||
# run: |
|
|
||||||
# mkdir artifacts
|
|
||||||
# copy src\*vim.exe artifacts
|
|
||||||
# copy src\vim*.dll artifacts
|
|
||||||
#
|
|
||||||
#- name: Upload Artifact
|
|
||||||
# uses: actions/upload-artifact@v7
|
|
||||||
# with:
|
|
||||||
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
|
|
||||||
# path: ./artifacts
|
|
||||||
|
|
||||||
# disabled because of https://github.com/tunisiano187/Chocolatey-packages/issues/3916
|
|
||||||
#- name: Install packages for testing
|
|
||||||
# shell: bash
|
|
||||||
# run: |
|
|
||||||
# if ${{ matrix.features != 'TINY' }}; then
|
|
||||||
# if ${{ matrix.arch == 'x64' }}; then
|
|
||||||
# choco install netbeans --no-progress
|
|
||||||
# else
|
|
||||||
# exit 0
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
|
|
||||||
- name: Test and show the result of testing gVim
|
|
||||||
if: matrix.GUI == 'yes' || matrix.VIMDLL == 'yes'
|
|
||||||
shell: cmd
|
|
||||||
timeout-minutes: 15
|
|
||||||
run: |
|
|
||||||
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
|
|
||||||
call "%VCVARSALL%" %VCARCH%
|
|
||||||
|
|
||||||
echo %COL_GREEN%Test gVim:%COL_RESET%
|
|
||||||
cd src\testdir
|
|
||||||
if "${{ matrix.GUI }}"=="yes" (
|
|
||||||
nmake -nologo -f Make_mvc.mak VIMPROG=..\gvim || exit 1
|
|
||||||
) else (
|
|
||||||
@rem Run only tiny tests.
|
|
||||||
nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\gvim || exit 1
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Test and show the result of testing Vim
|
|
||||||
if: matrix.GUI == 'no' || matrix.VIMDLL == 'yes'
|
|
||||||
shell: cmd
|
|
||||||
timeout-minutes: 15
|
|
||||||
run: |
|
|
||||||
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
|
|
||||||
call "%VCVARSALL%" %VCARCH%
|
|
||||||
|
|
||||||
echo %COL_GREEN%Test Vim:%COL_RESET%
|
|
||||||
cd src\testdir
|
|
||||||
nmake -nologo -f Make_mvc.mak clean
|
|
||||||
if "${{ matrix.GUI }}"=="no" (
|
|
||||||
nmake -nologo -f Make_mvc.mak VIMPROG=..\vim || exit 1
|
|
||||||
) else (
|
|
||||||
@rem Run only tiny tests.
|
|
||||||
nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\vim || exit 1
|
|
||||||
)
|
|
||||||
|
|
||||||
- name: Upload failed test artifacts
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
uses: ./.github/actions/test_artifacts
|
|
||||||
|
|
||||||
- name: Generate gcov files
|
|
||||||
if: matrix.coverage
|
|
||||||
shell: msys2 {0}
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
find . -type f -name '*.gcno' -exec gcov -pb {} + || true
|
|
||||||
|
|
||||||
- name: Codecov
|
|
||||||
timeout-minutes: 20
|
|
||||||
if: matrix.coverage
|
|
||||||
uses: codecov/codecov-action@v6
|
|
||||||
with:
|
|
||||||
directory: src
|
|
||||||
flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [master]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [master]
|
|
||||||
schedule:
|
|
||||||
- cron: '0 18 * * 1'
|
|
||||||
|
|
||||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
|
||||||
concurrency:
|
|
||||||
# The concurrency group contains the workflow name and the branch name for
|
|
||||||
# pull requests or the commit hash for any other events.
|
|
||||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
security-events: write # (github/codeql-action/autobuild)
|
|
||||||
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
# Override automatic language detection by changing the below list
|
|
||||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
|
||||||
language: ['cpp', 'python']
|
|
||||||
# Learn more...
|
|
||||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository from github
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v4.36.0
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v4.36.0
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v4.36.0
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
name: Coverity
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '42 0 * * *' # Run once per day, to avoid Coverity's submission limits
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read # to fetch code (actions/checkout)
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
scan:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
|
|
||||||
env:
|
|
||||||
CC: gcc
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository from github
|
|
||||||
if: env.TOKEN
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Download Coverity
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz
|
|
||||||
mkdir cov-scan
|
|
||||||
tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
sudo apt-get update && sudo apt-get install -y \
|
|
||||||
autoconf \
|
|
||||||
gettext \
|
|
||||||
libcanberra-dev \
|
|
||||||
libperl-dev \
|
|
||||||
python3-dev \
|
|
||||||
liblua5.4-dev \
|
|
||||||
lua5.4 \
|
|
||||||
ruby-dev \
|
|
||||||
tcl-dev \
|
|
||||||
libgtk2.0-dev \
|
|
||||||
desktop-file-utils \
|
|
||||||
libtool-bin \
|
|
||||||
libsodium-dev
|
|
||||||
|
|
||||||
- name: Set up environment
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH
|
|
||||||
(
|
|
||||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
|
||||||
echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
|
||||||
) >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing
|
|
||||||
# Append various warning flags to CFLAGS.
|
|
||||||
sed -i -f ci/config.mk.sed src/auto/config.mk
|
|
||||||
sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk
|
|
||||||
# -O2 gives false warning and turns it into an error:
|
|
||||||
# warning: function may return address of local variable [-Wreturn-local-addr]
|
|
||||||
sed -i 's/-O2 \?//' src/auto/config.mk
|
|
||||||
|
|
||||||
- name: Build/scan vim
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
cov-build --dir cov-int make -j${NPROC}
|
|
||||||
|
|
||||||
- name: Submit results
|
|
||||||
if: env.TOKEN
|
|
||||||
run: |
|
|
||||||
tar zcf cov-scan.tgz cov-int
|
|
||||||
curl --form token=$TOKEN \
|
|
||||||
--form email=$EMAIL \
|
|
||||||
--form file=@cov-scan.tgz \
|
|
||||||
--form version="$(git rev-parse HEAD)" \
|
|
||||||
--form description="Automatic GHA scan" \
|
|
||||||
'https://scan.coverity.com/builds?project=vim'
|
|
||||||
env:
|
|
||||||
EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# This workflow will triage pull requests and apply a label based on the
|
|
||||||
# paths that are modified in the pull request.
|
|
||||||
#
|
|
||||||
# To use this workflow, you will need to set up a .github/labeler.yml
|
|
||||||
# file with configuration. For more information, see:
|
|
||||||
# https://github.com/actions/labeler
|
|
||||||
|
|
||||||
name: Labeler
|
|
||||||
on: [pull_request_target]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
label:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/labeler@v6.1.0
|
|
||||||
with:
|
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# .github/workflows/link-check.yml
|
|
||||||
name: Check Links
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 3 * * 0' # Every Sunday at 03:00 UTC
|
|
||||||
jobs:
|
|
||||||
lychee:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6.0.2
|
|
||||||
- name: Run Lychee
|
|
||||||
uses: lycheeverse/lychee-action@v2
|
|
||||||
with:
|
|
||||||
args: --verbose --config ci/lychee.toml .
|
|
||||||
@@ -1,448 +0,0 @@
|
|||||||
name: MacVim Build and Test
|
|
||||||
|
|
||||||
# Child workflow to be called by other workflows for building/testing MacVim
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
skip:
|
|
||||||
type: boolean
|
|
||||||
os:
|
|
||||||
type: string
|
|
||||||
legacy:
|
|
||||||
type: boolean
|
|
||||||
xcode:
|
|
||||||
type: string
|
|
||||||
testgui:
|
|
||||||
type: boolean
|
|
||||||
publish:
|
|
||||||
type: boolean
|
|
||||||
publish_postfix:
|
|
||||||
type: string
|
|
||||||
optimized:
|
|
||||||
type: boolean
|
|
||||||
vimtags:
|
|
||||||
type: boolean
|
|
||||||
check-xcodeproj-compat:
|
|
||||||
type: boolean
|
|
||||||
|
|
||||||
env:
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: '10.13'
|
|
||||||
MACOSX_DEPLOYMENT_TARGET_LEGACY: '10.9'
|
|
||||||
|
|
||||||
MACVIM_ARCHS: "x86_64 arm64" # Universal app for Intel/Apple Silicon
|
|
||||||
MACVIM_ARCHS_LEGACY: "x86_64 arm64" # Build universal for legacy too, mostly just to make building/testing on Apple Silicon CI work. In reality all Apple Silicon Macs shoud use non-legacy.
|
|
||||||
|
|
||||||
CC: clang
|
|
||||||
|
|
||||||
MAKE_BUILD_ARGS: LINK_AS_NEEDED=yes # In macOS we never over-specify link dependencies and we already check against external deps in smoketest. With LTO, linking takes a while, so we want to avoid using link.sh.
|
|
||||||
|
|
||||||
vi_cv_path_python: /Library/Frameworks/Python.framework/Versions/2.7/bin/python
|
|
||||||
vi_cv_path_python3: "%s/bin/python3"
|
|
||||||
vi_cv_path_plain_lua: "%s/bin/lua"
|
|
||||||
vi_cv_path_ruby: "%s/opt/ruby/bin/ruby"
|
|
||||||
vi_cv_dll_name_perl: /System/Library/Perl/%s/darwin-thread-multi-2level/CORE/libperl.dylib
|
|
||||||
vi_cv_dll_name_python: /Library/Frameworks/Python.framework/Versions/2.7/Python
|
|
||||||
vi_cv_dll_name_python3: /usr/local/Frameworks/Python.framework/Versions/Current/Python
|
|
||||||
vi_cv_dll_name_python3_arm64: /opt/homebrew/Frameworks/Python.framework/Versions/Current/Python
|
|
||||||
vi_cv_dll_name_ruby: /usr/local/opt/ruby/lib/libruby.dylib
|
|
||||||
vi_cv_dll_name_ruby_arm64: /opt/homebrew/opt/ruby/lib/libruby.dylib
|
|
||||||
vi_cv_dll_name_lua: /usr/local/lib/liblua.dylib
|
|
||||||
vi_cv_dll_name_lua_arm64: /opt/homebrew/lib/liblua.dylib
|
|
||||||
|
|
||||||
MACVIM_APP: src/MacVim/build/Release/MacVim.app
|
|
||||||
VIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
|
||||||
MACVIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/MacVim
|
|
||||||
|
|
||||||
TERM: xterm
|
|
||||||
BASH_SILENCE_DEPRECATION_WARNING: 1
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Builds and test MacVim
|
|
||||||
build-and-test:
|
|
||||||
if: ${{ !inputs.skip }}
|
|
||||||
runs-on: ${{ inputs.os }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6.0.2
|
|
||||||
|
|
||||||
- name: Set up legacy build
|
|
||||||
if: inputs.legacy
|
|
||||||
run: |
|
|
||||||
# Set the correct build env vars to target the correct architectures and min OS targets.
|
|
||||||
echo "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET_LEGACY" >> $GITHUB_ENV
|
|
||||||
echo "MACVIM_ARCHS=$MACVIM_ARCHS_LEGACY" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
# Use Sparkle 1 because Sparkle 2 requires newer OS version than our legacy build.
|
|
||||||
# Later, we pass the --enable-sparkle_1 flag to configure to set the corresponding ifdef.
|
|
||||||
ln -fhs Sparkle_1.framework src/MacVim/Sparkle.framework
|
|
||||||
|
|
||||||
# Sparkle shows a dialog asking if the user wants to check for updates on 2nd launch of
|
|
||||||
# MacVim. On Sparkle 1 this is annoyingly a modal dialog box and interferes with tests.
|
|
||||||
# Just disable it by pre-setting to not check for updates.
|
|
||||||
defaults write org.vim.MacVim SUEnableAutomaticChecks 0
|
|
||||||
|
|
||||||
- name: Set up Xcode
|
|
||||||
if: inputs.xcode != ''
|
|
||||||
run: |
|
|
||||||
sudo xcode-select -s /Applications/Xcode_${{ inputs.xcode }}.app/Contents/Developer
|
|
||||||
xcode-select -p
|
|
||||||
xcodebuild -version
|
|
||||||
|
|
||||||
# Set up, install, and cache GNU libiconv library to work around Apple iconv issues in newer macOS versions.
|
|
||||||
|
|
||||||
- name: Set up libiconv
|
|
||||||
if: inputs.publish && !inputs.legacy
|
|
||||||
uses: ./.github/actions/universal-package
|
|
||||||
with:
|
|
||||||
formula: libiconv
|
|
||||||
contents: opt/libiconv/lib/libiconv.a,opt/libiconv/lib/libiconv.dylib
|
|
||||||
|
|
||||||
# Set up, install, and cache gettext library for localization.
|
|
||||||
|
|
||||||
- name: Set up gettext
|
|
||||||
if: inputs.publish
|
|
||||||
uses: ./.github/actions/universal-package
|
|
||||||
with:
|
|
||||||
formula: gettext
|
|
||||||
contents: lib/libintl.a,lib/libintl.dylib
|
|
||||||
gnuiconv: ${{ inputs.legacy == false }} # gettext needs to match MacVim in using the same version of iconv
|
|
||||||
|
|
||||||
# Set up, install, and cache libsodium library for encryption.
|
|
||||||
|
|
||||||
- name: Set up libsodium
|
|
||||||
if: inputs.publish
|
|
||||||
uses: ./.github/actions/universal-package
|
|
||||||
with:
|
|
||||||
formula: libsodium
|
|
||||||
contents: lib/libsodium.a,lib/libsodium.dylib
|
|
||||||
|
|
||||||
# Set up remaining packages and tools
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
run: |
|
|
||||||
brew install --quiet libtool
|
|
||||||
|
|
||||||
- name: Install packages for testing
|
|
||||||
run: |
|
|
||||||
# Apple diff is broken. Use GNU diff instead. See http://github.com/vim/vim/issues/14056.
|
|
||||||
brew install --quiet diffutils
|
|
||||||
|
|
||||||
# Cache Python 2 to avoid downloading the installer every time. This cache shouldn't change
|
|
||||||
# over time as Python 2.7 is legacy. Can't directly cache to
|
|
||||||
# /Library/Frameworks/Python.framework due to permission issues.
|
|
||||||
#
|
|
||||||
# Note: Legacy self-hosted runner already has this installed and doesn't need this.
|
|
||||||
- name: Cache Python 2
|
|
||||||
if: inputs.publish && !inputs.legacy
|
|
||||||
uses: actions/cache@v5
|
|
||||||
with:
|
|
||||||
path: python27-cache
|
|
||||||
key: ${{ inputs.os }}-python27
|
|
||||||
|
|
||||||
- name: Install scripting runtimes
|
|
||||||
if: inputs.publish
|
|
||||||
run: |
|
|
||||||
# We no longer need to install/update Python 3, as it's guaranteed to
|
|
||||||
# be installed on runners. Since we use stable ABI, the exact version
|
|
||||||
# on CI does not matter.
|
|
||||||
|
|
||||||
brew install --quiet ruby
|
|
||||||
brew install --quiet lua
|
|
||||||
|
|
||||||
if [[ -d $(brew --prefix)/Cellar/perl ]]; then
|
|
||||||
# We just use system perl to reduce dependencies
|
|
||||||
brew unlink perl
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "vi_cv_path_python3=$(printf $vi_cv_path_python3 $(brew --prefix))" >> $GITHUB_ENV
|
|
||||||
echo "vi_cv_path_plain_lua=$(printf $vi_cv_path_plain_lua $(brew --prefix))" >> $GITHUB_ENV
|
|
||||||
echo "vi_cv_path_ruby=$(printf $vi_cv_path_ruby $(brew --prefix))" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
# With Perl, we need to manually specify the version number because the dylib path depends on it.
|
|
||||||
export PERL_VERSION=$(perl -e 'print $^V =~ s/v(\d\.\d+).*/\1/r')
|
|
||||||
echo "vi_cv_dll_name_perl=$(printf $vi_cv_dll_name_perl $PERL_VERSION)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
# New runner images (macos-13) no longer have Python2 installed. We
|
|
||||||
# need to install Python2 manually. Installing from the official
|
|
||||||
# installer is the easiest way as Homebrew no longer ships python@2
|
|
||||||
# and this way does not invole manual building from source. We
|
|
||||||
# mostly only need the headers to build a dynamic build anyway.
|
|
||||||
#
|
|
||||||
# This will be removed in the future as Python2 has been completely
|
|
||||||
# unsupported for years.
|
|
||||||
if [ -d /Library/Frameworks/Python.framework/Versions/2.7 ]; then
|
|
||||||
echo "Python 2.7 already installed"
|
|
||||||
elif [ -d python27-cache ]; then
|
|
||||||
sudo cp -R python27-cache /Library/Frameworks/Python.framework/Versions/2.7
|
|
||||||
else
|
|
||||||
curl https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg -o ~/Downloads/python-2.7.18-macosx10.9.pkg
|
|
||||||
sudo installer -pkg ~/Downloads/python-2.7.18-macosx10.9.pkg -target /
|
|
||||||
cp -R /Library/Frameworks/Python.framework/Versions/2.7 python27-cache # Allow this to be cached
|
|
||||||
fi
|
|
||||||
|
|
||||||
# All set up steps are done. Build and test MacVim below.
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
set -o verbose
|
|
||||||
|
|
||||||
CONFOPT=(
|
|
||||||
--with-local-dir=$(brew --prefix)
|
|
||||||
--with-features=huge
|
|
||||||
--enable-netbeans
|
|
||||||
--with-tlib=ncurses
|
|
||||||
--enable-cscope
|
|
||||||
--enable-gui=macvim
|
|
||||||
--with-compiledby="GitHub Actions"
|
|
||||||
)
|
|
||||||
if ${{ inputs.publish == true }}; then
|
|
||||||
CONFOPT+=(
|
|
||||||
--enable-perlinterp=dynamic
|
|
||||||
--enable-pythoninterp=dynamic
|
|
||||||
--enable-python3interp=dynamic
|
|
||||||
--with-python3-stable-abi=3.9 # macOS and Xcode currently ships 3.9, so we don't want go higher than that.
|
|
||||||
--enable-rubyinterp=dynamic
|
|
||||||
--enable-luainterp=dynamic
|
|
||||||
--with-lua-prefix=$(brew --prefix)
|
|
||||||
--with-macarchs="$MACVIM_ARCHS"
|
|
||||||
)
|
|
||||||
else
|
|
||||||
CONFOPT+=(
|
|
||||||
--disable-sparkle # Disable Sparkle for testing that this flag builds and works
|
|
||||||
--enable-nls=no --enable-libsodium=no # Disable gettext and libsodium unless we built them ourselves for publish
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
if ${{ inputs.legacy == true }}; then
|
|
||||||
CONFOPT+=(
|
|
||||||
--enable-sparkle_1
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
echo "CONFOPT: ${CONFOPT[@]}"
|
|
||||||
|
|
||||||
./configure "${CONFOPT[@]}" --enable-fail-if-missing
|
|
||||||
|
|
||||||
sed -i.bak -f ci/config.mk.sed -f ci/config.mk.clang.sed -f ci/config.mk.xcode.sed src/auto/config.mk
|
|
||||||
if clang --version | grep -qs '^Apple clang version \(1[3-9]\|[2-9]\d\)\.'; then
|
|
||||||
sed -i.bak -f ci/config.mk.clang-12.sed src/auto/config.mk
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${{ inputs.optimized == true }}; then
|
|
||||||
# Additional optimizations like link-time optimizations that are a bit slower to build.
|
|
||||||
sed -i.bak -f ci/config.mk.optimized.sed src/auto/config.mk
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${{ inputs.publish == true && inputs.legacy == false }}; then
|
|
||||||
# Use Homebrew GNU libiconv since Apple iconv has been broken since macOS 14
|
|
||||||
sed -i.bak -f ci/config.mk.brew-libiconv.sed src/auto/config.mk
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Modify configure result
|
|
||||||
if: inputs.publish
|
|
||||||
run: |
|
|
||||||
set -o verbose
|
|
||||||
# Ruby is keg-only in Homebrew, so need to manually link in the path so Vim will know where to look for the binaries.
|
|
||||||
perl -p -i -e "s#(?<=-DDYNAMIC_RUBY_DLL=\\\\\").*?(?=\\\\\")#${vi_cv_dll_name_ruby}#" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_PERL_DLL=\\\\\"${vi_cv_dll_name_perl}\\\\\"" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_PYTHON_DLL=\\\\\"${vi_cv_dll_name_python}\\\\\"" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"${vi_cv_dll_name_python3}\\\\\"" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_RUBY_DLL=\\\\\"${vi_cv_dll_name_ruby}\\\\\"" src/auto/config.mk
|
|
||||||
|
|
||||||
# Also search for the arm64 overrides for the default library locations, which are different from x86_64
|
|
||||||
# because Homebrew puts them at a different place.
|
|
||||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL_ARM64=\\\\\"${vi_cv_dll_name_python3_arm64}\\\\\"" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_RUBY_DLL_ARM64=\\\\\"${vi_cv_dll_name_ruby_arm64}\\\\\"" src/auto/config.mk
|
|
||||||
grep -q -- "-DDYNAMIC_LUA_DLL_ARM64=\\\\\"${vi_cv_dll_name_lua_arm64}\\\\\"" src/auto/config.mk
|
|
||||||
|
|
||||||
- name: Show configure output
|
|
||||||
run: |
|
|
||||||
cat src/auto/config.mk
|
|
||||||
cat src/auto/config.h
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
env:
|
|
||||||
LC_ALL: C
|
|
||||||
run: |
|
|
||||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
|
||||||
echo "Building MacVim with ${NPROC} cores"
|
|
||||||
|
|
||||||
set -o verbose
|
|
||||||
make ${MAKE_BUILD_ARGS} -j${NPROC}
|
|
||||||
|
|
||||||
- name: Check version
|
|
||||||
run: |
|
|
||||||
${VIM_BIN} --version
|
|
||||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -c 'echo "\nprof_nsec:" .. has("prof_nsec") .. "\n"' -c quit
|
|
||||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
|
||||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
|
||||||
|
|
||||||
- name: Smoketest
|
|
||||||
run: |
|
|
||||||
set -o verbose
|
|
||||||
|
|
||||||
# Make sure there isn't any dynamic linkage to third-party dependencies in the built binary, as we should only use
|
|
||||||
# static linkage to avoid dependency hell. Test that all those dylib's are in /usr/lib which is bundled with macOS and not third-party.
|
|
||||||
if otool -L ${VIM_BIN} | grep '\.dylib\s' | grep -v '^\s*/usr/lib/'; then
|
|
||||||
echo 'Found external dynamic linkage!'; false
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${{ inputs.publish == true && inputs.legacy == false }}; then
|
|
||||||
# Make sure we are not using system iconv, which has been buggy since macOS 14.
|
|
||||||
if otool -L ${VIM_BIN} | grep '^\s*/usr/lib/libiconv'; then
|
|
||||||
echo 'Using system iconv! We should be linking against GNU iconv instead.'; false
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure that --disable-sparkle flag will properly exclude all references to Sparkle symbols. This is
|
|
||||||
# necessary because we still use weak linking to Sparkle when that flag is set and so references to Sparkle
|
|
||||||
# wouldn't fail the build (we just remove Sparkle.framework from the built app after the fact).
|
|
||||||
if ${{ inputs.publish == false }}; then
|
|
||||||
# Currently we pass --disable-sparkle flag when publish==false
|
|
||||||
if objdump -t ${MACVIM_BIN} | grep "_SPU\|_SUUpdate"; then
|
|
||||||
echo 'Found references to Sparkle even when using --disable-sparkle'; false
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure man pages were bundled
|
|
||||||
man -M `pwd`/${MACVIM_APP}/Contents/man -w mvim
|
|
||||||
|
|
||||||
# Make sure xxd was bundled
|
|
||||||
echo "AB" | ${MACVIM_APP}/Contents/bin/xxd | grep "4142"
|
|
||||||
|
|
||||||
- name: Smoketest (publish)
|
|
||||||
if: inputs.publish
|
|
||||||
run: |
|
|
||||||
set -o verbose
|
|
||||||
|
|
||||||
macvim_excmd() {
|
|
||||||
${VIM_BIN} -u NONE -i NONE -g -f -X -V1 -es "$@" -c 'echo ""' -c 'qall!' 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Smoketest scripting languages
|
|
||||||
macvim_excmd -c 'lua print("Test")' | grep Test
|
|
||||||
macvim_excmd -c 'perl VIM::Msg("Test")' | grep Test
|
|
||||||
macvim_excmd -c 'py3 print("Test")' | grep Test
|
|
||||||
macvim_excmd -c 'ruby puts("Test")' | grep Test
|
|
||||||
|
|
||||||
if [[ "$(uname -m)" == "x86_64" ]]; then
|
|
||||||
macvim_excmd -c 'py print "x86 Test"' | grep Test
|
|
||||||
else
|
|
||||||
# Python2 doesn't work in Apple Silicon, test under Rosetta
|
|
||||||
(VIM_BIN="arch -x86_64 ${VIM_BIN}"; macvim_excmd -c 'py print "rosetta Test"' | grep Test)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that localized messages work by printing ':version' and checking against localized word
|
|
||||||
macvim_excmd -c 'lang es_ES' -c 'version' | grep Enlazado
|
|
||||||
|
|
||||||
# Check that libsodium is working
|
|
||||||
macvim_excmd -c 'set cryptmethod=xchacha20v2'
|
|
||||||
|
|
||||||
# Make sure we are building universal x86_64 / arm64 builds and didn't accidentally create a thin app.
|
|
||||||
check_arch() {
|
|
||||||
local archs=($(lipo -archs "$1"))
|
|
||||||
if [[ ${archs[@]} != "$MACVIM_ARCHS" ]]; then
|
|
||||||
echo "Wrong arch(s) in $1: ${archs[@]}"; false
|
|
||||||
else
|
|
||||||
lipo -info "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
check_arch "${VIM_BIN}"
|
|
||||||
check_arch "${MACVIM_BIN}"
|
|
||||||
|
|
||||||
- name: Check Vim help tags
|
|
||||||
if: inputs.vimtags
|
|
||||||
run: |
|
|
||||||
# Confirm that we can build the help tags, and they match what's in source.
|
|
||||||
make -C runtime/doc vimtags VIMEXE=../../${VIM_BIN}
|
|
||||||
git diff --exit-code -- runtime/doc/tags
|
|
||||||
|
|
||||||
- name: Check Xcode project compatibility version
|
|
||||||
if: inputs['check-xcodeproj-compat']
|
|
||||||
run: |
|
|
||||||
# Confirm that the compatibility version of xcodeproj is correct and not outdated.
|
|
||||||
rm -rf src/MacVim/MacVim_xcode8.xcodeproj
|
|
||||||
make -C src macvim-xcodeproj-compat
|
|
||||||
if ! git diff --exit-code -- src/MacVim/MacVim_xcode8.xcodeproj; then
|
|
||||||
echo 'MacVim_xcode8.xcodeproj is outdated. Run "make -C src macvim-xcodeproj-compat" to re-generate it.'; false
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Test MacVim
|
|
||||||
id: test_macvim
|
|
||||||
timeout-minutes: 10
|
|
||||||
run: |
|
|
||||||
echo '::group::Build MacVim test binaries'
|
|
||||||
# Build test binaries in a separate step to allow grouping in the CI output to make the output more concise.
|
|
||||||
make ${MAKE_BUILD_ARGS} -C src macvim-tests-binaries
|
|
||||||
echo '::endgroup::'
|
|
||||||
make ${MAKE_BUILD_ARGS} -C src macvim-tests
|
|
||||||
|
|
||||||
- name: Upload failed MacVim test results
|
|
||||||
if: ${{ !cancelled() && failure() && steps.test_macvim.conclusion == 'failure' }}
|
|
||||||
uses: ./.github/actions/test_macvim_artifacts
|
|
||||||
with:
|
|
||||||
artifact-name: ${{ format('{0}-{1}', inputs.os, inputs.xcode) }}
|
|
||||||
|
|
||||||
- name: Build Vim test binaries
|
|
||||||
run: |
|
|
||||||
# Build the unit test binaries first. With link-time-optimization they take some time to link. Running them
|
|
||||||
# separately de-couples them from the timeout in tests, and allow us to build in parallel jobs (since tests
|
|
||||||
# can't run in parallel).
|
|
||||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
|
||||||
|
|
||||||
set -o verbose
|
|
||||||
make ${MAKE_BUILD_ARGS} -j${NPROC} -C src unittesttargets
|
|
||||||
|
|
||||||
- name: Test Vim
|
|
||||||
if: startsWith(github.ref, 'refs/tags/') || !inputs.testgui
|
|
||||||
timeout-minutes: 30
|
|
||||||
run: |
|
|
||||||
defaults delete org.vim.MacVim # Clean up stale states
|
|
||||||
# Currently we don't run any non-src tests, as syntax tests are fragile and prone to spamming escape codes.
|
|
||||||
# This needs to be investigated and fixed upstream.
|
|
||||||
# MacVim is unlikely to introduce breaking changes in runtime files anyway.
|
|
||||||
make ${MAKE_BUILD_ARGS} -C src test
|
|
||||||
|
|
||||||
- name: Test Vim (GUI)
|
|
||||||
if: startsWith(github.ref, 'refs/tags/') || inputs.testgui
|
|
||||||
timeout-minutes: 30
|
|
||||||
run: |
|
|
||||||
defaults delete org.vim.MacVim # Clean up stale states
|
|
||||||
make ${MAKE_BUILD_ARGS} -C src/testdir clean
|
|
||||||
make ${MAKE_BUILD_ARGS} -C src testgui
|
|
||||||
|
|
||||||
- name: Upload failed test files
|
|
||||||
if: ${{ !cancelled() && failure() }}
|
|
||||||
uses: ./.github/actions/test_artifacts
|
|
||||||
with:
|
|
||||||
artifact-name: ${{ format('{0}-{1}', inputs.os, inputs.xcode) }}
|
|
||||||
|
|
||||||
- name: Build MacVim dmg image
|
|
||||||
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
|
||||||
run: |
|
|
||||||
if ${{ inputs.legacy == true }}; then
|
|
||||||
make -C src macvim-dmg-legacy
|
|
||||||
else
|
|
||||||
make -C src macvim-dmg
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${{ inputs.publish_postfix != '' }}; then
|
|
||||||
mv src/MacVim/build/Release/MacVim.dmg src/MacVim/build/Release/MacVim${{ inputs.publish_postfix }}.dmg
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Upload the dmg installer only when making tagged release or making a dev build from a master branch.
|
|
||||||
# Note that this doesn't create a GitHub release for us, because we would prefer to do it manually, for two
|
|
||||||
# reasons: 1) signing / notarization are currently done out of CI, 2) we want to manually format our release notes
|
|
||||||
# and add pictures to make them look nice.
|
|
||||||
- name: Upload MacVim image
|
|
||||||
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
|
||||||
uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
name: MacVim${{ inputs.publish_postfix }}.dmg
|
|
||||||
path: src/MacVim/build/Release/MacVim${{ inputs.publish_postfix }}.dmg
|
|
||||||
|
|
||||||
# If doing a tagged release, use repository-specified number of retention days (usually 90 days) to make it
|
|
||||||
# easier to audit. (specify "0" to indicate using repository settings)
|
|
||||||
#
|
|
||||||
# Otherwise, we are just doing a dev build for potential testing, just use a maximum of 21 days as we don't
|
|
||||||
# tend to need these for long.
|
|
||||||
retention-days: ${{ startsWith(github.ref, 'refs/tags/') && 0 || (github.retention_days > 21 && 21 || 0) }}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
name: Close inactive issues
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "45 3 * * *" # 3:45 am UTC. Just a random time intentionally picked to be not during busy hours.
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
close-issues:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/stale@v10
|
|
||||||
with:
|
|
||||||
any-of-labels: "Response Needed"
|
|
||||||
days-before-stale: 45
|
|
||||||
days-before-close: 7
|
|
||||||
stale-issue-message: "This issue is stale because it has been waiting for a response for 45 days with no activity."
|
|
||||||
stale-pr-message: "This pull request is stale because it has been waiting for a response for 45 days with no activity."
|
|
||||||
close-issue-reason: "not_planned"
|
|
||||||
-182
@@ -1,182 +0,0 @@
|
|||||||
# Unixen: object and executable files.
|
|
||||||
*.o
|
|
||||||
src/vim
|
|
||||||
src/xxd/xxd
|
|
||||||
src/auto/if_perl.c
|
|
||||||
src/auto/gui_gtk_gresources.c
|
|
||||||
src/auto/gui_gtk_gresources.h
|
|
||||||
src/auto/os_haiku.rdef
|
|
||||||
src/objects/.dirstamp
|
|
||||||
src/objects
|
|
||||||
src/po/big5corr
|
|
||||||
src/po/sjiscorr
|
|
||||||
src/types.vim
|
|
||||||
src/tmp_make
|
|
||||||
|
|
||||||
# We do need src/auto/configure.
|
|
||||||
src/auto/config.cache
|
|
||||||
src/auto/config.h
|
|
||||||
src/auto/config.log
|
|
||||||
src/auto/config.mk
|
|
||||||
src/auto/config.status
|
|
||||||
src/auto/osdef.h
|
|
||||||
src/auto/link.log
|
|
||||||
src/auto/link.sed
|
|
||||||
src/auto/pathdef.c
|
|
||||||
src/auto/wayland/*.c
|
|
||||||
src/auto/wayland/*.h
|
|
||||||
|
|
||||||
# Windows
|
|
||||||
*.exe
|
|
||||||
*.idb
|
|
||||||
*.exp
|
|
||||||
*.map
|
|
||||||
*.obj
|
|
||||||
*.pdb
|
|
||||||
*.ilk
|
|
||||||
*.sln
|
|
||||||
*.suo
|
|
||||||
*.res
|
|
||||||
*.RES
|
|
||||||
vim*.dll
|
|
||||||
vim*.lib
|
|
||||||
src/dobj*/pathdef.c
|
|
||||||
src/gobj*/pathdef.c
|
|
||||||
src/obj*/pathdef.c
|
|
||||||
src/Obj*/pathdef.c
|
|
||||||
gvimext.dll
|
|
||||||
gvimext.lib
|
|
||||||
gvim.lib
|
|
||||||
runtime/doc/uganda.nsis.txt
|
|
||||||
nsis/icons/*
|
|
||||||
/vim90/
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# NetBeans
|
|
||||||
nbproject/*
|
|
||||||
|
|
||||||
# Mac OSX
|
|
||||||
src/xxd/xxd.dSYM
|
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
# All platforms
|
|
||||||
*.rej
|
|
||||||
*.orig
|
|
||||||
*.mo
|
|
||||||
*.swp
|
|
||||||
*~
|
|
||||||
*.pyc
|
|
||||||
*.log
|
|
||||||
src/tags
|
|
||||||
/tags
|
|
||||||
/GPATH
|
|
||||||
/GTAGS
|
|
||||||
/GRTAGS
|
|
||||||
nsis/tags
|
|
||||||
|
|
||||||
# Generated by "make test"
|
|
||||||
src/po/*.ck
|
|
||||||
src/po/*.desktop
|
|
||||||
src/testdir/mbyte.vim
|
|
||||||
src/testdir/mzscheme.vim
|
|
||||||
src/testdir/lua.vim
|
|
||||||
src/testdir/small.vim
|
|
||||||
src/testdir/tiny.vim
|
|
||||||
src/testdir/test*.out
|
|
||||||
src/testdir/test*.failed
|
|
||||||
src/testdir/test.log
|
|
||||||
src/testdir/dostmp/*
|
|
||||||
src/testdir/messages
|
|
||||||
src/testdir/viminfo
|
|
||||||
src/testdir/opt_test.vim
|
|
||||||
src/testdir/failed
|
|
||||||
src/testdir/starttime
|
|
||||||
runtime/indent/testdir/*.out
|
|
||||||
runtime/indent/testdir/*.fail
|
|
||||||
src/memfile_test
|
|
||||||
src/json_test
|
|
||||||
src/message_test
|
|
||||||
src/kword_test
|
|
||||||
|
|
||||||
# From MacVim
|
|
||||||
.*.swp
|
|
||||||
.DS_Store
|
|
||||||
src/MacVim/MacVim*.xcodeproj/*.mode1
|
|
||||||
src/MacVim/MacVim*.xcodeproj/*.mode1v3
|
|
||||||
src/MacVim/MacVim*.xcodeproj/*.pbxuser
|
|
||||||
src/MacVim/MacVim*.xcodeproj/project.xcworkspace
|
|
||||||
src/MacVim/MacVim*.xcodeproj/xcuserdata
|
|
||||||
src/MacVim/icons/*.pyc
|
|
||||||
src/MacVim/icons/*.ttf
|
|
||||||
src/MacVim/icons/*.reg
|
|
||||||
src/MacVim/icons/*.zip
|
|
||||||
src/MacVim/icons/*.txt
|
|
||||||
src/MacVim/icons/*.so
|
|
||||||
src/MacVim/icons/*.egg-info
|
|
||||||
src/MacVim/icons/build
|
|
||||||
src/MacVim/icons/makeicns/*.o
|
|
||||||
src/MacVim/icons/makeicns/makeicns
|
|
||||||
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.mode1
|
|
||||||
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.mode1v3
|
|
||||||
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.pbxuser
|
|
||||||
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/xcuserdata
|
|
||||||
src/MacVim/PSMTabBarControl/build
|
|
||||||
src/MacVim/qlstephen/QuickLookStephen.xcodeproj/*.mode1
|
|
||||||
src/MacVim/qlstephen/QuickLookStephen.xcodeproj/*.mode1v3
|
|
||||||
src/MacVim/qlstephen/QuickLookStephen.xcodeproj/*.pbxuser
|
|
||||||
src/MacVim/qlstephen/QuickLookStephen.xcodeproj/xcuserdata
|
|
||||||
src/MacVim/qlstephen/build
|
|
||||||
src/MacVim/build
|
|
||||||
src/MacVim/auto
|
|
||||||
src/MacVim/DerivedData
|
|
||||||
src/TAGS
|
|
||||||
src/Vim
|
|
||||||
src/auto/config.cache
|
|
||||||
src/auto/config.h
|
|
||||||
src/auto/config.log
|
|
||||||
src/auto/config.mk
|
|
||||||
src/auto/config.status
|
|
||||||
src/auto/if_perl.c
|
|
||||||
src/auto/link.log
|
|
||||||
src/auto/link.sed
|
|
||||||
src/auto/osdef.h
|
|
||||||
src/auto/pathdef.c
|
|
||||||
src/config.log
|
|
||||||
src/config.status
|
|
||||||
src/objects
|
|
||||||
src/po/*.mo
|
|
||||||
src/tags
|
|
||||||
src/xxd/xxd
|
|
||||||
src/xxd/xxd.dSYM
|
|
||||||
src/a.out.dSYM
|
|
||||||
|
|
||||||
runtime/syntax/testdir/done/
|
|
||||||
runtime/syntax/testdir/messages
|
|
||||||
runtime/syntax/testdir/testdeps.mk
|
|
||||||
runtime/syntax/testdir/vimcmd
|
|
||||||
|
|
||||||
# Generated by "make install"
|
|
||||||
runtime/doc/doctags
|
|
||||||
runtime/doc/tags-*
|
|
||||||
|
|
||||||
# Temporarily generated by "runtime/syntax/generator/make"
|
|
||||||
runtime/syntax/generator/generator.err
|
|
||||||
runtime/syntax/generator/sanity_check.err
|
|
||||||
runtime/syntax/generator/vim.vim.rc
|
|
||||||
|
|
||||||
# Generated by "make shadow". The directory names could be anything but we
|
|
||||||
# restrict them to shadow (the default) or shadow-*
|
|
||||||
src/shadow
|
|
||||||
src/shadow-*
|
|
||||||
src/runtime
|
|
||||||
src/pixmaps
|
|
||||||
src/LICENSE
|
|
||||||
src/README.txt
|
|
||||||
|
|
||||||
# other files possibly created by tools
|
|
||||||
src/cscope.out
|
|
||||||
|
|
||||||
# Linter/language server files
|
|
||||||
/.cache/clangd/
|
|
||||||
/.ccls-cache/
|
|
||||||
/compile_commands.json
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
syntax: glob
|
|
||||||
|
|
||||||
# Unixen: object and executable files.
|
|
||||||
*.o
|
|
||||||
src/vim
|
|
||||||
src/xxd/xxd
|
|
||||||
src/auto/if_perl.c
|
|
||||||
src/auto/gui_gtk_gresources.c
|
|
||||||
src/auto/gui_gtk_gresources.h
|
|
||||||
src/auto/os_haiku.rdef
|
|
||||||
src/objects/.dirstamp
|
|
||||||
src/objects
|
|
||||||
src/po/big5corr
|
|
||||||
src/po/sjiscorr
|
|
||||||
src/types.vim
|
|
||||||
|
|
||||||
# We do need src/auto/configure.
|
|
||||||
src/auto/config.cache
|
|
||||||
src/auto/config.h
|
|
||||||
src/auto/config.log
|
|
||||||
src/auto/config.mk
|
|
||||||
src/auto/config.status
|
|
||||||
src/auto/osdef.h
|
|
||||||
src/auto/link.log
|
|
||||||
src/auto/link.sed
|
|
||||||
src/auto/pathdef.c
|
|
||||||
src/auto/wayland/*.c
|
|
||||||
src/auto/wayland/*.h
|
|
||||||
|
|
||||||
# Windows
|
|
||||||
*.exe
|
|
||||||
*.idb
|
|
||||||
*.exp
|
|
||||||
*.map
|
|
||||||
*.obj
|
|
||||||
*.pdb
|
|
||||||
*.ilk
|
|
||||||
*.sln
|
|
||||||
*.suo
|
|
||||||
*.res
|
|
||||||
*.RES
|
|
||||||
vim*.dll
|
|
||||||
vim*.lib
|
|
||||||
src/dobj*/pathdef.c
|
|
||||||
src/gobj*/pathdef.c
|
|
||||||
src/obj*/pathdef.c
|
|
||||||
src/Obj*/pathdef.c
|
|
||||||
gvimext.dll
|
|
||||||
gvimext.lib
|
|
||||||
gvim.lib
|
|
||||||
runtime/doc/uganda.nsis.txt
|
|
||||||
nsis/icons/*
|
|
||||||
/vim90/
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# NetBeans
|
|
||||||
nbproject/*
|
|
||||||
|
|
||||||
# Mac OSX
|
|
||||||
src/xxd/xxd.dSYM
|
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
# All platforms
|
|
||||||
*.rej
|
|
||||||
*.orig
|
|
||||||
*.mo
|
|
||||||
*.swp
|
|
||||||
*~
|
|
||||||
*.pyc
|
|
||||||
*.log
|
|
||||||
src/tags
|
|
||||||
/tags
|
|
||||||
/GPATH
|
|
||||||
/GTAGS
|
|
||||||
/GRTAGS
|
|
||||||
nsis/tags
|
|
||||||
|
|
||||||
# Generated by "make test"
|
|
||||||
src/po/*.ck
|
|
||||||
src/po/*.desktop
|
|
||||||
src/testdir/mbyte.vim
|
|
||||||
src/testdir/mzscheme.vim
|
|
||||||
src/testdir/lua.vim
|
|
||||||
src/testdir/small.vim
|
|
||||||
src/testdir/tiny.vim
|
|
||||||
src/testdir/test*.out
|
|
||||||
src/testdir/test*.failed
|
|
||||||
src/testdir/test.log
|
|
||||||
src/testdir/dostmp/*
|
|
||||||
src/testdir/messages
|
|
||||||
src/testdir/viminfo
|
|
||||||
src/testdir/opt_test.vim
|
|
||||||
src/testdir/failed
|
|
||||||
src/testdir/starttime
|
|
||||||
runtime/indent/testdir/*.out
|
|
||||||
runtime/indent/testdir/*.fail
|
|
||||||
src/memfile_test
|
|
||||||
src/json_test
|
|
||||||
src/message_test
|
|
||||||
src/kword_test
|
|
||||||
|
|
||||||
runtime/syntax/testdir/done/
|
|
||||||
runtime/syntax/testdir/messages
|
|
||||||
runtime/syntax/testdir/testdeps.mk
|
|
||||||
runtime/syntax/testdir/vimcmd
|
|
||||||
|
|
||||||
# Generated by "make install"
|
|
||||||
runtime/doc/doctags
|
|
||||||
runtime/doc/tags-*
|
|
||||||
|
|
||||||
# Temporarily generated by "runtime/syntax/generator/make"
|
|
||||||
runtime/syntax/generator/generator.err
|
|
||||||
runtime/syntax/generator/sanity_check.err
|
|
||||||
runtime/syntax/generator/vim.vim.rc
|
|
||||||
|
|
||||||
# Generated by "make shadow". The directory names could be anything but we
|
|
||||||
# restrict them to shadow (the default) or shadow-*
|
|
||||||
src/shadow
|
|
||||||
src/shadow-*
|
|
||||||
src/runtime
|
|
||||||
src/pixmaps
|
|
||||||
src/LICENSE
|
|
||||||
src/README.txt
|
|
||||||
|
|
||||||
# other files possibly created by tools
|
|
||||||
src/cscope.out
|
|
||||||
|
|
||||||
# Linter/language server files
|
|
||||||
.cache/clangd/
|
|
||||||
.ccls-cache/
|
|
||||||
compile_commands.json
|
|
||||||
@@ -1,325 +0,0 @@
|
|||||||
# AGENTS.md
|
|
||||||
|
|
||||||
Guidance for AI coding agents working in the Vim repository.
|
|
||||||
|
|
||||||
## Project
|
|
||||||
|
|
||||||
Vim is a text editor written in C. The canonical repository is
|
|
||||||
https://github.com/vim/vim. The code is old and has grown organically over
|
|
||||||
the past 30+ years. Some files are vendored from upstream projects
|
|
||||||
(`src/xdiff`, `src/libvterm`); parts of the runtime are occasionally shared
|
|
||||||
with forks like Neovim.
|
|
||||||
|
|
||||||
Vim strives to be portable across several different operating systems and
|
|
||||||
aims to be a stable, robust editor gradually developing new features while
|
|
||||||
remaining backwards compatible as much as possible.
|
|
||||||
|
|
||||||
At the same time, Vim can be compiled with different feature sets, from the
|
|
||||||
POSIX compatible minimal vi to a full-fledged GUI editor which includes
|
|
||||||
additional scripting interfaces.
|
|
||||||
|
|
||||||
See `runtime/doc/develop.txt` for the high level design goals.
|
|
||||||
|
|
||||||
## Build and test
|
|
||||||
|
|
||||||
# Full build on Unix/Linux (from src/):
|
|
||||||
make
|
|
||||||
|
|
||||||
# Run the full test suite:
|
|
||||||
make test
|
|
||||||
|
|
||||||
# Generate proto files
|
|
||||||
make proto
|
|
||||||
|
|
||||||
# Run a single test file:
|
|
||||||
cd src/testdir && make test_name.res
|
|
||||||
|
|
||||||
Output is in testdir/messages and testdir/test.log
|
|
||||||
|
|
||||||
Builds on Windows depend on the Environment, see `src/INSTALLpc.txt`
|
|
||||||
for Cygwin/MSYS and MSVC ways to build Vim
|
|
||||||
|
|
||||||
Before submitting any patch, at minimum:
|
|
||||||
1. The build succeeds without new warnings.
|
|
||||||
2. Relevant tests pass.
|
|
||||||
3. The code matches the style of the file being edited.
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
|
|
||||||
- `src/` - the C source. Subsystem names are usually obvious from filenames
|
|
||||||
(`buffer.c`, `window.c`, `search.c`, `vim9compile.c`, etc.).
|
|
||||||
- `src/proto/` - function prototypes, one `.pro` file per source file.
|
|
||||||
Regenerated; do not hand-edit unless you know what you're doing.
|
|
||||||
- `src/po` - Translations
|
|
||||||
- `src/xxd` - for the xxd subproject
|
|
||||||
- `src/xdiff` - for the xdiff library (imported from git)
|
|
||||||
- `src/libvterm` - for the libvterm library
|
|
||||||
- `src/testdir/` - tests. Vim-script files named `test_*.vim`.
|
|
||||||
Screendump expected output lives in `src/testdir/dumps/`.
|
|
||||||
- `runtime/doc/` - user-facing documentation in Vim help format, when updating,
|
|
||||||
also update the Last Change header
|
|
||||||
- `runtime/syntax/generator` - Syntax script for Vim Script, automatically generated
|
|
||||||
from Vims source
|
|
||||||
- `runtime/` - runtime files shipped with Vim, when updating, also update the
|
|
||||||
Last Change header and a short description if this file has no maintainer
|
|
||||||
If the file has a maintainer, changes should go via them (so make a merge
|
|
||||||
request against the upstream repo instead)
|
|
||||||
- `src/version.c` - contains the `included_patches[]` list. Every
|
|
||||||
patch touching anything below `src/` (with the exception of `src/po`) needs a
|
|
||||||
new entry at the top, will be updated only when merging into
|
|
||||||
the master tree.
|
|
||||||
|
|
||||||
## Commit format
|
|
||||||
|
|
||||||
Vim uses a strict commit message format. The subject line is a
|
|
||||||
one-sentence **problem statement**, not a description of the fix:
|
|
||||||
|
|
||||||
patch 9.2.NNNN: short description of the problem
|
|
||||||
|
|
||||||
Problem: Restatement of the problem as a full sentence, possibly
|
|
||||||
with a reporter attribution in parentheses.
|
|
||||||
Solution: Short description of the fix, ending with the author's
|
|
||||||
name in parentheses.
|
|
||||||
|
|
||||||
optional longer description of the problem and solution goes here in prose.
|
|
||||||
Do not use bullet points.
|
|
||||||
|
|
||||||
fixes: #NNNN
|
|
||||||
related: #NNNN
|
|
||||||
closes: #NNNN
|
|
||||||
|
|
||||||
Co-authored-by: Name
|
|
||||||
Signed-off-by: Author Name <email>
|
|
||||||
|
|
||||||
Rules:
|
|
||||||
|
|
||||||
- **Subject line states the problem**, not the solution. "fix typo" is
|
|
||||||
wrong; "typo in foo() causes OOB read" is right.
|
|
||||||
- **Problem line is a full sentence with a trailing period.** It mirrors
|
|
||||||
the subject.
|
|
||||||
- **Solution line ends with `(Author Name)`** — parentheses, period
|
|
||||||
after them.
|
|
||||||
- **Longer prose**, if any, goes after the Problem/Solution header
|
|
||||||
- **`fixes:` references the issue** the patch fixes.
|
|
||||||
**`closes:` references the PR** that introduces the fix.
|
|
||||||
**`related:` references related issues**, including issues that caused this
|
|
||||||
one.
|
|
||||||
All can appear. Colon, aligned, no trailing period.
|
|
||||||
- **`Signed-off-by:` is required** — DCO.
|
|
||||||
- **`Co-Authored-By:` is allowed** and is the accepted way to
|
|
||||||
acknowledge AI assistance transparently. Human
|
|
||||||
coauthors should usually also have their own Signed-off-by.
|
|
||||||
|
|
||||||
## C code conventions
|
|
||||||
|
|
||||||
- **Indentation is 4 spaces per level.** Existing files use tabs with
|
|
||||||
`ts=8 sts=4 sw=4 noet` (set by the modeline in the file),
|
|
||||||
so tabs of width 8 appear where two levels of indent collapse. `sign.c`,
|
|
||||||
`sound.c`, and any new file must use spaces only and follow the style from
|
|
||||||
the .editorconfig file.
|
|
||||||
- **Opening braces go on their own line (Allman style)** — for function
|
|
||||||
definitions and for control-flow constructs (`if`/`else`/`for`/`while`/
|
|
||||||
`do`) alike.
|
|
||||||
- **Function definitions**: return type on its own indented line, with
|
|
||||||
the function name beginning on the next line.
|
|
||||||
- Initialize locals where a reader cannot trivially see the first
|
|
||||||
assignment (common for pointers and return-value accumulators).
|
|
||||||
Don't add `= 0` initializers for values that are always assigned
|
|
||||||
before use — they can hide real uninitialized-read bugs from
|
|
||||||
the compiler.
|
|
||||||
- `for (int i = 0; ...)` loop declarations are fine in files that
|
|
||||||
use them; older files may declare the counter at the top of the
|
|
||||||
block.
|
|
||||||
- **Function-scope declarations at the top of a block** is the historical
|
|
||||||
style, but mid-block declarations are acceptable in files that have
|
|
||||||
adopted them. Match the surrounding code.
|
|
||||||
- **Custom types end in `_T`** (e.g., `buf_T`, `linenr_T`, `pos_T`).
|
|
||||||
Never use `_t` — it collides with POSIX typedefs.
|
|
||||||
- **C language is C95 plus specific C99 features**: `//` comments,
|
|
||||||
mixed declarations and statements, `__func__`, `bool`/`_Bool`,
|
|
||||||
variadic macros, compound literals, `static inline`, trailing enum
|
|
||||||
commas. Do not reach for later C standards — Vim still must build
|
|
||||||
with Compaq C on OpenVMS. See `*assumptions-C-compiler*` in
|
|
||||||
`develop.txt` for the full list.
|
|
||||||
- **`bool` / `true` / `false` are acceptable.** Vim is transitioning
|
|
||||||
from `int` with `TRUE`/`FALSE` to C99 `bool`. Do not "fix" `bool`
|
|
||||||
back to `int`. Within a single patch, be consistent — don't mix
|
|
||||||
`true` and `TRUE` in new code.
|
|
||||||
- **Do not mass-convert** `TRUE`/`FALSE` to `true`/`false` across files
|
|
||||||
unless that is the patch's explicit purpose. Opportunistic
|
|
||||||
conversions create noise in diffs.
|
|
||||||
- **`STRLEN_LITERAL("...")`** should be used when the length of a
|
|
||||||
string literal is needed. Avoid `STRLEN()` on literals.
|
|
||||||
- **`vim_snprintf_safelen()`** returns the written length; prefer it
|
|
||||||
over `vim_snprintf()` when the length is then needed.
|
|
||||||
- **Prefer `dict_add_string_len()`** when the string length is already
|
|
||||||
known, over `dict_add_string()` which calls `STRLEN()`.
|
|
||||||
- **String/buffer parameters go `(char_u *buf, size_t buflen)`** —
|
|
||||||
length alongside pointer, in bytes. Use `size_t` for byte counts,
|
|
||||||
`int` only where required by legacy APIs.
|
|
||||||
- **Guards before divisions.** Check for divisor zero explicitly, even
|
|
||||||
when a composite earlier guard would prevent it. Relying on
|
|
||||||
transitive guards is fragile.
|
|
||||||
- When introducing new allocations, verify the cleanup paths handle all exit
|
|
||||||
conditions (early return, error branches, etc).
|
|
||||||
|
|
||||||
**Use Vim wrappers instead of libc where one exists:**
|
|
||||||
|
|
||||||
| libc | Vim | Why |
|
|
||||||
|---------------|------------------------|-----------------------------|
|
|
||||||
| `free()` | `vim_free()` | Tolerates NULL |
|
|
||||||
| `malloc()` | `alloc()` / `lalloc()` | Checks for OOM |
|
|
||||||
| `strcpy()` | `STRCPY()` | Cast for `char_u *` |
|
|
||||||
| `strchr()` | `vim_strchr()` | Handles special characters |
|
|
||||||
| `strrchr()` | `vim_strrchr()` | Handles special characters |
|
|
||||||
| `memcpy()` | `mch_memmove()` | Handles overlapping copies |
|
|
||||||
| `bcopy()` | `mch_memmove()` | Handles overlapping copies |
|
|
||||||
| `memset()` | `vim_memset()` | Uniform across systems |
|
|
||||||
| `isspace()` | `vim_isspace()` | Handles bytes > 127 |
|
|
||||||
| `iswhite()` | `vim_iswhite()` | TRUE only for tab and space |
|
|
||||||
|
|
||||||
Further rules, not spelled out here, live in `runtime/doc/develop.txt`:
|
|
||||||
|
|
||||||
- `*style-names*` — reserved name patterns (`is*`, `to*`, `str*`, `mem*`,
|
|
||||||
`wcs*`, `.*_t`, `__.*`), forbidden identifiers (`delete`, `this`, `new`,
|
|
||||||
`time`, `index`), and the 31-character function-name limit.
|
|
||||||
- `*style-spaces*`, `*style-examples*` — spacing and one-statement-per-line.
|
|
||||||
- `*style-various*` — `FEAT_` feature prefix, uppercase `#define`,
|
|
||||||
`#ifdef HAVE_X` rather than `#if HAVE_X`, no `'\"'`.
|
|
||||||
- `*assumptions-makefiles*` — POSIX.1-2001 `make` only in the main
|
|
||||||
Makefiles (no `%` rules, `:=`, `.ONESHELL`, GNU conditionals).
|
|
||||||
- Vim uses `char_u` instead of `char` type
|
|
||||||
- Vim uses the macros `STRLEN`, `STRCPY`, `STRCMP`, `STRCAT` that work
|
|
||||||
with the `char_u` type.
|
|
||||||
- `*style-clang-format*` — `sign.c` and `sound.c` are formatted with
|
|
||||||
`clang-format`; re-run it after editing those files.
|
|
||||||
|
|
||||||
## Vim9 script conventions (in tests and runtime files)
|
|
||||||
|
|
||||||
- Write modern Vim style (new files can use Vim9 script, but compatibility
|
|
||||||
with Neovim and other forks is a concern, so in doubt please ask!)
|
|
||||||
- **Drop `l:` prefix from local variables** in Vim-script tests.
|
|
||||||
- **Don't add `CheckFeature` inside individual tests** if it's already
|
|
||||||
at the top of the file.
|
|
||||||
- If a test file doesn't gate features at the top, add CheckFeature to
|
|
||||||
individual tests that depend on specific build features.
|
|
||||||
|
|
||||||
## Test conventions
|
|
||||||
|
|
||||||
- Tests are in `src/testdir/test_*.vim`.
|
|
||||||
- Reproducible tests beat "it doesn't crash" tests. If a patch fixes
|
|
||||||
a rendering bug, add a screendump test. If it fixes incorrect output,
|
|
||||||
assert the output.
|
|
||||||
- Add comprehensive tests for newly added features and include them
|
|
||||||
in existing tests if possible
|
|
||||||
- **Screendump tests** use `CheckScreendump`, `RunVimInTerminal`,
|
|
||||||
`VerifyScreenDump`, and live dumps in `src/testdir/dumps/`.
|
|
||||||
- `v9.CheckScriptSuccess(lines)` / `v9.CheckScriptFailure(lines, error, lnum)`
|
|
||||||
are the standard way to test Vim9 script behavior at script-load time.
|
|
||||||
- When fixing a bug reported as an issue, include a test that
|
|
||||||
reproduces the original report, not just a minimal synthetic case.
|
|
||||||
- Tests for Syntax runtime are in `runtime/syntax/testdir`
|
|
||||||
- Tests for Indent runtime are in `runtime/indent/testdir`
|
|
||||||
|
|
||||||
## Common gotchas
|
|
||||||
|
|
||||||
- **Distinguish what code enforces from what docs claim.** If a patch
|
|
||||||
changes documented behavior, say so in the Problem/Solution.
|
|
||||||
- **Generated files** (`src/auto/configure`, generated Wayland protocol
|
|
||||||
C, etc.) should only be regenerated when their source changes.
|
|
||||||
Mixing unrelated regeneration into a functional patch creates noise.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
- User-facing option or feature changes require a `runtime/doc/*.txt`
|
|
||||||
update in the same patch.
|
|
||||||
- When editing an existing help file, bump the `Last change:` header
|
|
||||||
at the top.
|
|
||||||
|
|
||||||
### Help file style
|
|
||||||
|
|
||||||
See `runtime/doc/helphelp.txt` (`*help-writing*`) for the authoritative
|
|
||||||
reference. Key conventions:
|
|
||||||
|
|
||||||
- **File header**: first line is `*filename.txt*` then a tab then a
|
|
||||||
short description. That description appears under `LOCAL ADDITIONS`
|
|
||||||
in `help.txt`. The version and `Last change:` date go on the second
|
|
||||||
line, right aligned.
|
|
||||||
- **Modeline**: every help file ends with a Vim modeline — typically
|
|
||||||
`vim:tw=78:ts=8:noet:ft=help:norl:`.
|
|
||||||
- **Layout**: `'textwidth'` 78, `'tabstop'` 8, indent and align with
|
|
||||||
tab characters. Two spaces between sentences. Run `:retab`
|
|
||||||
(not `:retab!`, and review the diff) after editing.
|
|
||||||
- **Tags** are defined as `*tag-name*`, usually right-aligned on the
|
|
||||||
line where the thing they name is introduced. Tag names must be
|
|
||||||
unique across all of `runtime/doc/`; for plugin help, prefix with
|
|
||||||
the plugin name.
|
|
||||||
- **Cross-references inside help text**:
|
|
||||||
- `|tag-name|` — hot-link to an existing tag.
|
|
||||||
- `` `:cmd` `` — Ex command, highlighted as a code block.
|
|
||||||
- `'option'` — option name, in single quotes.
|
|
||||||
- `<Key>` or `CTRL-X` — special keys.
|
|
||||||
- `{placeholder}` — user-supplied argument.
|
|
||||||
- **Sections** are separated by a line of `=` starting in column 1.
|
|
||||||
Column or subsection headings end with `~` to trigger heading
|
|
||||||
highlighting.
|
|
||||||
- **Code blocks** start with `>` at the end of the introducing line
|
|
||||||
and end with `<` as the first non-blank on a later line (any line
|
|
||||||
starting in column 1 also implicitly closes the block). Use `>vim`
|
|
||||||
(or another language name) to request syntax highlighting inside
|
|
||||||
the block.
|
|
||||||
- **Notation** — `Note`, `Todo`, `Error` and a few similar words are
|
|
||||||
auto-highlighted; do not try to fake the highlighting by other means.
|
|
||||||
- **Language**: gender-neutral language is preferred for new or updated
|
|
||||||
text; existing wording does not need to be rewritten for this alone.
|
|
||||||
|
|
||||||
## Release policy
|
|
||||||
|
|
||||||
Vim alternates between development cycles and stability periods — see
|
|
||||||
`runtime/doc/develop.txt` `*design-policy*`.
|
|
||||||
|
|
||||||
- **During a stability period** only clear bug fixes, security fixes,
|
|
||||||
documentation updates, translations, and runtime file updates are
|
|
||||||
accepted. No new features, no backwards-incompatible changes.
|
|
||||||
- **Once released in a minor version**, C-core features must stay
|
|
||||||
backwards-compatible. Runtime files have a bit more flexibility so
|
|
||||||
their maintainers can correct old behavior.
|
|
||||||
- **Deprecated features** stay reachable via config (do not hard-error),
|
|
||||||
are documented as deprecated, can be disabled at compile time, and
|
|
||||||
may be removed in a later cycle.
|
|
||||||
|
|
||||||
## Security
|
|
||||||
|
|
||||||
Before reporting a suspected security issue or submitting a patch
|
|
||||||
that touches security-sensitive code, read `SECURITY.md`. Follow
|
|
||||||
the disclosure process described there.
|
|
||||||
|
|
||||||
## Before submitting
|
|
||||||
|
|
||||||
1. Commit message follows the format above.
|
|
||||||
2. All modified code compiles without new warnings.
|
|
||||||
3. Tests pass, and new functionality has regression tests.
|
|
||||||
4. Documentation is updated for user-visible changes.
|
|
||||||
5. Signed-off-by is present.
|
|
||||||
6. Diff contains only changes relevant to the stated problem —
|
|
||||||
no stray whitespace fixes, no unrelated refactors, no unrelated
|
|
||||||
regeneration of `auto/configure`.
|
|
||||||
7. For multi-patch series: each commit compiles and passes its own
|
|
||||||
tests. A known-broken intermediate state that a later patch fixes
|
|
||||||
is not acceptable — squash instead.
|
|
||||||
|
|
||||||
## When in doubt
|
|
||||||
|
|
||||||
- Make the smallest possible change to achieve the goal. Do not rewrite
|
|
||||||
entire files or functions when a targeted edit suffices.
|
|
||||||
- Read surrounding code and match its style rather than imposing an
|
|
||||||
"improvement."
|
|
||||||
- Err toward smaller, more focused patches. A patch that does three
|
|
||||||
things is three patches.
|
|
||||||
- If a patch fixes a symptom of a deeper bug, say so in the Problem
|
|
||||||
and acknowledge the scope limitation in the Solution.
|
|
||||||
- Before claiming a bug exists, reproduce it. Before claiming code does X, read
|
|
||||||
the code. Do not rely on training-data memory of file contents.
|
|
||||||
- Before running shell commands that modify files outside the working tree,
|
|
||||||
install packages, push branches, or invoke network operations, confirm with
|
|
||||||
the user.
|
|
||||||
-174
@@ -1,174 +0,0 @@
|
|||||||
# Contributing to Vim
|
|
||||||
|
|
||||||
Patches are welcome in whatever form.
|
|
||||||
Discussions about patches happen on the [vim-dev][0] mailing list.
|
|
||||||
If you create a pull request on GitHub it will be
|
|
||||||
forwarded to the vim-dev mailing list. You can also send your patch there
|
|
||||||
directly (but please note, the initial posting is subject to moderation).
|
|
||||||
In that case an attachment with a unified diff format is preferred.
|
|
||||||
Information about the mailing list can be found [on the Vim website][0]
|
|
||||||
|
|
||||||
A pull request has the advantage that it will trigger the Continuous
|
|
||||||
Integration tests, you will be warned of problems (you can ignore the coverage
|
|
||||||
warning, it's noisy).
|
|
||||||
|
|
||||||
Please always add a test, if possible. All new functionality should be tested
|
|
||||||
and bug fixes should be tested for regressions: the test should fail before the
|
|
||||||
fix and pass after the fix. Look through recent patches for examples and find
|
|
||||||
help with ":help testing". The tests are located under "src/testdir".
|
|
||||||
|
|
||||||
Contributions will be distributed with Vim under the Vim license. Providing a
|
|
||||||
change to be included implies that you agree with this and your contribution
|
|
||||||
does not cause us trouble with trademarks or patents. There is no CLA to sign.
|
|
||||||
|
|
||||||
## Signing-off commits
|
|
||||||
|
|
||||||
While not required, it's recommended to use **Signed-off commits** to ensure
|
|
||||||
transparency, accountability, and compliance with open-source best practices.
|
|
||||||
Signed-off commits follow the [Developer Certificate of Origin (DCO)][15],
|
|
||||||
which confirms that contributors have the right to submit their changes under
|
|
||||||
the project's license. This process adds a `Signed-off-by` line to commit
|
|
||||||
messages, verifying that the contributor agrees to the project's licensing
|
|
||||||
terms. To sign off a commit, simply use the -s flag when committing:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git commit -s
|
|
||||||
```
|
|
||||||
|
|
||||||
This ensures that every contribution is properly documented and traceable,
|
|
||||||
aligning with industry standards used in projects like the Linux Kernel or
|
|
||||||
the git project. By making Signed-off commits a standard practice, we help
|
|
||||||
maintain a legally compliant and well-governed codebase while fostering trust
|
|
||||||
within our contributor community.
|
|
||||||
|
|
||||||
When merging PRs into Vim, the current maintainer @chrisbra usually adds missing
|
|
||||||
`Signed-off-by` trailers for the author user name and email address as well for
|
|
||||||
anybody that explicitly *ACK*s a pull request as a statement that those
|
|
||||||
approvers are happy with that particular change.
|
|
||||||
|
|
||||||
## Using AI
|
|
||||||
|
|
||||||
When using AI for contributions, please disclose this. Any AI-generated code
|
|
||||||
must follow the Vim code style. In particular, [test_codestyle.vim][18]
|
|
||||||
must not report any failures. Check the CI output for any test failures.
|
|
||||||
|
|
||||||
Ensure that changes are properly tested. Do not submit a single PR that
|
|
||||||
addresses multiple unrelated issues.
|
|
||||||
|
|
||||||
# Reporting issues
|
|
||||||
|
|
||||||
We use GitHub [issues][17], but that is not a requirement. Writing to the Vim
|
|
||||||
mailing list is also fine.
|
|
||||||
|
|
||||||
Please use the GitHub issues only for actual issues. If you are not 100% sure
|
|
||||||
that your problem is a Vim issue, please first discuss this on the Vim user
|
|
||||||
mailing list. Try reproducing the problem without any of your plugins or settings:
|
|
||||||
|
|
||||||
vim --clean
|
|
||||||
|
|
||||||
If you report an issue, please describe exactly how to reproduce it.
|
|
||||||
For example, don't say "insert some text" but say what you did exactly:
|
|
||||||
`ahere is some text<Esc>`.
|
|
||||||
Ideally, the steps you list can be used to write a test to verify the problem
|
|
||||||
is fixed.
|
|
||||||
|
|
||||||
Feel free to report even the smallest problem, also typos in the documentation.
|
|
||||||
|
|
||||||
You can find known issues in the todo file: `:help todo`.
|
|
||||||
Or open [the todo file][todo list] on GitHub to see the latest version.
|
|
||||||
|
|
||||||
# Syntax, indent and other runtime files
|
|
||||||
|
|
||||||
The latest version of these files can be obtained from the repository.
|
|
||||||
They are usually not updated with numbered patches. However, they may
|
|
||||||
or may not work with older Vim releases (since they may depend on new
|
|
||||||
features).
|
|
||||||
|
|
||||||
If you find a problem with one of these files or have a suggestion for
|
|
||||||
improvement, please first try to contact the maintainer directly.
|
|
||||||
Look in the header of the file for the name, email address, github handle and/or
|
|
||||||
upstream repository. You may also check the [MAINTAINERS][11] file.
|
|
||||||
|
|
||||||
The maintainer will take care of issues and send updates to the Vim project for
|
|
||||||
distribution with Vim.
|
|
||||||
|
|
||||||
If the maintainer does not respond, contact the [vim-dev][0] mailing list or
|
|
||||||
open an [issue][17] here.
|
|
||||||
|
|
||||||
Note: Whether or not to use Vim9 script is up to the maintainer. For runtime
|
|
||||||
files maintained here, we aim to preserve compatibility with Neovim if
|
|
||||||
possible. Please wrap Vim9 script with a guard like this:
|
|
||||||
```vim
|
|
||||||
if has('vim9script')
|
|
||||||
" use Vim9 script implementation
|
|
||||||
[...]
|
|
||||||
endif
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contributing new runtime files
|
|
||||||
|
|
||||||
If you want to contribute new runtime files for Vim or Neovim, please create a
|
|
||||||
PR with your changes against this repository here. For new filetypes, do not forget:
|
|
||||||
|
|
||||||
- to add a new [filetype test][12] (keep it similar to the other filetype tests).
|
|
||||||
- all configuration switches should be documented
|
|
||||||
(check [filetype.txt][13] and/or [syntax.txt][14] for filetype and syntax plugins)
|
|
||||||
- add yourself as Maintainer to the top of file (again, keep the header similar to
|
|
||||||
other runtime files)
|
|
||||||
- add yourself to the [MAINTAINERS][11] file.
|
|
||||||
- add a guard `if has('vim9script')` if you like to maintain Neovim
|
|
||||||
compatibility but want to use Vim9 script (or restrict yourself to legacy Vim
|
|
||||||
script)
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
|
|
||||||
Translating messages and runtime files is very much appreciated! These things
|
|
||||||
can be translated:
|
|
||||||
|
|
||||||
- Messages in Vim, see [src/po/README.txt][1]
|
|
||||||
Also used for the desktop icons.
|
|
||||||
- Menus, see [runtime/lang/README.txt][2]
|
|
||||||
- Vim tutor, see [runtime/tutor/README.txt][3]
|
|
||||||
- Manual pages, see [runtime/doc/\*.1][4] for examples
|
|
||||||
- Installer, see [nsis/lang/README.txt][5]
|
|
||||||
|
|
||||||
The help files can be translated and made available separately.
|
|
||||||
See https://www.vim.org/translations.php for examples.
|
|
||||||
|
|
||||||
# How do I contribute to the project?
|
|
||||||
|
|
||||||
Please have a look at the following [discussion][6], which should give you some
|
|
||||||
ideas. Please also check the [develop.txt][7] helpfile for the recommended
|
|
||||||
coding style. Often it's also beneficial to check the surrounding code for the style
|
|
||||||
being used.
|
|
||||||
|
|
||||||
For the recommended documentation style, please check [helphelp.txt][16].
|
|
||||||
|
|
||||||
# I have a question
|
|
||||||
|
|
||||||
If you have some question on the style guide, please contact the [vim-dev][0]
|
|
||||||
mailing list. For other questions you can join [`#vim`][19], use the
|
|
||||||
[Vi Stack Exchange][8] website, the [vim-use][9] mailing list or make use of the
|
|
||||||
[discussion][10] feature here at github.
|
|
||||||
|
|
||||||
[todo list]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt
|
|
||||||
[0]: http://www.vim.org/maillist.php#vim-dev
|
|
||||||
[1]: https://github.com/vim/vim/blob/master/src/po/README.txt
|
|
||||||
[2]: https://github.com/vim/vim/blob/master/runtime/lang/README.txt
|
|
||||||
[3]: https://github.com/vim/vim/blob/master/runtime/tutor/README.txt
|
|
||||||
[4]: https://github.com/vim/vim/blob/master/runtime/doc/vim.1
|
|
||||||
[5]: https://github.com/vim/vim/blob/master/nsis/lang/README.txt
|
|
||||||
[6]: https://github.com/vim/vim/discussions/13087
|
|
||||||
[7]: https://github.com/vim/vim/blob/master/runtime/doc/develop.txt
|
|
||||||
[8]: https://vi.stackexchange.com
|
|
||||||
[9]: http://www.vim.org/maillist.php#vim-use
|
|
||||||
[10]: https://github.com/vim/vim/discussions
|
|
||||||
[11]: https://github.com/vim/vim/blob/master/.github/MAINTAINERS
|
|
||||||
[12]: https://github.com/vim/vim/blob/master/src/testdir/test_filetype.vim
|
|
||||||
[13]: https://github.com/vim/vim/blob/master/runtime/doc/filetype.txt
|
|
||||||
[14]: https://github.com/vim/vim/blob/master/runtime/doc/syntax.txt
|
|
||||||
[15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin
|
|
||||||
[16]: https://github.com/vim/vim/blob/master/runtime/doc/helphelp.txt
|
|
||||||
[17]: https://github.com/vim/vim/issues
|
|
||||||
[18]: https://github.com/vim/vim/blob/master/src/testdir/test_codestyle.vim
|
|
||||||
[19]: https://web.libera.chat/#vim
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
VIM LICENSE
|
|
||||||
|
|
||||||
I) There are no restrictions on distributing unmodified copies of Vim except
|
|
||||||
that they must include this license text. You can also distribute
|
|
||||||
unmodified parts of Vim, likewise unrestricted except that they must
|
|
||||||
include this license text. You are also allowed to include executables
|
|
||||||
that you made from the unmodified Vim sources, plus your own usage
|
|
||||||
examples and Vim scripts.
|
|
||||||
|
|
||||||
II) It is allowed to distribute a modified (or extended) version of Vim,
|
|
||||||
including executables and/or source code, when the following four
|
|
||||||
conditions are met:
|
|
||||||
1) This license text must be included unmodified.
|
|
||||||
2) The modified Vim must be distributed in one of the following five ways:
|
|
||||||
a) If you make changes to Vim yourself, you must clearly describe in
|
|
||||||
the distribution how to contact you. When the maintainer asks you
|
|
||||||
(in any way) for a copy of the modified Vim you distributed, you
|
|
||||||
must make your changes, including source code, available to the
|
|
||||||
maintainer without fee. The maintainer reserves the right to
|
|
||||||
include your changes in the official version of Vim. What the
|
|
||||||
maintainer will do with your changes and under what license they
|
|
||||||
will be distributed is negotiable. If there has been no negotiation
|
|
||||||
then this license, or a later version, also applies to your changes.
|
|
||||||
The current maintainers are listed here: https://github.com/orgs/vim/people.
|
|
||||||
If this changes it will be announced in appropriate places (most likely
|
|
||||||
vim.sf.net, www.vim.org and/or comp.editors). When it is completely
|
|
||||||
impossible to contact the maintainer, the obligation to send him
|
|
||||||
your changes ceases. Once the maintainer has confirmed that he has
|
|
||||||
received your changes they will not have to be sent again.
|
|
||||||
b) If you have received a modified Vim that was distributed as
|
|
||||||
mentioned under a) you are allowed to further distribute it
|
|
||||||
unmodified, as mentioned at I). If you make additional changes the
|
|
||||||
text under a) applies to those changes.
|
|
||||||
c) Provide all the changes, including source code, with every copy of
|
|
||||||
the modified Vim you distribute. This may be done in the form of a
|
|
||||||
context diff. You can choose what license to use for new code you
|
|
||||||
add. The changes and their license must not restrict others from
|
|
||||||
making their own changes to the official version of Vim.
|
|
||||||
d) When you have a modified Vim which includes changes as mentioned
|
|
||||||
under c), you can distribute it without the source code for the
|
|
||||||
changes if the following three conditions are met:
|
|
||||||
- The license that applies to the changes permits you to distribute
|
|
||||||
the changes to the Vim maintainer without fee or restriction, and
|
|
||||||
permits the Vim maintainer to include the changes in the official
|
|
||||||
version of Vim without fee or restriction.
|
|
||||||
- You keep the changes for at least three years after last
|
|
||||||
distributing the corresponding modified Vim. When the maintainer
|
|
||||||
or someone who you distributed the modified Vim to asks you (in
|
|
||||||
any way) for the changes within this period, you must make them
|
|
||||||
available to him.
|
|
||||||
- You clearly describe in the distribution how to contact you. This
|
|
||||||
contact information must remain valid for at least three years
|
|
||||||
after last distributing the corresponding modified Vim, or as long
|
|
||||||
as possible.
|
|
||||||
e) When the GNU General Public License (GPL) applies to the changes,
|
|
||||||
you can distribute the modified Vim under the GNU GPL version 2 or
|
|
||||||
any later version.
|
|
||||||
3) A message must be added, at least in the output of the ":version"
|
|
||||||
command and in the intro screen, such that the user of the modified Vim
|
|
||||||
is able to see that it was modified. When distributing as mentioned
|
|
||||||
under 2)e) adding the message is only required for as far as this does
|
|
||||||
not conflict with the license used for the changes.
|
|
||||||
4) The contact information as required under 2)a) and 2)d) must not be
|
|
||||||
removed or changed, except that the person himself can make
|
|
||||||
corrections.
|
|
||||||
|
|
||||||
III) If you distribute a modified version of Vim, you are encouraged to use
|
|
||||||
the Vim license for your changes and make them available to the
|
|
||||||
maintainer, including the source code. The preferred way to do this is
|
|
||||||
by e-mail or by uploading the files to a server and e-mailing the URL.
|
|
||||||
If the number of changes is small (e.g., a modified Makefile) e-mailing a
|
|
||||||
context diff will do. The e-mail address to be used is
|
|
||||||
<maintainer@vim.org>
|
|
||||||
|
|
||||||
IV) It is not allowed to remove this license from the distribution of the Vim
|
|
||||||
sources, parts of it or from a modified version. You may use this
|
|
||||||
license for previous Vim releases instead of the license that they came
|
|
||||||
with, at your option.
|
|
||||||
@@ -1,561 +0,0 @@
|
|||||||
# This Makefile has two purposes:
|
|
||||||
# 1. Starting the compilation of Vim for Unix.
|
|
||||||
# 2. Creating the various distribution files.
|
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# 1. Starting the compilation of Vim for Unix.
|
|
||||||
#
|
|
||||||
# Using this Makefile without an argument will compile Vim for Unix.
|
|
||||||
# "make install" is also possible.
|
|
||||||
#
|
|
||||||
# NOTE: If this doesn't work properly, first change directory to "src" and use
|
|
||||||
# the Makefile there:
|
|
||||||
# cd src
|
|
||||||
# make [arguments]
|
|
||||||
# Noticed on AIX systems when using this Makefile: Trying to run "cproto" or
|
|
||||||
# something else after Vim has been compiled. Don't know why...
|
|
||||||
# Noticed on OS/390 Unix: Restarts configure.
|
|
||||||
#
|
|
||||||
# The first (default) target is "first". This will result in running
|
|
||||||
# "make first", so that the target from "src/auto/config.mk" is picked
|
|
||||||
# up properly when config didn't run yet. Doing "make all" before configure
|
|
||||||
# has run can result in compiling with $(CC) empty.
|
|
||||||
|
|
||||||
first:
|
|
||||||
@if test ! -f src/auto/config.mk; then \
|
|
||||||
cp src/config.mk.dist src/auto/config.mk; \
|
|
||||||
fi
|
|
||||||
@echo "Starting make in the src directory."
|
|
||||||
@echo "If there are problems, cd to the src directory and run make there"
|
|
||||||
cd src && $(MAKE) $@
|
|
||||||
|
|
||||||
# Some make programs use the last target for the $@ default; put the other
|
|
||||||
# targets separately to always let $@ expand to "first" by default.
|
|
||||||
all install uninstall tools config configure reconfig proto depend lint tags types test scripttests testtiny test_libvterm unittests testclean clean distclean:
|
|
||||||
@if test ! -f src/auto/config.mk; then \
|
|
||||||
cp src/config.mk.dist src/auto/config.mk; \
|
|
||||||
fi
|
|
||||||
@echo "Starting make in the src directory."
|
|
||||||
@echo "If there are problems, cd to the src directory and run make there"
|
|
||||||
cd src && $(MAKE) $@
|
|
||||||
@# When the target is "test" also run the indent and syntax tests.
|
|
||||||
@if test "$@" = "test" -o "$@" = "testtiny"; then \
|
|
||||||
$(MAKE) indenttest; \
|
|
||||||
$(MAKE) syntaxtest; \
|
|
||||||
fi
|
|
||||||
@# When the target is "clean" also clean for the indent and syntax tests.
|
|
||||||
@if test "$@" = "clean" -o "$@" = "distclean" -o "$@" = "testclean"; then \
|
|
||||||
(cd runtime/indent && $(MAKE) clean); \
|
|
||||||
(cd runtime/syntax && $(MAKE) clean); \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Executable used for running the indent tests.
|
|
||||||
VIM_FOR_INDENTTEST = ../../src/vim
|
|
||||||
|
|
||||||
indenttest:
|
|
||||||
cd runtime/indent && \
|
|
||||||
$(MAKE) clean && \
|
|
||||||
$(MAKE) test VIMPROG="$(VIM_FOR_INDENTTEST)"
|
|
||||||
|
|
||||||
# Executable used for running the syntax tests.
|
|
||||||
VIM_FOR_SYNTAXTEST = ../../src/vim
|
|
||||||
|
|
||||||
# (For local testing only with GNU Make.)
|
|
||||||
VIM_SYNTAX_TEST_FILTER =
|
|
||||||
VIM_SYNTAX_TEST_WAIT_TIME =
|
|
||||||
|
|
||||||
syntaxtest:
|
|
||||||
cd runtime/syntax && \
|
|
||||||
$(MAKE) clean && \
|
|
||||||
$(MAKE) test VIMPROG="$(VIM_FOR_SYNTAXTEST)"
|
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# 2. Creating the various distribution files.
|
|
||||||
#
|
|
||||||
# TARGET PRODUCES CONTAINS
|
|
||||||
# unixall vim-#.#.tar.bz2 All runtime files and sources, for Unix
|
|
||||||
#
|
|
||||||
# html vim##html.zip HTML docs
|
|
||||||
#
|
|
||||||
# dossrc vim##src.zip sources for MS-DOS
|
|
||||||
# dosrt vim##rt.zip runtime for MS-DOS
|
|
||||||
# dosbin vim##w32.zip binary for Win32
|
|
||||||
# gvim##.zip binary for GUI Win32
|
|
||||||
# gvim##ole.zip OLE exe for Win32 GUI
|
|
||||||
#
|
|
||||||
# OBSOLETE
|
|
||||||
# amisrc vim##src.tgz sources for Amiga
|
|
||||||
# amirt vim##rt.tgz runtime for Amiga
|
|
||||||
# amibin vim##bin.tgz binary for Amiga
|
|
||||||
#
|
|
||||||
# farsi farsi##.zip Farsi fonts
|
|
||||||
#
|
|
||||||
# All output files are created in the "dist" directory. Existing files are
|
|
||||||
# overwritten!
|
|
||||||
# To do all this you need the Unix archive and compiled binaries.
|
|
||||||
# Before creating an archive first delete all backup files, *.orig, etc.
|
|
||||||
|
|
||||||
MAJOR = 9
|
|
||||||
MINOR = 2
|
|
||||||
|
|
||||||
# CHECKLIST for creating a new version:
|
|
||||||
#
|
|
||||||
# - Update Vim version number. For a test version in: src/version.h,
|
|
||||||
# READMEdir/Contents, MAJOR/MINOR above, VIMMAJOR and VIMMINOR in
|
|
||||||
# src/Makefile, README.txt, README.md, src/README.md, READMEdir/README*.txt,
|
|
||||||
# runtime/doc/*.txt.
|
|
||||||
# For a minor/major version: src/GvimExt/GvimExt.reg, src/vim.manifest.
|
|
||||||
# - Compile Vim with GTK, Perl, Python, Python3, TCL, Ruby, Lua, Cscope and
|
|
||||||
# "huge" features. Add MZscheme if you can make it work.
|
|
||||||
# Use "make reconfig" after selecting the configure arguments.
|
|
||||||
# - With these features: "make proto" (requires cproto and Motif installed;
|
|
||||||
# ignore warnings for missing include files, fix problems for syntax errors).
|
|
||||||
# - With these features: "make depend" (works best with gcc).
|
|
||||||
# - If you have a lint program: "make lint" and check the output (ignore GTK
|
|
||||||
# warnings).
|
|
||||||
# - compile release versions using -DNDEBUG to disable assert()s
|
|
||||||
# - If you have valgrind, enable it in src/testdir/Makefile and run "make
|
|
||||||
# test". Enable EXITFREE, disable GUI, scheme and tcl to avoid false alarms.
|
|
||||||
# Check the valgrind output.
|
|
||||||
# - Adjust the date and other info in src/version.h.
|
|
||||||
# - Correct included_patches[] in src/version.c.
|
|
||||||
# - Check for missing entries in runtime/makemenu.vim (with checkmenu script).
|
|
||||||
# - Check for missing options in runtime/optwin.vim et al. (with check.vim).
|
|
||||||
# - Do "make menu" to update the runtime/synmenu.vim file.
|
|
||||||
# - Add remarks for changes to runtime/doc/version9.txt.
|
|
||||||
# - Check that runtime/doc/help.txt doesn't contain entries in "LOCAL
|
|
||||||
# ADDITIONS".
|
|
||||||
# - In runtime/doc run "make" and "make html" to check for errors.
|
|
||||||
# - Check if src/Makefile, src/testdir/Makefile and src/feature.h don't contain
|
|
||||||
# any personal preferences or the changes mentioned above.
|
|
||||||
# - Check file protections to be "644" for text and "755" for executables (run
|
|
||||||
# the "check" script).
|
|
||||||
# - Check compiling on Amiga, MS-DOS and MS-Windows.
|
|
||||||
# - Delete all *~, *.sw?, *.orig, *.rej files
|
|
||||||
# - "make unixall", "make html"
|
|
||||||
# - Make diff files against the previous release: "makediff7 7.1 7.2"
|
|
||||||
#
|
|
||||||
# Amiga: (OBSOLETE, Amiga files are no longer distributed)
|
|
||||||
# - "make amisrc", move the archive to the Amiga and compile:
|
|
||||||
# "make -f Make_manx.mak" (will use "big" features by default).
|
|
||||||
# - Run the tests: "make -f Make_manx.mak test"
|
|
||||||
# - Place the executables Vim and Xxd in this directory (set the executable
|
|
||||||
# flag).
|
|
||||||
# - "make amirt", "make amibin".
|
|
||||||
#
|
|
||||||
# MS-Windows:
|
|
||||||
# - Run make on Unix to update the ".mo" files.
|
|
||||||
# - Get 32 bit libintl-8.dll, libiconv-2.dll and libgcc_s_sjlj-1.dll. E.g. from
|
|
||||||
# https://mlocati.github.io/gettext-iconv-windows/ .
|
|
||||||
# Use the "shared-32.zip file and extract the archive to get the files.
|
|
||||||
# Put them in the gettext32 directory, "make dosrt" uses them.
|
|
||||||
# - Get 64 bit libintl-8.dll and libiconv-2.dll. E.g. from
|
|
||||||
# https://mlocati.github.io/gettext-iconv-windows/ .
|
|
||||||
# Use the "shared-64.zip file and extract the archive to get the files.
|
|
||||||
# Put them in the gettext64 directory, "make dosrt" uses them.
|
|
||||||
# - > make dossrc
|
|
||||||
# > make dosrt
|
|
||||||
# Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC.
|
|
||||||
# This creates the directory vim/vim91 and puts all files in there.
|
|
||||||
# Win32 console version build:
|
|
||||||
# - See src/INSTALLpc.txt for installing the compiler and SDK.
|
|
||||||
# - Set environment for Visual C++ 2015:
|
|
||||||
# > cd src
|
|
||||||
# > msvc-latest.bat
|
|
||||||
# - Build the console binary:
|
|
||||||
# > nmake.exe -f Make_mvc.mak
|
|
||||||
# - Run the tests and check the output:
|
|
||||||
# > nmake.exe -f Make_mvc.mak testclean
|
|
||||||
# > nmake.exe -f Make_mvc.mak test
|
|
||||||
# - Rename (using ../tools/rename.bat):
|
|
||||||
# vim.exe to vimw32.exe
|
|
||||||
# tee/tee.exe to teew32.exe
|
|
||||||
# xxd/xxd.exe to xxdw32.exe
|
|
||||||
# vim.pdb to vimw32.pdb
|
|
||||||
# install.exe to installw32.exe
|
|
||||||
# uninstall.exe to uninstallw32.exe
|
|
||||||
# Win32 GUI version build:
|
|
||||||
# - > cd src
|
|
||||||
# > nmake.exe -f Make_mvc.mak "GUI=yes"
|
|
||||||
# - Run the tests and check the output:
|
|
||||||
# > nmake.exe -f Make_mvc.mak testclean
|
|
||||||
# > nmake.exe -f Make_mvc.mak testgvim
|
|
||||||
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
|
|
||||||
# - Move gvim.pdb to here.
|
|
||||||
# - Copy "GvimExt/gvimext.dll" to here.
|
|
||||||
# - Delete vimrun.exe, install.exe and uninstall.exe.
|
|
||||||
# Win32 GUI version with OLE, PERL, Ruby, TCL, PYTHON and dynamic IME:
|
|
||||||
# - Install the interfaces you want, see src/INSTALLpc.txt
|
|
||||||
# Adjust bigvim.bat to match the version of each interface you want.
|
|
||||||
# - Build:
|
|
||||||
# > cd src
|
|
||||||
# > bigvim.bat
|
|
||||||
# - Run the tests:
|
|
||||||
# > nmake.exe -f Make_mvc.mak testclean
|
|
||||||
# > nmake.exe -f Make_mvc.mak testgvim
|
|
||||||
# - check the output.
|
|
||||||
# - Rename "gvim.exe" to "gvim_ole.exe".
|
|
||||||
# - Rename gvim.pdb to "gvim_ole.pdb".
|
|
||||||
# - Delete install.exe and uninstall.exe.
|
|
||||||
# Create the archives:
|
|
||||||
# - Copy all the "*.exe" files to where this Makefile is.
|
|
||||||
# - Copy all the "*.pdb" files to where this Makefile is.
|
|
||||||
# - in this directory:
|
|
||||||
# > make dosbin
|
|
||||||
# NSIS self installing exe:
|
|
||||||
# - To get NSIS see http://nsis.sourceforge.net
|
|
||||||
# - Make sure gvim_ole.exe, vimw32.exe, installw32.exe,
|
|
||||||
# uninstallw32.exe, teew32.exe and xxdw32.exe have been build as mentioned
|
|
||||||
# above.
|
|
||||||
# - copy these files (get them from a binary archive or build them):
|
|
||||||
# gvimext.dll in src/GvimExt
|
|
||||||
# gvimext64.dll in src/GvimExt
|
|
||||||
# gvimext64.dll can be obtained from:
|
|
||||||
# https://github.com/vim/vim-win32-installer/releases
|
|
||||||
# It is part of gvim_9.1.*_x64.zip as vim/vim91/GvimExt/gvimext64.dll.
|
|
||||||
# - Make sure there is a diff.exe two levels up (get it from a previous Vim
|
|
||||||
# version). Also put winpty32.dll and winpty-agent.exe there.
|
|
||||||
# - go to ../nsis and do:
|
|
||||||
# > nmake.exe -f Make_mvc.mak all
|
|
||||||
# (takes a few minutes).
|
|
||||||
# See nsis/README.txt for details.
|
|
||||||
# - Copy gvim##.exe to the dist directory.
|
|
||||||
#
|
|
||||||
# 64 bit builds (these are not in the normal distribution, the 32 bit build
|
|
||||||
# works just fine on 64 bit systems).
|
|
||||||
# Like the console and GUI version, but first run vcvars64.bat or
|
|
||||||
# "..\VC\vcvarsall.bat x86_amd64".
|
|
||||||
# - Build the console version:
|
|
||||||
# > nmake.exe -f Make_mvc.mak
|
|
||||||
# - Build the GUI version:
|
|
||||||
# > nmake.exe -f Make_mvc.mak "GUI=yes"
|
|
||||||
# - Build the OLE version with interfaces:
|
|
||||||
# > bigvim64.bat
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# OBSOLETE systems: You can build these if you have an appropriate system.
|
|
||||||
#
|
|
||||||
# 16 bit DOS version: You need to get a very old version of Vim, for several
|
|
||||||
# years even the tiny build is too big to fit in DOS memory.
|
|
||||||
#
|
|
||||||
# 32 bit DOS version: Support was removed in 7.4.1399. When syncing to before
|
|
||||||
# that it probably won't build.
|
|
||||||
#
|
|
||||||
# Win32s GUI version: Support was removed in patch 7.4.1364.
|
|
||||||
#
|
|
||||||
# OS/2 support was removed in patch 7.4.1008. If you want to give it a try
|
|
||||||
# sync to before that and check the old version of this Makefile for
|
|
||||||
# instructions.
|
|
||||||
|
|
||||||
VIMVER = vim-$(MAJOR).$(MINOR)
|
|
||||||
VERSION = $(MAJOR)$(MINOR)
|
|
||||||
VDOT = $(MAJOR).$(MINOR)
|
|
||||||
VIMRTDIR = vim$(VERSION)
|
|
||||||
|
|
||||||
# How to include Filelist depends on the version of "make" you have.
|
|
||||||
# If the current choice doesn't work, try the other one.
|
|
||||||
|
|
||||||
include Filelist
|
|
||||||
#.include "Filelist"
|
|
||||||
|
|
||||||
|
|
||||||
# All output is put in the "dist" directory.
|
|
||||||
dist:
|
|
||||||
mkdir dist
|
|
||||||
|
|
||||||
# Clean up some files to avoid they are included.
|
|
||||||
# Copy README files to the top directory.
|
|
||||||
prepare:
|
|
||||||
if test -f lang/LICENSE.nsis.txt; then \
|
|
||||||
rm -f lang/LICENSE*.nsis.txt; fi
|
|
||||||
for name in $(IN_README_DIR); do \
|
|
||||||
cp READMEdir/"$$name" .; \
|
|
||||||
done
|
|
||||||
|
|
||||||
# For the zip files we need to create a file with the comment line
|
|
||||||
dist/comment:
|
|
||||||
mkdir dist/comment
|
|
||||||
|
|
||||||
COMMENT_RT = comment/$(VERSION)-rt
|
|
||||||
COMMENT_W32 = comment/$(VERSION)-bin-w32
|
|
||||||
COMMENT_GVIM = comment/$(VERSION)-bin-gvim
|
|
||||||
COMMENT_OLE = comment/$(VERSION)-bin-ole
|
|
||||||
COMMENT_SRC = comment/$(VERSION)-src
|
|
||||||
COMMENT_HTML = comment/$(VERSION)-html
|
|
||||||
COMMENT_FARSI = comment/$(VERSION)-farsi
|
|
||||||
|
|
||||||
dist/$(COMMENT_RT): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) runtime files for MS-DOS and MS-Windows" > dist/$(COMMENT_RT)
|
|
||||||
|
|
||||||
dist/$(COMMENT_W32): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) binaries for MS-Windows" > dist/$(COMMENT_W32)
|
|
||||||
|
|
||||||
dist/$(COMMENT_GVIM): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) GUI binaries for MS-Windows" > dist/$(COMMENT_GVIM)
|
|
||||||
|
|
||||||
dist/$(COMMENT_OLE): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) MS-Windows GUI binaries with OLE support" > dist/$(COMMENT_OLE)
|
|
||||||
|
|
||||||
dist/$(COMMENT_SRC): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) sources for MS-DOS and MS-Windows" > dist/$(COMMENT_SRC)
|
|
||||||
|
|
||||||
dist/$(COMMENT_HTML): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) documentation in HTML" > dist/$(COMMENT_HTML)
|
|
||||||
|
|
||||||
dist/$(COMMENT_FARSI): dist/comment
|
|
||||||
echo "Vim - Vi IMproved - v$(VDOT) Farsi language files" > dist/$(COMMENT_FARSI)
|
|
||||||
|
|
||||||
unixall: dist prepare
|
|
||||||
-rm -f dist/$(VIMVER).tar.bz2
|
|
||||||
-rm -rf dist/$(VIMRTDIR)
|
|
||||||
mkdir dist/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(RT_ALL) \
|
|
||||||
$(RT_ALL_BIN) \
|
|
||||||
$(RT_UNIX) \
|
|
||||||
$(RT_UNIX_DOS_BIN) \
|
|
||||||
$(RT_SCRIPTS) \
|
|
||||||
$(LANG_GEN) \
|
|
||||||
$(LANG_GEN_BIN) \
|
|
||||||
$(SRC_ALL) \
|
|
||||||
$(SRC_UNIX) \
|
|
||||||
$(SRC_DOS_UNIX) \
|
|
||||||
$(EXTRA) \
|
|
||||||
$(LANG_SRC) \
|
|
||||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
# Need to use a "distclean" config.mk file
|
|
||||||
# Note: this file is not included in the repository to avoid problems, but it's
|
|
||||||
# OK to put it in the archive.
|
|
||||||
cp -f src/config.mk.dist dist/$(VIMRTDIR)/src/auto/config.mk
|
|
||||||
# Create an empty config.h file, make dependencies require it
|
|
||||||
touch dist/$(VIMRTDIR)/src/auto/config.h
|
|
||||||
# Make sure configure is newer than config.mk to force it to be generated
|
|
||||||
touch dist/$(VIMRTDIR)/src/configure
|
|
||||||
# Make sure ja.sjis.po is newer than ja.po to avoid it being regenerated.
|
|
||||||
# Same for cs.cp1250.po, pl.cp1250.po and sk.cp1250.po.
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/ja.sjis.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/cs.cp1250.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/pl.cp1250.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/sk.cp1250.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/zh_CN.cp936.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/ru.cp1251.po
|
|
||||||
touch dist/$(VIMRTDIR)/src/po/uk.cp1251.po
|
|
||||||
# Create the archive.
|
|
||||||
cd dist && tar cf $(VIMVER).tar $(VIMRTDIR)
|
|
||||||
bzip2 dist/$(VIMVER).tar
|
|
||||||
|
|
||||||
# Amiga runtime - OBSOLETE
|
|
||||||
amirt: dist prepare
|
|
||||||
-rm -f dist/vim$(VERSION)rt.tar.gz
|
|
||||||
-rm -rf dist/Vim
|
|
||||||
mkdir dist/Vim
|
|
||||||
mkdir dist/Vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(ROOT_AMI) \
|
|
||||||
$(RT_ALL) \
|
|
||||||
$(RT_ALL_BIN) \
|
|
||||||
$(RT_SCRIPTS) \
|
|
||||||
$(RT_AMI) \
|
|
||||||
$(RT_NO_UNIX) \
|
|
||||||
$(RT_AMI_DOS) \
|
|
||||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/runtime/* dist/Vim/$(VIMRTDIR)
|
|
||||||
rmdir dist/Vim/$(VIMRTDIR)/runtime
|
|
||||||
cd dist && tar cf vim$(VERSION)rt.tar Vim Vim.info
|
|
||||||
gzip -9 dist/vim$(VERSION)rt.tar
|
|
||||||
mv dist/vim$(VERSION)rt.tar.gz dist/vim$(VERSION)rt.tgz
|
|
||||||
|
|
||||||
# Amiga binaries - OBSOLETE
|
|
||||||
amibin: dist prepare
|
|
||||||
-rm -f dist/vim$(VERSION)bin.tar.gz
|
|
||||||
-rm -rf dist/Vim
|
|
||||||
mkdir dist/Vim
|
|
||||||
mkdir dist/Vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(ROOT_AMI) \
|
|
||||||
$(BIN_AMI) \
|
|
||||||
Vim \
|
|
||||||
Xxd \
|
|
||||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
|
||||||
cd dist && tar cf vim$(VERSION)bin.tar Vim Vim.info
|
|
||||||
gzip -9 dist/vim$(VERSION)bin.tar
|
|
||||||
mv dist/vim$(VERSION)bin.tar.gz dist/vim$(VERSION)bin.tgz
|
|
||||||
|
|
||||||
# Amiga sources - OBSOLETE
|
|
||||||
amisrc: dist prepare
|
|
||||||
-rm -f dist/vim$(VERSION)src.tar.gz
|
|
||||||
-rm -rf dist/Vim
|
|
||||||
mkdir dist/Vim
|
|
||||||
mkdir dist/Vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(ROOT_AMI) \
|
|
||||||
$(SRC_ALL) \
|
|
||||||
$(SRC_AMI) \
|
|
||||||
$(SRC_AMI_DOS) \
|
|
||||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
|
||||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
|
||||||
cd dist && tar cf vim$(VERSION)src.tar Vim Vim.info
|
|
||||||
gzip -9 dist/vim$(VERSION)src.tar
|
|
||||||
mv dist/vim$(VERSION)src.tar.gz dist/vim$(VERSION)src.tgz
|
|
||||||
|
|
||||||
# MS-DOS sources
|
|
||||||
dossrc: dist dist/$(COMMENT_SRC) license
|
|
||||||
-rm -rf dist/vim$(VERSION)src.zip
|
|
||||||
-rm -rf dist/vim
|
|
||||||
mkdir dist/vim
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(SRC_ALL) \
|
|
||||||
$(SRC_DOS) \
|
|
||||||
$(SRC_DOS_BIN) \
|
|
||||||
$(SRC_AMI_DOS) \
|
|
||||||
$(SRC_DOS_UNIX) \
|
|
||||||
lang/LICENSE.*.txt \
|
|
||||||
lang/README.*.txt \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
|
|
||||||
rmdir dist/vim/$(VIMRTDIR)/runtime
|
|
||||||
cd dist && zip -9 -rD -z vim$(VERSION)src.zip vim <$(COMMENT_SRC)
|
|
||||||
|
|
||||||
license:
|
|
||||||
cd nsis && $(MAKE) -f Makefile $@
|
|
||||||
|
|
||||||
dosrt: dist dist/$(COMMENT_RT) dosrt_files
|
|
||||||
-rm -rf dist/vim$(VERSION)rt.zip
|
|
||||||
cd dist && zip -9 -rD -z vim$(VERSION)rt.zip vim <$(COMMENT_RT)
|
|
||||||
|
|
||||||
# Split in two parts to avoid an "argument list too long" error.
|
|
||||||
# We no longer convert the files from unix to dos fileformat.
|
|
||||||
dosrt_files: dist prepare
|
|
||||||
-rm -rf dist/vim
|
|
||||||
mkdir dist/vim
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/lang
|
|
||||||
cd src && MAKEMO=yes $(MAKE) languages
|
|
||||||
tar cf - \
|
|
||||||
$(RT_ALL) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
tar cf - \
|
|
||||||
$(RT_SCRIPTS) \
|
|
||||||
$(RT_DOS) \
|
|
||||||
$(RT_NO_UNIX) \
|
|
||||||
$(RT_AMI_DOS) \
|
|
||||||
$(LANG_GEN) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
tar cf - \
|
|
||||||
$(RT_UNIX_DOS_BIN) \
|
|
||||||
$(RT_ALL_BIN) \
|
|
||||||
$(RT_DOS_BIN) \
|
|
||||||
$(LANG_GEN_BIN) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
mv dist/vim/$(VIMRTDIR)/lang/ dist/vim/$(VIMRTDIR)/readme/
|
|
||||||
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
|
|
||||||
rmdir dist/vim/$(VIMRTDIR)/runtime
|
|
||||||
# Add the message translations. Trick: skip ja.mo/ja.euc-jp.mo and use
|
|
||||||
# ja.sjis.mo instead. Same for cs.mo / cs.cp1250.mo, pl.mo / pl.cp1250.mo,
|
|
||||||
# sk.mo / sk.cp1250.mo, zh_CN.mo / zh_CN.cp936.mo, uk.mo / uk.cp1251.mo and
|
|
||||||
# ru.mo / ru.cp1251.mo.
|
|
||||||
for i in $(LANG_DOS); do \
|
|
||||||
if test "$$i" != "src/po/ja.mo" -a "$$i" != "src/po/ja.euc-jp.mo" -a "$$i" != "src/po/pl.mo" -a "$$i" != "src/po/cs.mo" -a "$$i" != "src/po/sk.mo" -a "$$i" != "src/po/zh_CN.mo" -a "$$i" != "src/po/ru.mo" -a "$$i" != "src/po/uk.mo"; then \
|
|
||||||
n=`echo $$i | sed -e "s+src/po/\([-a-zA-Z0-9_]*\(.UTF-8\)*\)\(.sjis\)*\(.cp1250\)*\(.cp1251\)*\(.cp936\)*.mo+\1+"`; \
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/lang/$$n; \
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES; \
|
|
||||||
cp $$i dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES/vim.mo; \
|
|
||||||
fi \
|
|
||||||
done
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/gettext32
|
|
||||||
cp gettext32/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext32/
|
|
||||||
cp gettext32/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext32/
|
|
||||||
cp gettext32/libgcc_s_sjlj-1.dll dist/vim/$(VIMRTDIR)/gettext32/
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/gettext64
|
|
||||||
cp gettext64/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext64/
|
|
||||||
cp gettext64/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext64/
|
|
||||||
|
|
||||||
|
|
||||||
# Used before uploading. Don't delete the AAPDIR/sign files!
|
|
||||||
runtime_unix2dos: dosrt_files
|
|
||||||
-rm -rf `find runtime/dos -type f -print | sed -e /AAPDIR/d`
|
|
||||||
cd dist/vim/$(VIMRTDIR); tar cf - * \
|
|
||||||
| (cd ../../../runtime/dos; tar xf -)
|
|
||||||
|
|
||||||
dosbin: prepare dosbin_gvim dosbin_w32 dosbin_ole $(DOSBIN_S)
|
|
||||||
-rm $(IN_README_DIR)
|
|
||||||
|
|
||||||
# make Win32 gvim
|
|
||||||
dosbin_gvim: dist dist/$(COMMENT_GVIM)
|
|
||||||
-rm -rf dist/gvim$(VERSION).zip
|
|
||||||
-rm -rf dist/vim
|
|
||||||
mkdir dist/vim
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(BIN_DOS) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
cp gvim.exe dist/vim/$(VIMRTDIR)/gvim.exe
|
|
||||||
cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe
|
|
||||||
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
|
|
||||||
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
|
|
||||||
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
|
|
||||||
cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/GvimExt32
|
|
||||||
cp gvimext.dll dist/vim/$(VIMRTDIR)/GvimExt32/gvimext.dll
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)/GvimExt64
|
|
||||||
cp gvimext64.dll dist/vim/$(VIMRTDIR)/GvimExt64/gvimext.dll
|
|
||||||
cd dist && zip -9 -rD -z gvim$(VERSION).zip vim <$(COMMENT_GVIM)
|
|
||||||
cp gvim.pdb dist/gvim$(VERSION).pdb
|
|
||||||
|
|
||||||
# make Win32 console
|
|
||||||
dosbin_w32: dist dist/$(COMMENT_W32)
|
|
||||||
-rm -rf dist/vim$(VERSION)w32.zip
|
|
||||||
-rm -rf dist/vim
|
|
||||||
mkdir dist/vim
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(BIN_DOS) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
cp vimw32.exe dist/vim/$(VIMRTDIR)/vim.exe
|
|
||||||
cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe
|
|
||||||
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
|
|
||||||
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
|
|
||||||
cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
|
|
||||||
cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32)
|
|
||||||
cp vimw32.pdb dist/vim$(VERSION)w32.pdb
|
|
||||||
|
|
||||||
# make Win32 gvim with OLE
|
|
||||||
dosbin_ole: dist dist/$(COMMENT_OLE)
|
|
||||||
-rm -rf dist/gvim$(VERSION)ole.zip
|
|
||||||
-rm -rf dist/vim
|
|
||||||
mkdir dist/vim
|
|
||||||
mkdir dist/vim/$(VIMRTDIR)
|
|
||||||
tar cf - \
|
|
||||||
$(BIN_DOS) \
|
|
||||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
|
||||||
cp gvim_ole.exe dist/vim/$(VIMRTDIR)/gvim.exe
|
|
||||||
cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe
|
|
||||||
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
|
|
||||||
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
|
|
||||||
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
|
|
||||||
cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
|
|
||||||
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
|
|
||||||
cp README_ole.txt dist/vim/$(VIMRTDIR)
|
|
||||||
cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE)
|
|
||||||
cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb
|
|
||||||
|
|
||||||
html: dist dist/$(COMMENT_HTML)
|
|
||||||
-rm -rf dist/vim$(VERSION)html.zip
|
|
||||||
cd runtime/doc && zip -9 -z ../../dist/vim$(VERSION)html.zip *.html <../../dist/$(COMMENT_HTML)
|
|
||||||
|
|
||||||
farsi: dist dist/$(COMMENT_FARSI)
|
|
||||||
-rm -f dist/farsi$(VERSION).zip
|
|
||||||
zip -9 -rD -z dist/farsi$(VERSION).zip farsi < dist/$(COMMENT_FARSI)
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
<h1 align=center>
|
|
||||||
<img src=https://macvim.org/docs/MacVim.png alt="MacVim logo" style="height:4em"><br>
|
|
||||||
MacVim
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://macvim.org/">Website</a> · <a href="https://macvim.org/docs/gui_mac.txt">Documentation</a>
|
|
||||||
</p>
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/macvim-dev/macvim/actions/workflows/ci-macvim.yaml?query=branch%3Amaster+event%3Apush"><img src="https://github.com/macvim-dev/macvim/actions/workflows/ci-macvim.yaml/badge.svg" alt="MacVim GitHub CI"></a>
|
|
||||||
<a href="https://github.com/macvim-dev/macvim/releases/latest"><img src="https://img.shields.io/github/v/release/macvim-dev/macvim?label=GitHub%20Release&display=release" alt="GitHub release"></a>
|
|
||||||
<a href="https://repology.org/project/macvim/versions"><img src="https://repology.org/badge/tiny-repos/macvim.svg" alt="Packaging status"></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
MacVim is a macOS version of the [Vim](https://github.com/vim/vim) text editor, providing a graphical user interface for Vim, while tightly integrating with macOS and providing features specific to the platform.
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<picture>
|
|
||||||
<source srcset="https://macvim.org/images/macvim-screenshot-light.png" media="(prefers-color-scheme: light)"/>
|
|
||||||
<source srcset="https://macvim.org/images/macvim-screenshot-dark.png" media="(prefers-color-scheme: dark)"/>
|
|
||||||
<img width="535" alt="macvim-screenshot-light" src="https://macvim.org/images/macvim-screenshot-light.png" />
|
|
||||||
</picture>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- Smooth native GUI that supports menus, dialog boxes, toolbars, and scroll bars.
|
|
||||||
- Native and non-native full-screen modes.
|
|
||||||
- Trackpad gestures, Touch Bar, and Command key shortcuts can be mapped to Vim actions.
|
|
||||||
- Integrates with system services, dictionary lookup, and Apple Intelligence Writing Tools.
|
|
||||||
- Vim GUI tabs with customizable colors.
|
|
||||||
- Font ligatures and accurate text rendering.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
See [installation documentation](https://github.com/macvim-dev/macvim/wiki/Installing) for more details and alternative methods to install.
|
|
||||||
|
|
||||||
### Download
|
|
||||||
|
|
||||||
You can download the latest version of MacVim from the [Releases](https://github.com/macvim-dev/macvim/releases/latest) page.
|
|
||||||
|
|
||||||
### Install via Package Manager
|
|
||||||
|
|
||||||
If you would like to install using a package manager, MacVim can be installed via Homebrew:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
brew install macvim
|
|
||||||
```
|
|
||||||
|
|
||||||
MacVim is also available as a Homebrew cask. It will install the same pre-built binary as the one available from GitHub release:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
brew install --cask macvim-app
|
|
||||||
```
|
|
||||||
|
|
||||||
After installation, MacVim can be launched using the Dock or in the terminal using the `mvim` command.
|
|
||||||
|
|
||||||
### Building from Source
|
|
||||||
|
|
||||||
If you prefer to build MacVim from source, detailed instructions are provided in the [Building MacVim](https://github.com/macvim-dev/macvim/wiki/Building) guide.
|
|
||||||
|
|
||||||
## Relationship with Vim
|
|
||||||
|
|
||||||
MacVim is a downstream fork of Vim, and routinely [merges from upstream](https://github.com/macvim-dev/macvim/wiki/Merging-from-upstream-Vim). The original Vim README can be found at [README_vim.md](README_vim.md). Vim itself is also available for macOS, but it does not have a GUI.
|
|
||||||
|
|
||||||
In Homebrew, there are both a `macvim` and `vim` package. Both packages will provide a terminal version of Vim with similar features. The `vim` package is from the upstream Vim project and is usually a bit more up-to-date in core Vim features, while the `macvim` package will provide the additional GUI version bundled as an app.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MacVim is released under the [Vim License](https://github.com/macvim-dev/macvim/blob/master/LICENSE).
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
If you encounter any issues or have questions, feel free to [open an issue](https://github.com/macvim-dev/macvim/issues) or visit the [discussions](https://github.com/macvim-dev/macvim/discussions) page.
|
|
||||||
|
|
||||||
+90
-92
@@ -1,49 +1,71 @@
|
|||||||
README.txt for version 9.2 of Vim: Vi IMproved.
|
README.txt for version 7.0aa of Vim: Vi IMproved.
|
||||||
|
|
||||||
|
|
||||||
WHAT IS VIM?
|
WHAT IS VIM
|
||||||
|
|
||||||
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
|
Vim is an almost compatible version of the UNIX editor Vi. Many new features
|
||||||
features have been added: multi-level undo, syntax highlighting, command line
|
have been added: multi-level undo, syntax highlighting, command line history,
|
||||||
history, on-line help, spell checking, filename completion, block operations,
|
on-line help, filename completion, block operations, etc. There is also a
|
||||||
script language, etc. There is also a Graphical User Interface (GUI) available.
|
Graphical User Interface (GUI) available. See "runtime/doc/vi_diff.txt" for
|
||||||
Still, Vi compatibility is maintained, those who have Vi "in the fingers" will
|
differences with Vi.
|
||||||
feel at home. See "runtime/doc/vi_diff.txt" for differences with Vi.
|
|
||||||
|
|
||||||
This editor is very useful for editing programs and other plain text files.
|
This editor is very useful for editing programs and other plain ASCII files.
|
||||||
All commands are given with normal keyboard characters, so those who can type
|
All commands are given with normal keyboard characters, so those who can type
|
||||||
with ten fingers can work very fast. Additionally, function keys can be
|
with ten fingers can work very fast. Additionally, function keys can be
|
||||||
mapped to commands by the user, and the mouse can be used.
|
defined by the user, and the mouse can be used.
|
||||||
|
|
||||||
Vim also aims to provide a (mostly) POSIX-compatible vi implementation, when
|
Vim currently runs under Amiga DOS, MS-DOS, MS-Windows 95/98/Me/NT/2000/XP,
|
||||||
compiled with a minimal feature set (typically called vim.tiny), which is used
|
Atari MiNT, Macintosh, BeOS, VMS, RISC OS, OS/2 and almost all flavours of
|
||||||
by many Linux distributions as the default vi editor.
|
UNIX. Porting to other systems should not be very difficult.
|
||||||
|
|
||||||
Vim runs under MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS and almost all
|
|
||||||
flavours of UNIX. Porting to other systems should not be very difficult.
|
|
||||||
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
|
|
||||||
Amiga DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
|
||||||
|
|
||||||
|
|
||||||
DISTRIBUTION
|
DISTRIBUTION
|
||||||
|
|
||||||
You can often use your favorite package manager to install Vim. On Mac and
|
|
||||||
Linux a small version of Vim is pre-installed, you still need to install Vim
|
|
||||||
if you want more features.
|
|
||||||
|
|
||||||
There are separate distributions for Unix, PC, Amiga and some other systems.
|
There are separate distributions for Unix, PC, Amiga and some other systems.
|
||||||
This README.txt file comes with the runtime archive. It includes the
|
This README.txt file comes with the runtime archive. It includes the
|
||||||
documentation, syntax files and other files that are used at runtime. To run
|
documentation, syntax files and other files that are used at runtime. To run
|
||||||
Vim you must get either one of the binary archives or a source archive.
|
Vim you must get either one of the binary archives or a source archive.
|
||||||
Which one you need depends on the system you want to run it on and whether you
|
Which one you need depends on the system you want to run it on and whether you
|
||||||
want or must compile it yourself. Check "https://www.vim.org/download.php" for
|
want or must compile it yourself. Check "http://www.vim.org/download.php" for
|
||||||
an overview of currently available distributions.
|
an overview of currently available distributions.
|
||||||
|
|
||||||
Some popular places to get the latest Vim:
|
|
||||||
* Check out the git repository from github: https://github.com/vim/vim.
|
DOCUMENTATION
|
||||||
* Get the source code as an archive: https://github.com/vim/vim/tags.
|
|
||||||
* Get a Windows executable from the vim-win32-installer repository:
|
The best is to use ":help" in Vim. If you don't have an executable yet, read
|
||||||
https://github.com/vim/vim-win32-installer/releases.
|
"runtime/doc/help.txt". It contains pointers to the other documentation
|
||||||
|
files. The User Manual reads like a book and is recommended to learn to use
|
||||||
|
Vim. See ":help user-manual".
|
||||||
|
|
||||||
|
The vim tutor is a one hour training course for beginners. Mostly it can be
|
||||||
|
started as "vimtutor". See ":help tutor" for more information.
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
|
||||||
|
Vim is Charityware. You can use and copy it as much as you like, but you are
|
||||||
|
encouraged to make a donation to orphans in Uganda. Please read the file
|
||||||
|
"runtime/doc/uganda.txt" for details (do ":help uganda" inside Vim).
|
||||||
|
|
||||||
|
Summary of the license: There are no restrictions on using or distributing an
|
||||||
|
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
||||||
|
text must always be included. For modified versions a few restrictions apply.
|
||||||
|
The license is GPL compatible, you may compile Vim with GPL libraries and
|
||||||
|
distribute it.
|
||||||
|
|
||||||
|
|
||||||
|
SPONSORING
|
||||||
|
|
||||||
|
Fixing bugs and adding new features takes a lot of effort. For a few years
|
||||||
|
Bram has attempted to do this next to a full-time job. During that time the
|
||||||
|
todo list kept getting longer and longer.
|
||||||
|
|
||||||
|
In order for Bram to support Vim properly he needs your help. Through your
|
||||||
|
donations Bram will be able to have a part-time job and spend more time on
|
||||||
|
fixing bugs and adding new features.
|
||||||
|
|
||||||
|
For the most recent information about sponsoring look on the Vim web site:
|
||||||
|
http://www.vim.org/sponsor/
|
||||||
|
|
||||||
|
|
||||||
COMPILING
|
COMPILING
|
||||||
@@ -55,85 +77,61 @@ obtained a source distribution, all the stuff for compiling Vim is in the
|
|||||||
|
|
||||||
INSTALLATION
|
INSTALLATION
|
||||||
|
|
||||||
See one of these files for system-specific instructions. Either in the
|
See one of these files for system-specific instructions:
|
||||||
READMEdir directory (in the repository) or the top directory (if you unpack an
|
|
||||||
archive):
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
README_ami.txt Amiga
|
||||||
README_unix.txt Unix
|
README_unix.txt Unix
|
||||||
README_dos.txt MS-DOS and MS-Windows
|
README_dos.txt MS-DOS and MS-Windows
|
||||||
|
README_os2.txt OS/2
|
||||||
README_mac.txt Macintosh
|
README_mac.txt Macintosh
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
README_vms.txt VMS
|
||||||
|
|
||||||
There are other README_*.txt files, depending on the distribution you used.
|
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION
|
|
||||||
|
|
||||||
The Vim tutor is a one hour training course for beginners. Often it can be
|
|
||||||
started as "vimtutor". See ":help tutor" for more information.
|
|
||||||
|
|
||||||
The best is to use ":help" in Vim. If you don't have an executable yet, read
|
|
||||||
"runtime/doc/help.txt". It contains pointers to the other documentation files.
|
|
||||||
The User Manual reads like a book and is recommended to learn to use Vim. See
|
|
||||||
":help user-manual".
|
|
||||||
|
|
||||||
|
|
||||||
COPYING
|
|
||||||
|
|
||||||
Vim is Charityware. You can use and copy it as much as you like, but you are
|
|
||||||
encouraged to make a donation to help orphans in Uganda. Please read the file
|
|
||||||
"runtime/doc/uganda.txt" for details (do ":help uganda" inside Vim).
|
|
||||||
|
|
||||||
Summary of the license: There are no restrictions on using or distributing an
|
|
||||||
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
|
||||||
text must always be included. For modified versions, a few restrictions apply.
|
|
||||||
The license is GPL compatible, you may compile Vim with GPL libraries and
|
|
||||||
distribute it.
|
|
||||||
|
|
||||||
|
|
||||||
SPONSORING
|
|
||||||
|
|
||||||
Fixing bugs and adding new features takes a lot of time and effort. To show
|
|
||||||
your appreciation for the work and motivate developers to continue working on
|
|
||||||
Vim please send a donation.
|
|
||||||
|
|
||||||
The money you donated will be mainly used to help children in Uganda. See
|
|
||||||
"runtime/doc/uganda.txt". But at the same time donations increase the
|
|
||||||
development team motivation to keep working on Vim!
|
|
||||||
|
|
||||||
For the most recent information about sponsoring look on the Vim web site:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
|
|
||||||
CONTRIBUTING
|
|
||||||
|
|
||||||
If you would like to help make Vim better, see the CONTRIBUTING.md file.
|
|
||||||
|
|
||||||
|
|
||||||
INFORMATION
|
INFORMATION
|
||||||
|
|
||||||
If you are on macOS, you can use MacVim: https://macvim.org
|
|
||||||
|
|
||||||
The latest news about Vim can be found on the Vim home page:
|
The latest news about Vim can be found on the Vim home page:
|
||||||
https://www.vim.org/
|
http://www.vim.org/
|
||||||
|
|
||||||
If you have problems, have a look at the Vim documentation or tips:
|
If you have problems, have a look at the Vim FAQ:
|
||||||
https://www.vim.org/docs.php
|
http://vimdoc.sf.net/vimfaq.html
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
If you still have problems or any other questions, use one of the mailing lists
|
Send bug reports to:
|
||||||
to discuss them with Vim users and developers:
|
Bram Moolenaar <Bram@vim.org>
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
If nothing else works, report bugs directly to the vim-dev mailing list:
|
There are five mailing lists for Vim:
|
||||||
<vim-dev@vim.org>
|
<vim@vim.org>
|
||||||
|
For discussions about using existing versions of Vim: Useful mappings,
|
||||||
|
questions, answers, where to get a specific version, etc.
|
||||||
|
<vim-dev@vim.org>
|
||||||
|
For discussions about changing Vim: New features, porting, beta-test
|
||||||
|
versions, etc.
|
||||||
|
<vim-announce@vim.org>
|
||||||
|
Announcements about new versions of Vim; also beta-test versions and
|
||||||
|
ports to different systems.
|
||||||
|
<vim-multibyte@vim.org>
|
||||||
|
For discussions about using and improving the multi-byte aspects of
|
||||||
|
Vim: XIM, Hangul, fontset, etc.
|
||||||
|
<vim-mac@vim.org>
|
||||||
|
For discussions about using and improving Vim on the Macintosh.
|
||||||
|
|
||||||
|
For more info and URLs of the archives see "http://www.vim.org/maillist.php".
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
- You can only send messages to these lists if you have subscribed!
|
||||||
|
- You need to send the messages from the same location as where you subscribed
|
||||||
|
from (to avoid spam mail).
|
||||||
|
- Maximum message size is 40000 characters.
|
||||||
|
|
||||||
|
If you want to join a maillist, send a message to
|
||||||
|
<vim-help@vim.org>
|
||||||
|
Make sure that your "From:" address is correct. Then the list server will
|
||||||
|
send you a help message.
|
||||||
|
|
||||||
|
|
||||||
MAIN AUTHOR
|
MAIN AUTHOR
|
||||||
|
|
||||||
Most of Vim was created by Bram Moolenaar <Bram@vim.org>, ":help Bram-Moolenaar"
|
Send any other comments, patches, pizza and suggestions to:
|
||||||
|
|
||||||
Send any other comments, patches, flowers and suggestions to the vim-dev
|
Bram Moolenaar E-mail: Bram@vim.org
|
||||||
mailing list: <vim-dev@vim.org>
|
Clematisstraat 30
|
||||||
|
5925 BE Venlo Tel: +31 77 387 2340
|
||||||
|
The Netherlands Fax/voice-mail: +31 20 773 8272
|
||||||
|
|||||||
-353
@@ -1,353 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
# What is Vim9?
|
|
||||||
|
|
||||||
This is a new syntax for Vim script that was introduced with Vim 9.0.
|
|
||||||
It intends making Vim script faster and better.
|
|
||||||
|
|
||||||
|
|
||||||
# Why Vim9?
|
|
||||||
|
|
||||||
## 1. FASTER VIM SCRIPT
|
|
||||||
|
|
||||||
The third item on the poll results of 2018, after popup windows and text
|
|
||||||
properties, both of which have been implemented, is faster Vim script.
|
|
||||||
So how do we do that?
|
|
||||||
|
|
||||||
I have been throwing some ideas around, and soon came to the conclusion
|
|
||||||
that the current way functions are called and executed, with
|
|
||||||
dictionaries for the arguments and local variables, is never going to be
|
|
||||||
very fast. We're lucky if we can make it twice as fast. The overhead
|
|
||||||
of a function call and executing every line is just too high.
|
|
||||||
|
|
||||||
So what then? We can only make something fast by having a new way of
|
|
||||||
defining a function, with similar but different properties of the old
|
|
||||||
way:
|
|
||||||
* Arguments are only available by name, not through the a: dictionary or
|
|
||||||
the a:000 list.
|
|
||||||
* Local variables are not available in an l: dictionary.
|
|
||||||
* A few more things that slow us down, such as exception handling details.
|
|
||||||
|
|
||||||
I implemented a "proof of concept" and measured the time to run a simple
|
|
||||||
for loop with an addition (Justin used this example in his presentation,
|
|
||||||
full code is below):
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
let sum = 0
|
|
||||||
for i in range(1, 2999999)
|
|
||||||
let sum += i
|
|
||||||
endfor
|
|
||||||
```
|
|
||||||
|
|
||||||
| how | time in sec |
|
|
||||||
| --------| -------- |
|
|
||||||
| Vim old | 5.018541 |
|
|
||||||
| Python | 0.369598 |
|
|
||||||
| Lua | 0.078817 |
|
|
||||||
| LuaJit | 0.004245 |
|
|
||||||
| Vim new | 0.073595 |
|
|
||||||
|
|
||||||
That looks very promising! It's just one example, but it shows how much
|
|
||||||
we can gain, and also that Vim script can be faster than builtin
|
|
||||||
interfaces.
|
|
||||||
|
|
||||||
LuaJit is much faster at Lua-only instructions. In practice the script would
|
|
||||||
not do something useless counting, but change the text. For example,
|
|
||||||
reindent all the lines:
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
let totallen = 0
|
|
||||||
for i in range(1, 100000)
|
|
||||||
call setline(i, ' ' .. getline(i))
|
|
||||||
let totallen += len(getline(i))
|
|
||||||
endfor
|
|
||||||
```
|
|
||||||
|
|
||||||
| how | time in sec |
|
|
||||||
| --------| -------- |
|
|
||||||
| Vim old | 0.578598 |
|
|
||||||
| Python | 0.152040 |
|
|
||||||
| Lua | 0.164917 |
|
|
||||||
| LuaJit | 0.128400 |
|
|
||||||
| Vim new | 0.079692 |
|
|
||||||
|
|
||||||
[These times were measured on a different system by Dominique Pelle]
|
|
||||||
|
|
||||||
The differences are smaller, but Vim 9 script is clearly the fastest.
|
|
||||||
Using LuaJIT is only a little bit faster than plain Lua here, clearly the call
|
|
||||||
back to the Vim code is costly.
|
|
||||||
|
|
||||||
How does Vim9 script work? The function is first compiled into a sequence of
|
|
||||||
instructions. Each instruction has one or two parameters and a stack is
|
|
||||||
used to store intermediate results. Local variables are also on the
|
|
||||||
stack, space is reserved during compilation. This is a fairly normal
|
|
||||||
way of compilation into an intermediate format, specialized for Vim,
|
|
||||||
e.g. each stack item is a typeval_T. And one of the instructions is
|
|
||||||
"execute Ex command", for commands that are not compiled.
|
|
||||||
|
|
||||||
|
|
||||||
## 2. DEPRIORITIZE INTERFACES
|
|
||||||
|
|
||||||
Attempts have been made to implement functionality with built-in script
|
|
||||||
languages such as Python, Perl, Lua, Tcl and Ruby. This never gained much
|
|
||||||
foothold, for various reasons.
|
|
||||||
|
|
||||||
Instead of using script language support in Vim:
|
|
||||||
* Encourage implementing external tools in any language and communicate
|
|
||||||
with them. The job and channel support already makes this possible.
|
|
||||||
Really any language can be used, also Java and Go, which are not
|
|
||||||
available built-in.
|
|
||||||
* No priority for the built-in language interfaces. They will have to be kept
|
|
||||||
for backwards compatibility, but many users won't need a Vim build with these
|
|
||||||
interfaces.
|
|
||||||
* Improve the Vim script language, it is used to communicate with the external
|
|
||||||
tool and implements the Vim side of the interface. Also, it can be used when
|
|
||||||
an external tool is undesired.
|
|
||||||
|
|
||||||
Altogether this creates a clear situation: Vim with the +eval feature
|
|
||||||
will be sufficient for most plugins, while some plugins require
|
|
||||||
installing a tool that can be written in any language. No confusion
|
|
||||||
about having Vim but the plugin not working because some specific
|
|
||||||
language is missing. This is a good long term goal.
|
|
||||||
|
|
||||||
Rationale: Why is it better to run a tool separately from Vim than using a
|
|
||||||
built-in interface and interpreter? Take for example something that is
|
|
||||||
written in Python:
|
|
||||||
* The built-in interface uses the embedded python interpreter. This is less
|
|
||||||
well maintained than the python command. Building Vim with it requires
|
|
||||||
installing developer packages. If loaded dynamically there can be a version
|
|
||||||
mismatch.
|
|
||||||
* When running the tool externally the standard python command can be used,
|
|
||||||
which is quite often available by default or can be easily installed.
|
|
||||||
* The built-in interface has an API that is unique for Vim with Python. This is
|
|
||||||
an extra API to learn.
|
|
||||||
* A .py file can be compiled into a .pyc file and execute much faster.
|
|
||||||
* Inside Vim multi-threading can cause problems, since the Vim core is single
|
|
||||||
threaded. In an external tool there are no such problems.
|
|
||||||
* The Vim part is written in .vim files, the Python part is in .py files, this
|
|
||||||
is nicely separated.
|
|
||||||
* Disadvantage: An interface needs to be made between Vim and Python.
|
|
||||||
JSON is available for this, and it's fairly easy to use. But it still
|
|
||||||
requires implementing asynchronous communication.
|
|
||||||
|
|
||||||
|
|
||||||
## 3. BETTER VIM SCRIPT
|
|
||||||
|
|
||||||
To make Vim faster a new way of defining a function needs to be added.
|
|
||||||
While we are doing that, since the lines in this function won't be fully
|
|
||||||
backwards compatible anyway, we can also make Vim script easier to use.
|
|
||||||
In other words: "less weird". Making it work more like modern
|
|
||||||
programming languages will help. No surprises.
|
|
||||||
|
|
||||||
A good example is how in a function the arguments are prefixed with
|
|
||||||
"a:". No other language I know does that, so let's drop it.
|
|
||||||
|
|
||||||
Taking this one step further is also dropping "s:" for script-local variables;
|
|
||||||
everything at the script level is script-local by default. Since this is not
|
|
||||||
backwards compatible it requires a new script style: Vim9 script!
|
|
||||||
|
|
||||||
To avoid having more variations, the syntax inside a compiled function is the
|
|
||||||
same as in Vim9 script. Thus you have legacy syntax and Vim9 syntax.
|
|
||||||
|
|
||||||
It should be possible to convert code from other languages to Vim
|
|
||||||
script. We can add functionality to make this easier. This still needs
|
|
||||||
to be discussed, but we can consider adding type checking and a simple
|
|
||||||
form of classes. If you look at JavaScript for example, it has gone
|
|
||||||
through these stages over time, adding real class support and now
|
|
||||||
TypeScript adds type checking. But we'll have to see how much of that
|
|
||||||
we actually want to include in Vim script. Ideally a conversion tool
|
|
||||||
can take Python, JavaScript or TypeScript code and convert it to Vim
|
|
||||||
script, with only some things that cannot be converted.
|
|
||||||
|
|
||||||
Vim script won't work the same as any specific language, but we can use
|
|
||||||
mechanisms that are commonly known, ideally with the same syntax. One
|
|
||||||
thing I have been thinking of is assignments without ":let". I often
|
|
||||||
make that mistake (after writing JavaScript especially). I think it is
|
|
||||||
possible, if we make local variables shadow commands. That should be OK,
|
|
||||||
if you shadow a command you want to use, just rename the variable.
|
|
||||||
Using "var" and "const" to declare a variable, like in JavaScript and
|
|
||||||
TypeScript, can work:
|
|
||||||
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
def MyFunction(arg: number): number
|
|
||||||
var local = 1
|
|
||||||
var todo = arg
|
|
||||||
const ADD = 88
|
|
||||||
while todo > 0
|
|
||||||
local += ADD
|
|
||||||
todo -= 1
|
|
||||||
endwhile
|
|
||||||
return local
|
|
||||||
enddef
|
|
||||||
```
|
|
||||||
|
|
||||||
The similarity with JavaScript/TypeScript can also be used for dependencies
|
|
||||||
between files. Vim currently uses the `:source` command, which has several
|
|
||||||
disadvantages:
|
|
||||||
* In the sourced script, is not clear what it provides. By default all
|
|
||||||
functions are global and can be used elsewhere.
|
|
||||||
* In a script that sources other scripts, it is not clear what function comes
|
|
||||||
from what sourced script. Finding the implementation is a hassle.
|
|
||||||
* Prevention of loading the whole script twice must be manually implemented.
|
|
||||||
|
|
||||||
We can use the `:import` and `:export` commands from the JavaScript standard to
|
|
||||||
make this much better. For example, in script "myfunction.vim" define a
|
|
||||||
function and export it:
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
vim9script " Vim9 script syntax used here
|
|
||||||
|
|
||||||
var local = 'local variable is not exported, script-local'
|
|
||||||
|
|
||||||
export def MyFunction() " exported function
|
|
||||||
...
|
|
||||||
|
|
||||||
def LocalFunction() " not exported, script-local
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
And in another script import the function:
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
vim9script " Vim9 script syntax used here
|
|
||||||
|
|
||||||
import MyFunction from 'myfunction.vim'
|
|
||||||
```
|
|
||||||
|
|
||||||
This looks like JavaScript/TypeScript, thus many users will understand the
|
|
||||||
syntax.
|
|
||||||
|
|
||||||
These are ideas, this will take time to design, discuss and implement.
|
|
||||||
Eventually this will lead to Vim 9!
|
|
||||||
|
|
||||||
|
|
||||||
## Code for sum time measurements
|
|
||||||
|
|
||||||
Vim was built with -O2.
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
func VimOld()
|
|
||||||
let sum = 0
|
|
||||||
for i in range(1, 2999999)
|
|
||||||
let sum += i
|
|
||||||
endfor
|
|
||||||
return sum
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
func Python()
|
|
||||||
py3 << END
|
|
||||||
sum = 0
|
|
||||||
for i in range(1, 3000000):
|
|
||||||
sum += i
|
|
||||||
END
|
|
||||||
return py3eval('sum')
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
func Lua()
|
|
||||||
lua << END
|
|
||||||
sum = 0
|
|
||||||
for i = 1, 2999999 do
|
|
||||||
sum = sum + i
|
|
||||||
end
|
|
||||||
END
|
|
||||||
return luaeval('sum')
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
def VimNew(): number
|
|
||||||
var sum = 0
|
|
||||||
for i in range(1, 2999999)
|
|
||||||
sum += i
|
|
||||||
endfor
|
|
||||||
return sum
|
|
||||||
enddef
|
|
||||||
|
|
||||||
let start = reltime()
|
|
||||||
echo VimOld()
|
|
||||||
echo 'Vim old: ' .. reltimestr(reltime(start))
|
|
||||||
|
|
||||||
let start = reltime()
|
|
||||||
echo Python()
|
|
||||||
echo 'Python: ' .. reltimestr(reltime(start))
|
|
||||||
|
|
||||||
let start = reltime()
|
|
||||||
echo Lua()
|
|
||||||
echo 'Lua: ' .. reltimestr(reltime(start))
|
|
||||||
|
|
||||||
let start = reltime()
|
|
||||||
echo VimNew()
|
|
||||||
echo 'Vim new: ' .. reltimestr(reltime(start))
|
|
||||||
```
|
|
||||||
|
|
||||||
## Code for indent time measurements
|
|
||||||
|
|
||||||
``` vim
|
|
||||||
def VimNew(): number
|
|
||||||
var totallen = 0
|
|
||||||
for i in range(1, 100000)
|
|
||||||
setline(i, ' ' .. getline(i))
|
|
||||||
totallen += len(getline(i))
|
|
||||||
endfor
|
|
||||||
return totallen
|
|
||||||
enddef
|
|
||||||
|
|
||||||
func VimOld()
|
|
||||||
let totallen = 0
|
|
||||||
for i in range(1, 100000)
|
|
||||||
call setline(i, ' ' .. getline(i))
|
|
||||||
let totallen += len(getline(i))
|
|
||||||
endfor
|
|
||||||
return totallen
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
func Lua()
|
|
||||||
lua << END
|
|
||||||
b = vim.buffer()
|
|
||||||
totallen = 0
|
|
||||||
for i = 1, 100000 do
|
|
||||||
b[i] = " " .. b[i]
|
|
||||||
totallen = totallen + string.len(b[i])
|
|
||||||
end
|
|
||||||
END
|
|
||||||
return luaeval('totallen')
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
func Python()
|
|
||||||
py3 << END
|
|
||||||
cb = vim.current.buffer
|
|
||||||
totallen = 0
|
|
||||||
for i in range(0, 100000):
|
|
||||||
cb[i] = ' ' + cb[i]
|
|
||||||
totallen += len(cb[i])
|
|
||||||
END
|
|
||||||
return py3eval('totallen')
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
new
|
|
||||||
call setline(1, range(100000))
|
|
||||||
let start = reltime()
|
|
||||||
echo VimOld()
|
|
||||||
echo 'Vim old: ' .. reltimestr(reltime(start))
|
|
||||||
bwipe!
|
|
||||||
|
|
||||||
new
|
|
||||||
call setline(1, range(100000))
|
|
||||||
let start = reltime()
|
|
||||||
echo Python()
|
|
||||||
echo 'Python: ' .. reltimestr(reltime(start))
|
|
||||||
bwipe!
|
|
||||||
|
|
||||||
new
|
|
||||||
call setline(1, range(100000))
|
|
||||||
let start = reltime()
|
|
||||||
echo Lua()
|
|
||||||
echo 'Lua: ' .. reltimestr(reltime(start))
|
|
||||||
bwipe!
|
|
||||||
|
|
||||||
new
|
|
||||||
call setline(1, range(100000))
|
|
||||||
let start = reltime()
|
|
||||||
echo VimNew()
|
|
||||||
echo 'Vim new: ' .. reltimestr(reltime(start))
|
|
||||||
bwipe!
|
|
||||||
```
|
|
||||||
-158
@@ -1,158 +0,0 @@
|
|||||||
# [](https://www.vim.org)
|
|
||||||
|
|
||||||
[](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
|
|
||||||
[](https://cirrus-ci.com/github/vim/vim)
|
|
||||||
[](https://codecov.io/gh/vim/vim?branch=master)
|
|
||||||
[](https://scan.coverity.com/projects/vim)
|
|
||||||
[](https://buildd.debian.org/vim)
|
|
||||||
[](https://repology.org/metapackage/vim)
|
|
||||||
[](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html)
|
|
||||||
|
|
||||||
If you find a bug or want to discuss the best way to add a new feature, please
|
|
||||||
[open an issue](https://github.com/vim/vim/issues/new/choose).
|
|
||||||
If you have a question or want to discuss the best way to do something with
|
|
||||||
Vim, you can join [`#vim`](https://web.libera.chat/#vim),
|
|
||||||
[reddit.com/r/vim](https://reddit.com/r/vim),
|
|
||||||
use [StackExchange](https://vi.stackexchange.com/),
|
|
||||||
or one of the [Maillists](https://www.vim.org/community.php).
|
|
||||||
|
|
||||||
## What is Vim?
|
|
||||||
|
|
||||||
Vim is a greatly improved version of the good old UNIX editor
|
|
||||||
[Vi](https://en.wikipedia.org/wiki/Vi_(text_editor)). Many new
|
|
||||||
features have been added: multi-level undo, syntax highlighting, command line
|
|
||||||
history, on-line help, spell checking, filename completion, block operations,
|
|
||||||
script language, etc. There is also a Graphical User Interface (GUI)
|
|
||||||
available. Still, Vi compatibility is maintained, those who have Vi "in the
|
|
||||||
fingers" will feel at home.
|
|
||||||
See [`runtime/doc/vi_diff.txt`](runtime/doc/vi_diff.txt) for differences with
|
|
||||||
Vi.
|
|
||||||
|
|
||||||
This editor is very useful for editing programs and other plain text files.
|
|
||||||
All commands are given with normal keyboard characters, so those who can type
|
|
||||||
with ten fingers can work very fast. Additionally, function keys can be
|
|
||||||
mapped to commands by the user, and the mouse can be used.
|
|
||||||
|
|
||||||
Vim also aims to provide a (mostly) POSIX-compatible vi implementation, when
|
|
||||||
compiled with a minimal feature set (typically called vim.tiny), which is used
|
|
||||||
by many Linux distributions as the default vi editor.
|
|
||||||
|
|
||||||
Vim runs under MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS and almost all
|
|
||||||
flavours of UNIX. Porting to other systems should not be very difficult.
|
|
||||||
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
|
|
||||||
Amiga DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
|
||||||
|
|
||||||
For Vim9 script see [README_VIM9](README_VIM9.md).
|
|
||||||
|
|
||||||
## Distribution
|
|
||||||
|
|
||||||
You can often use your favorite package manager to install Vim. On Mac and
|
|
||||||
Linux a small version of Vim is pre-installed, you still need to install Vim
|
|
||||||
if you want more features.
|
|
||||||
|
|
||||||
There are separate distributions for Unix, PC, Amiga and some other systems.
|
|
||||||
This `README.md` file comes with the runtime archive. It includes the
|
|
||||||
documentation, syntax files and other files that are used at runtime. To run
|
|
||||||
Vim you must get either one of the binary archives or a source archive.
|
|
||||||
Which one you need depends on the system you want to run it on and whether you
|
|
||||||
want or must compile it yourself. Check https://www.vim.org/download.php for
|
|
||||||
an overview of currently available distributions.
|
|
||||||
|
|
||||||
Some popular places to get the latest Vim:
|
|
||||||
* Check out the git repository from [GitHub](https://github.com/vim/vim).
|
|
||||||
* Get the source code as an [archive](https://github.com/vim/vim/tags).
|
|
||||||
* Get a Windows executable from the
|
|
||||||
[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases) repository.
|
|
||||||
|
|
||||||
## Compiling
|
|
||||||
|
|
||||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
|
||||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
|
||||||
[`src`](./src/) directory. See [`src/INSTALL`](./src/INSTALL) for instructions.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
See one of these files for system-specific instructions. Either in the
|
|
||||||
[READMEdir directory](./READMEdir/) (in the repository) or
|
|
||||||
the top directory (if you unpack an archive):
|
|
||||||
|
|
||||||
```
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS and MS-Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
```
|
|
||||||
|
|
||||||
There are other `README_*.txt` files, depending on the distribution you used.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
The Vim tutor is a one hour training course for beginners. Often it can be
|
|
||||||
started as `vimtutor`. See `:help tutor` for more information.
|
|
||||||
|
|
||||||
The best is to use `:help` in Vim. If you don't have an executable yet, read
|
|
||||||
[`runtime/doc/help.txt`](./runtime/doc/help.txt).
|
|
||||||
It contains pointers to the other documentation files.
|
|
||||||
The User Manual reads like a book and is recommended to learn to use
|
|
||||||
Vim. See `:help user-manual`.
|
|
||||||
|
|
||||||
## Copying
|
|
||||||
|
|
||||||
Vim is Charityware. You can use and copy it as much as you like, but you are
|
|
||||||
encouraged to make a donation to help orphans in Uganda. Please read the file
|
|
||||||
[`runtime/doc/uganda.txt`](./runtime/doc/uganda.txt)
|
|
||||||
for details (do `:help uganda` inside Vim).
|
|
||||||
|
|
||||||
Summary of the license: There are no restrictions on using or distributing an
|
|
||||||
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
|
||||||
text must always be included. For modified versions, a few restrictions apply.
|
|
||||||
The license is GPL compatible, you may compile Vim with GPL libraries and
|
|
||||||
distribute it.
|
|
||||||
|
|
||||||
## Sponsoring
|
|
||||||
|
|
||||||
Fixing bugs and adding new features takes a lot of time and effort. To show
|
|
||||||
your appreciation for the work and motivate developers to continue working on
|
|
||||||
Vim please send a donation.
|
|
||||||
|
|
||||||
The money you donated will be mainly used to help children in Uganda. See
|
|
||||||
[`runtime/doc/uganda.txt`](./runtime/doc/uganda.txt). But at the same time
|
|
||||||
donations increase the development team motivation to keep working on Vim!
|
|
||||||
|
|
||||||
For the most recent information about sponsoring look on the Vim web site:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
If you would like to help make Vim better, see the
|
|
||||||
[CONTRIBUTING.md](./CONTRIBUTING.md) file.
|
|
||||||
|
|
||||||
## Information
|
|
||||||
|
|
||||||
If you are on macOS, you can use [MacVim](https://macvim.org).
|
|
||||||
|
|
||||||
The latest news about Vim can be found on the Vim home page:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
If you have problems, have a look at the Vim documentation or tips:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
If you still have problems or any other questions, use one of the mailing
|
|
||||||
lists to discuss them with Vim users and developers:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
If nothing else works, report bugs directly to the vim-dev mailing list:
|
|
||||||
`<vim-dev@vim.org>`
|
|
||||||
|
|
||||||
## Main author
|
|
||||||
|
|
||||||
Most of Vim was created by Bram Moolenaar `<Bram@vim.org>`
|
|
||||||
[Bram-Moolenaar](https://vimhelp.org/version9.txt.html#Bram-Moolenaar)
|
|
||||||
|
|
||||||
Send any other comments, patches, flowers and suggestions to the vim-dev mailing list:
|
|
||||||
`<vim-dev@vim.org>`
|
|
||||||
|
|
||||||
This is `README.md` for version 9.2 of Vim: Vi IMproved.
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
|
|
||||||
for editing programs and other plain ASCII text. Full Vi
|
|
||||||
compatibility and includes all Ex commands. Extra features
|
|
||||||
above Vi: Multilevel undo, multiple windows, syntax
|
|
||||||
highlighting, command line history, folding, improved command
|
|
||||||
line editing, command typeahead display, command to display
|
|
||||||
yank buffers, possibility to edit binary files, file name
|
|
||||||
stack, support for Manx QuickFix and other compiler's error
|
|
||||||
messages, shows current file name in window title, on-line
|
|
||||||
help, rectangular cut/paste, etc., etc., etc...
|
|
||||||
|
|
||||||
Version 9.2. Also runs under UNIX, MS-Windows, Mac, etc.
|
|
||||||
vim92rt.tgz contains the documentation and syntax files.
|
|
||||||
vim92bin.tgz contains the binaries.
|
|
||||||
vim92src.tgz contains the sources.
|
|
||||||
Author: Bram Moolenaar et al.
|
|
||||||
|
|
||||||
|
|
||||||
Xxd Hex dumper and reader. Can be used to view files as hex, edit
|
|
||||||
them and write them back. Can also be used to patch files.
|
|
||||||
|
|
||||||
Version 2025 Nov 26
|
|
||||||
Author: Juergen Weigert et al.
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,32 +0,0 @@
|
|||||||
README_ami.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file explains the installation of Vim on Amiga systems.
|
|
||||||
See README.txt for general information about Vim.
|
|
||||||
|
|
||||||
|
|
||||||
Unpack the distributed files in the place where you want to keep them. It is
|
|
||||||
wise to have a "vim" directory to keep your vimrc file and any other files you
|
|
||||||
change. The distributed files go into a subdirectory. This way you can
|
|
||||||
easily upgrade to a new version. For example:
|
|
||||||
|
|
||||||
dh0:editors/vim contains your vimrc and modified files
|
|
||||||
dh0:editors/vim/vim54 contains the Vim version 5.4 distributed files
|
|
||||||
dh0:editors/vim/vim55 contains the Vim version 5.5 distributed files
|
|
||||||
|
|
||||||
You would then unpack the archives like this:
|
|
||||||
|
|
||||||
cd dh0:editors
|
|
||||||
tar xf t:vim92bin.tar
|
|
||||||
tar xf t:vim92rt.tar
|
|
||||||
|
|
||||||
Set the $VIM environment variable to point to the top directory of your Vim
|
|
||||||
files. For the above example:
|
|
||||||
|
|
||||||
set VIM=dh0:editors/vim
|
|
||||||
|
|
||||||
Vim version 5.4 will look for your vimrc file in $VIM, and for the runtime
|
|
||||||
files in $VIM/vim54. See ":help $VIM" for more information.
|
|
||||||
|
|
||||||
Make sure the Vim executable is in your search path. Either copy the Vim
|
|
||||||
executable to a directory that is in your search path, or (preferred) modify
|
|
||||||
the search path to include the directory where the Vim executable is.
|
|
||||||
Binary file not shown.
@@ -1,12 +0,0 @@
|
|||||||
README_amibin.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
See "README_ami.txt" for installation instructions for the Amiga.
|
|
||||||
These files are in the runtime archive (vim92rt.tgz).
|
|
||||||
|
|
||||||
|
|
||||||
The Amiga "bin" archive contains the Vim executable for the Amiga. It was
|
|
||||||
compiled with "big" features.
|
|
||||||
|
|
||||||
Postscript printing is not included to avoid requiring floating point
|
|
||||||
computations.
|
|
||||||
Binary file not shown.
@@ -1,11 +0,0 @@
|
|||||||
README_amisrc.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
See "README_ami.txt" for installation instructions for the Amiga.
|
|
||||||
These files are in the runtime archive (vim92rt.tgz).
|
|
||||||
|
|
||||||
|
|
||||||
The Amiga source archive contains the files needed to compile Vim on the
|
|
||||||
Amiga.
|
|
||||||
|
|
||||||
See "src/INSTALLami.txt" for instructions on how to compile Vim on the Amiga.
|
|
||||||
Binary file not shown.
@@ -1,16 +0,0 @@
|
|||||||
README_bindos.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
|
|
||||||
These files are in the runtime archive (vim92rt.zip).
|
|
||||||
|
|
||||||
|
|
||||||
There are several binary distributions of Vim for the PC. You would normally
|
|
||||||
pick only one of them, but it's also possible to install several.
|
|
||||||
These ones are available (the version number may differ):
|
|
||||||
vim92w32.zip Windows console version
|
|
||||||
gvim92.zip Windows GUI version
|
|
||||||
gvim92ole.zip Windows GUI version with OLE
|
|
||||||
|
|
||||||
You MUST also get the runtime archive (vim92rt.zip).
|
|
||||||
The sources are also available (vim92src.zip).
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
README_dos.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file explains the installation of Vim on MS-Windows systems.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
|
|
||||||
There are two ways to install Vim:
|
|
||||||
A. Use the self-installing .exe file.
|
|
||||||
B. Unpack .zip files and run the install.exe program.
|
|
||||||
|
|
||||||
|
|
||||||
A. Using the self-installing .exe
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
This is mostly self-explaining. Just follow the prompts and make the
|
|
||||||
selections. A few things to watch out for:
|
|
||||||
|
|
||||||
- When an existing installation is detected, you are offered to first remove
|
|
||||||
this. The uninstall program is then started while the install program waits
|
|
||||||
for it to complete. Sometimes the windows overlap each other, which can be
|
|
||||||
confusing. Be sure the complete the uninstalling before continuing the
|
|
||||||
installation. Watch the taskbar for uninstall windows.
|
|
||||||
|
|
||||||
- When selecting a directory to install Vim, use the same place where other
|
|
||||||
versions are located. This makes it easier to find your _vimrc file. For
|
|
||||||
example "C:\Program Files\vim" or "D:\vim". A name ending in "vim" is
|
|
||||||
preferred.
|
|
||||||
|
|
||||||
- After selecting the directory where to install Vim, clicking on "Next" will
|
|
||||||
start the installation.
|
|
||||||
|
|
||||||
|
|
||||||
B. Using .zip files
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
These are the normal steps to install Vim from the .zip archives:
|
|
||||||
|
|
||||||
1. Go to the directory where you want to put the Vim files. Examples:
|
|
||||||
cd C:\
|
|
||||||
cd D:\editors
|
|
||||||
If you already have a "vim" directory, go to the directory in which it is
|
|
||||||
located. Check the $VIM setting to see where it points to:
|
|
||||||
set VIM
|
|
||||||
For example, if you have
|
|
||||||
C:\vim\vim92
|
|
||||||
do
|
|
||||||
cd C:\
|
|
||||||
Binary and runtime Vim archives are normally unpacked in the same location,
|
|
||||||
on top of each other.
|
|
||||||
|
|
||||||
2. Unpack the zip archives. This will create a new directory "vim\vim92",
|
|
||||||
in which all the distributed Vim files are placed. Since the directory
|
|
||||||
name includes the version number, it is unlikely that you overwrite
|
|
||||||
existing files.
|
|
||||||
Examples:
|
|
||||||
pkunzip -d gvim92.zip
|
|
||||||
unzip vim92w32.zip
|
|
||||||
|
|
||||||
You need to unpack the runtime archive and at least one of the binary
|
|
||||||
archives. When using more than one binary version, be careful not to
|
|
||||||
overwrite one version with the other, the names of the executables
|
|
||||||
"vim.exe" and "gvim.exe" are the same.
|
|
||||||
|
|
||||||
After you unpacked the files, you can still move the whole directory tree
|
|
||||||
to another location. That is where they will stay, the install program
|
|
||||||
won't move or copy the runtime files.
|
|
||||||
|
|
||||||
3. Change to the new directory:
|
|
||||||
cd vim\vim92
|
|
||||||
Run the "install.exe" program. It will ask you a number of questions about
|
|
||||||
how you would like to have your Vim setup. Among these are:
|
|
||||||
- You can tell it to write a "_vimrc" file with your preferences in the
|
|
||||||
parent directory.
|
|
||||||
- It can also install an "Edit with Vim" entry in the Windows Explorer
|
|
||||||
popup menu.
|
|
||||||
- You can have it create batch files, so that you can run Vim from the
|
|
||||||
console or in a shell. You can select one of the directories in your
|
|
||||||
$PATH. If you skip this, you can add Vim to the search path manually:
|
|
||||||
The simplest is to add a line to your autoexec.bat. Examples:
|
|
||||||
set path=%path%;C:\vim\vim92
|
|
||||||
set path=%path%;D:\editors\vim\vim92
|
|
||||||
- Create entries for Vim on the desktop and in the Start menu.
|
|
||||||
|
|
||||||
That's it!
|
|
||||||
|
|
||||||
|
|
||||||
Remarks:
|
|
||||||
|
|
||||||
- If Vim can't find the runtime files, ":help" won't work and the GUI version
|
|
||||||
won't show a menubar. Then you need to set the $VIM environment variable to
|
|
||||||
point to the top directory of your Vim files. Example:
|
|
||||||
set VIM=C:\editors\vim
|
|
||||||
Vim version 9.2 will look for your vimrc file in $VIM, and for the runtime
|
|
||||||
files in $VIM/vim92. See ":help $VIM" for more information.
|
|
||||||
|
|
||||||
- To avoid confusion between distributed files of different versions and your
|
|
||||||
own modified vim scripts, it is recommended to use this directory layout:
|
|
||||||
("C:\vim" is used here as the root, replace it with the path you use)
|
|
||||||
Your own files:
|
|
||||||
C:\vim\_vimrc Your personal vimrc.
|
|
||||||
C:\vim\_viminfo Dynamic info for 'viminfo'.
|
|
||||||
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
|
|
||||||
C:\vim\... Other files you made.
|
|
||||||
Distributed files:
|
|
||||||
C:\vim\vim92\vim.exe The Vim version 9.2 executable.
|
|
||||||
C:\vim\vim92\doc\*.txt The version 9.2 documentation files.
|
|
||||||
C:\vim\vim92\bugreport.vim A Vim version 9.2 script.
|
|
||||||
C:\vim\vim92\... Other version 9.2 distributed files.
|
|
||||||
In this case the $VIM environment variable would be set like this:
|
|
||||||
set VIM=C:\vim
|
|
||||||
Then $VIMRUNTIME will automatically be set to "$VIM\vim92". Don't add
|
|
||||||
"vim92" to $VIM, that won't work.
|
|
||||||
|
|
||||||
- You can put your Vim executable anywhere else. If the executable is not
|
|
||||||
with the other Vim files, you should set $VIM. The simplest is to add a line
|
|
||||||
to your autoexec.bat. Examples:
|
|
||||||
set VIM=c:\vim
|
|
||||||
set VIM=d:\editors\vim
|
|
||||||
|
|
||||||
- If you have told the "install.exe" program to add the "Edit with Vim" menu
|
|
||||||
entry, you can remove it by running the "uninstall.exe". See
|
|
||||||
":help win32-popup-menu".
|
|
||||||
|
|
||||||
For further information, type one of these inside Vim:
|
|
||||||
:help dos
|
|
||||||
:help win32
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
README_extra.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
These extra files of Vim are for special purposes. This README explains what
|
|
||||||
the files are for. For general information about Vim, see the "README.txt"
|
|
||||||
file.
|
|
||||||
|
|
||||||
|
|
||||||
farsi/* Files for the Farsi (persian) language. If you don't
|
|
||||||
know what Farsi is, this is not for you.
|
|
||||||
|
|
||||||
src/if_sniff.* Interface to SNiFF. If you don't know what SNiFF is,
|
|
||||||
this is not for you.
|
|
||||||
|
|
||||||
src/os_amiga.* Files for the Amiga port.
|
|
||||||
|
|
||||||
src/os_msdos.*
|
|
||||||
src/os_dos.* Files for the MS-DOS port.
|
|
||||||
|
|
||||||
src/os_mac.* Files for the Mac port.
|
|
||||||
|
|
||||||
src/MacVim/* Files for the MacVim port.
|
|
||||||
|
|
||||||
src/os_vms* Files for the VMS port.
|
|
||||||
|
|
||||||
src/os_w32*
|
|
||||||
src/os_win32.* Files for the Win32 port.
|
|
||||||
|
|
||||||
src/gui_w32.* Files for the Win32 GUI.
|
|
||||||
src/gui_w48.* Files for the Win32 and Win16 GUI.
|
|
||||||
src/Make_mvc.mak MS Visual C++ makefile for the Win32 GUI.
|
|
||||||
|
|
||||||
src/if_ole.* OLE automation interface, for MS Windows.
|
|
||||||
|
|
||||||
src/GvimExt/* DLL for the "Edit with Vim" context menu entry
|
|
||||||
|
|
||||||
nsis/* NSIS script to build the self-installing MS-Windows exe
|
|
||||||
|
|
||||||
runtime/doc/*.man Preprocessed manual pages.
|
|
||||||
|
|
||||||
runtime/macros/file_select.vim Vim script to browse directories (Unix only).
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
README_haiku.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file explains the installation of Vim on Haiku operating system.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
|
|
||||||
Preferred (and easy) way to get Vim on Haiku is to use default Haiku
|
|
||||||
software repository HaikuPorts. To get Vim:
|
|
||||||
|
|
||||||
- Open HaikuDepot application and search for "vim" package, then install,
|
|
||||||
- Open a Terminal and type "pkgman install vim", then follow instructions.
|
|
||||||
|
|
||||||
If you prefer to install Vim from source, follow the instructions on
|
|
||||||
"runtime/doc/os_haiku.txt", "Compiling Vim" section.
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
README_mac.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
How to install MacVim?
|
|
||||||
========================
|
|
||||||
|
|
||||||
Download MacVim.dmg from latest binary release page https://github.com/macvim-dev/macvim/releases/latest , open the dmg file, and copy MacVim.app to /Applications.
|
|
||||||
|
|
||||||
|
|
||||||
Questions?
|
|
||||||
========================
|
|
||||||
|
|
||||||
Please take a look at the home page http://macvim-dev.github.io/macvim/
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
README_ole.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This archive contains gvim.exe with OLE interface.
|
|
||||||
This version of gvim.exe can also load a number of interface dynamically (you
|
|
||||||
can optionally install the .dll files for each interface).
|
|
||||||
It is only for MS-Windows.
|
|
||||||
|
|
||||||
Also see the README_bindos.txt, README_dos.txt and README.txt files.
|
|
||||||
|
|
||||||
Be careful not to overwrite the OLE gvim.exe with the non-OLE gvim.exe when
|
|
||||||
unpacking another binary archive! Check the output of ":version":
|
|
||||||
Win32s - "MS-Windows 16/32 bit GUI version"
|
|
||||||
Win32 - "MS-Windows 32 bit GUI version"
|
|
||||||
Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
|
|
||||||
|
|
||||||
For further information, type this inside Vim:
|
|
||||||
:help if_ole
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
README_os2.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file used to explain the installation of Vim on OS/2 systems.
|
|
||||||
However, support for OS/2 has been removed in patch 7.4.1008.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
README_os390.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This readme explains how to build Vim on z/OS. Formerly called OS/390.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
|
|
||||||
Most likely there are not many users out there using Vim on z/OS. So chances
|
|
||||||
are good, that some bugs are still undiscovered.
|
|
||||||
|
|
||||||
Getting the source to z/OS:
|
|
||||||
==========================
|
|
||||||
|
|
||||||
First get the source code in one big tar file and ftp it a binary to z/OS. If
|
|
||||||
the tar file is initially compressed with gzip (tar.gz) or bzip2 (tar.bz2)
|
|
||||||
uncompress it on your PC, as these tools are (most likely) not available on
|
|
||||||
the mainframe.
|
|
||||||
|
|
||||||
To reduce the size of the tar file you might compress it into a zip file. On
|
|
||||||
z/OS Unix you might have the command "jar" from java to uncompress a zip. Use:
|
|
||||||
jar xvf <zip file name>
|
|
||||||
|
|
||||||
Unpack the tar file on z/OS with
|
|
||||||
pax -o from=ISO8859-1,to=IBM-1047 -rf vim.tar
|
|
||||||
|
|
||||||
Note: The Vim source contains a few bitmaps etc which will be destroyed by
|
|
||||||
this command, but these files are not needed on zOS (at least not for the
|
|
||||||
console version).
|
|
||||||
|
|
||||||
|
|
||||||
Compiling:
|
|
||||||
==========
|
|
||||||
|
|
||||||
Vim can be compiled with or without GUI support. For 7.4 only the compilation
|
|
||||||
without GUI was tested. Below is a section about compiling with X11 but this
|
|
||||||
is from an earlier version of Vim.
|
|
||||||
|
|
||||||
Console only:
|
|
||||||
-------------
|
|
||||||
|
|
||||||
If you build VIM without X11 support, compiling and building is nearly
|
|
||||||
straightforward.
|
|
||||||
|
|
||||||
Change to the vim directory and do:
|
|
||||||
|
|
||||||
# Don't use c89!
|
|
||||||
# Allow intermixing of compiler options and files.
|
|
||||||
|
|
||||||
$ export CC=cc
|
|
||||||
$ export _CC_CCMODE=1
|
|
||||||
$./configure --with-features=normal --without-x --enable-gui=no
|
|
||||||
$ cd src
|
|
||||||
$ make
|
|
||||||
|
|
||||||
There may be warnings:
|
|
||||||
- include files not found (libc, sys/param.h, ...)
|
|
||||||
- Redeclaration of ... differs from ...
|
|
||||||
-- just ignore them.
|
|
||||||
|
|
||||||
$ make test
|
|
||||||
|
|
||||||
This will produce lots of garbage on your screen (including error
|
|
||||||
messages). Don't worry.
|
|
||||||
|
|
||||||
If the test stops at one point in vim (might happen in test 11), just
|
|
||||||
press :q!
|
|
||||||
|
|
||||||
Expected test failures:
|
|
||||||
11: If you don't have gzip installed
|
|
||||||
24: test of backslash sequences in regexp are ASCII dependent
|
|
||||||
42: Multibyte is not supported on z/OS
|
|
||||||
55: ASCII<->EBCDIC sorting
|
|
||||||
57: ASCII<->EBCDIC sorting
|
|
||||||
58: Spell checking is not supported with EBCDIC
|
|
||||||
71: Blowfish encryption doesn't work
|
|
||||||
|
|
||||||
$ make install
|
|
||||||
|
|
||||||
|
|
||||||
With X11:
|
|
||||||
---------
|
|
||||||
|
|
||||||
WARNING: This instruction was not tested with Vim 7.4 or later.
|
|
||||||
|
|
||||||
There are two ways for building VIM with X11 support. The first way is simple
|
|
||||||
and results in a big executable (~13 Mb), the second needs a few additional
|
|
||||||
steps and results in a much smaller executable (~4.5 Mb). These examples
|
|
||||||
assume you want Motif.
|
|
||||||
|
|
||||||
The easy way:
|
|
||||||
$ export CC=cc
|
|
||||||
$ export _CC_CCMODE=1
|
|
||||||
$ ./configure --enable-max-features --enable-gui=motif
|
|
||||||
$ cd src
|
|
||||||
$ make
|
|
||||||
|
|
||||||
With this VIM is linked statically with the X11 libraries.
|
|
||||||
|
|
||||||
The smarter way:
|
|
||||||
Make VIM as described above. Then create a file named 'link.sed' with the
|
|
||||||
following content (see src/link.390):
|
|
||||||
|
|
||||||
s/-lXext *//g
|
|
||||||
s/-lXmu *//g
|
|
||||||
s/-lXm */\/usr\/lib\/Xm.x /g
|
|
||||||
s/-lX11 */\/usr\/lib\/X11.x /g
|
|
||||||
s/-lXt *//g
|
|
||||||
s/-lSM */\/usr\/lib\/SM.x /g
|
|
||||||
s/-lICE */\/usr\/lib\/ICE.x /g
|
|
||||||
|
|
||||||
Then do:
|
|
||||||
$ rm vim
|
|
||||||
$ make
|
|
||||||
|
|
||||||
Now Vim is linked with the X11-DLLs.
|
|
||||||
|
|
||||||
See the Makefile and the file link.sh on how link.sed is used.
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
README_src.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
The source archive contains the files needed to compile Vim on Unix systems.
|
|
||||||
It is packed for Unix systems (NL line separator).
|
|
||||||
|
|
||||||
For more information, see the README.txt file that comes with the runtime
|
|
||||||
archive (vim-9.2-rt.tar.gz). To be able to run Vim you MUST get the runtime
|
|
||||||
archive too!
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
README_srcdos.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
See "README_dos.txt" for installation instructions for MS-Windows.
|
|
||||||
These files are in the runtime archive (vim92rt.zip).
|
|
||||||
|
|
||||||
|
|
||||||
The DOS source archive contains the files needed to compile Vim on MS-Windows.
|
|
||||||
It is packed for MS-Windows systems, with CR-LF.
|
|
||||||
|
|
||||||
See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
README_unix.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file explains the installation of Vim on Unix systems.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
|
|
||||||
|
|
||||||
When you use the source distribution, "make install" is used to install Vim.
|
|
||||||
See the "INSTALL" file in the "src" directory.
|
|
||||||
|
|
||||||
If you use a compiled package, follow the instructions for the package.
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
The Python project that creates `vimlogo.svg` can be found at
|
|
||||||
`https://github.com/ShayHill/vimlogo`. The Vim license applies.
|
|
||||||
|
|
||||||
`vimlogo.svg` is an effort to remove errors and inadvertent inconsistencies
|
|
||||||
from the original vim logo while maintaining the original design. `vimlogo.svg`
|
|
||||||
is based on the `vimlogo.svg` file (previously?) found at
|
|
||||||
`https://www.vim.org/logos.php`
|
|
||||||
|
|
||||||
As of 2024 Jan 30, `vimlogo.svg` is a separate project from `vimlogo.cdr`,
|
|
||||||
`vimlogo.eps`, `vimlogo.gif`, `vimlogo.pdf`, and `vimlogo.xpm`, all of which
|
|
||||||
are slightly different from each other.
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
README_vms.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file explains the installation of Vim on VMS systems.
|
|
||||||
See "README.txt" in the runtime archive for information about Vim.
|
|
||||||
|
|
||||||
|
|
||||||
Most information can be found in the on-line documentation. Use ":help vms"
|
|
||||||
inside Vim. Or get the runtime files and read runtime/doc/os_vms.txt to find
|
|
||||||
out how to install and configure Vim with runtime files etc.
|
|
||||||
|
|
||||||
To compile Vim yourself you need three archives:
|
|
||||||
vim-X.X-rt.tar.gz runtime files
|
|
||||||
vim-X.X-src.tar.gz source files
|
|
||||||
vim-X.X-extra.tar.gz extra source files
|
|
||||||
|
|
||||||
Compilation is recommended, in order to make sure that the correct
|
|
||||||
libraries are used for your specific system. Read about compiling in
|
|
||||||
src/INSTALLvms.txt.
|
|
||||||
|
|
||||||
To use the binary version, you need one of these archives:
|
|
||||||
|
|
||||||
vim-XX-exe-x86-gui.zip X86_64 GUI/Motif executables
|
|
||||||
vim-XX-exe-x86-term.zip X86_64 console executables
|
|
||||||
vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables
|
|
||||||
vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables
|
|
||||||
vim-XX-exe-ia64-term.zip IA64 console executables
|
|
||||||
vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables
|
|
||||||
vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables
|
|
||||||
vim-XX-exe-axp-term.zip Alpha console executables
|
|
||||||
vim-XX-exe-vax-gui.zip VAX GUI executables
|
|
||||||
vim-XX-exe-vax-term.zip VAX console executables
|
|
||||||
|
|
||||||
and of course
|
|
||||||
vim-XX-runtime.zip runtime files
|
|
||||||
|
|
||||||
The binary archives contain: vim.exe, ctags.exe, xxd.exe files,
|
|
||||||
but there are also prepared "deploy ready" archives:
|
|
||||||
|
|
||||||
vim-XX-x86.zip GUI and console executables with runtime and
|
|
||||||
help files for X86_64 systems
|
|
||||||
vim-XX-ia64.zip GUI and console executables with runtime and
|
|
||||||
help files for IA64 systems
|
|
||||||
vim-XX-axp.zip GUI and console executables with runtime and
|
|
||||||
help files for Alpha systems
|
|
||||||
vim-XX-vax.zip GUI and console executables with runtime and
|
|
||||||
help files for VAX systems
|
|
||||||
|
|
||||||
GTK builds need LIBGTK library installed.
|
|
||||||
|
|
||||||
These executables and up to date patches for OpenVMS system are downloadable
|
|
||||||
from http://www.polarhome.com/vim/ or ftp://ftp.polarhome.com/pub/vim/
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
README_w32s.txt for version 9.2 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
|
|
||||||
systems. However, support for MS-Windows 3.1 and 3.11 has been removed in
|
|
||||||
patch 7.4.1364.
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-17
@@ -1,17 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Reporting a vulnerability
|
|
||||||
|
|
||||||
If you want to report a security issue, please privately disclose the issue either via:
|
|
||||||
- The vim-security mailing list: vim-security@googlegroups.com
|
|
||||||
This is a private list, read only by the maintainers, but anybody can post.
|
|
||||||
- [GitHub Security Advisories](https://github.com/vim/vim/security/advisories/new)
|
|
||||||
|
|
||||||
**Please don't publicly disclose the issue until it has been addressed by us.**
|
|
||||||
|
|
||||||
## Guidelines for reporting
|
|
||||||
- Clearly explain **why** the behaviour is a security issue, not just that a bug exists.
|
|
||||||
- Keep reports concise and focused.
|
|
||||||
- Do not flood us with a list of issues. Report them one by one to ensure to not overwhelm us with the work load.
|
|
||||||
- Do **not** submit AI-generated reports without carefully reviewing them first. Low-quality or
|
|
||||||
speculative reports waste maintainer time and will be closed without action, and repeat offenders **will be banned**.
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Use Homebrew GNU libiconv to work around broken Apple iconv. Use static
|
|
||||||
# linking as we don't want our binary releases to pull in third-party
|
|
||||||
# dependencies.
|
|
||||||
#
|
|
||||||
# If gettext is configured in the build, it also needs to be built against GNU
|
|
||||||
# libiconv. Otherwise we would get a link error from this.
|
|
||||||
/^CFLAGS[[:blank:]]*=/s/$/ -I\/opt\/homebrew\/opt\/libiconv\/include/
|
|
||||||
/^LIBS[[:blank:]]*=/s/-liconv/\/opt\/homebrew\/opt\/libiconv\/lib\/libiconv.a/
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Clang 12 (or Apple clang 13) and later makes a warning '-Wcompound-token-split-by-macro' enable by default.
|
|
||||||
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro -Wno-compound-token-split-by-macro/
|
|
||||||
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/^CFLAGS[[:blank:]]*=/s/$/ -Wno-error=missing-field-initializers -Wno-error=deprecated-declarations -Wno-error=unused-function/
|
|
||||||
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unknown-attributes -Wno-error=ignored-attributes/
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/^CFLAGS[[:blank:]]*=/s/$/ -Wno-error=maybe-uninitialized/
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Add link-time optimization for even better performance
|
|
||||||
/^CFLAGS[[:blank:]]*=/s/-O2/-O3 -flto/
|
|
||||||
/^LDFLAGS[[:blank:]]*=/s/$/ -flto/
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror -Wno-deprecated-declarations/
|
|
||||||
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-strict-prototypes -Wno-shadow/
|
|
||||||
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter -Wno-strict-prototypes/
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/^XCODEFLAGS[[:blank:]]*=/s/$/ GCC_TREAT_WARNINGS_AS_ERRORS="YES" GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS="NO"/
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
deb http://ddebs.ubuntu.com noble main restricted universe multiverse
|
|
||||||
deb http://ddebs.ubuntu.com noble-updates main restricted universe multiverse
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import itertools
|
|
||||||
import json
|
|
||||||
import re
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
def generate_testset(n):
|
|
||||||
cp = subprocess.run(["make", "-C", "src/testdir", "-npq"], capture_output=True)
|
|
||||||
|
|
||||||
tests = set()
|
|
||||||
for line in cp.stdout.decode().split("\n"):
|
|
||||||
if re.match(r"^(NEW_TESTS_RES|TEST_VIM9_RES) = ", line):
|
|
||||||
tests.update(re.findall(r"\btest\w+\.res\b", line))
|
|
||||||
|
|
||||||
tests = sorted(list(tests))
|
|
||||||
# move test_alot*.res to the end
|
|
||||||
tests = (
|
|
||||||
[t for t in tests if not t.startswith("test_alot")]
|
|
||||||
+ [t for t in tests if t.startswith("test_alot_")]
|
|
||||||
+ ["test_alot.res"]
|
|
||||||
)
|
|
||||||
targets = tests
|
|
||||||
|
|
||||||
if n > 1:
|
|
||||||
targets = [ts for ts in itertools.batched(tests, n)]
|
|
||||||
targets = [[t for t in ts if t] for ts in itertools.zip_longest(*targets)]
|
|
||||||
|
|
||||||
return targets
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("n", type=int, nargs="?", default=1)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
print(json.dumps(generate_testset(args.n)))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
ColorColumn
|
|
||||||
ComplMatchIns
|
|
||||||
Conceal
|
|
||||||
Cursor
|
|
||||||
CursorColumn
|
|
||||||
CursorIM
|
|
||||||
CursorLine
|
|
||||||
CursorLineNr
|
|
||||||
debugBreakpoint
|
|
||||||
debugPC
|
|
||||||
DiffAdd
|
|
||||||
DiffChange
|
|
||||||
DiffDelete
|
|
||||||
DiffText
|
|
||||||
Directory
|
|
||||||
ErrorMsg
|
|
||||||
FoldColumn
|
|
||||||
Folded
|
|
||||||
Ignore
|
|
||||||
IncSearch
|
|
||||||
lCursor
|
|
||||||
LineNr
|
|
||||||
LineNrAbove
|
|
||||||
LineNrBelow
|
|
||||||
MatchParen
|
|
||||||
Menu
|
|
||||||
ModeMsg
|
|
||||||
MoreMsg
|
|
||||||
MsgArea
|
|
||||||
NonText
|
|
||||||
Normal
|
|
||||||
Pmenu
|
|
||||||
PmenuSbar
|
|
||||||
PmenuSel
|
|
||||||
PmenuThumb
|
|
||||||
PmenuShadow
|
|
||||||
Question
|
|
||||||
Scrollbar
|
|
||||||
Search
|
|
||||||
SignColumn
|
|
||||||
SpecialKey
|
|
||||||
SpellBad
|
|
||||||
SpellCap
|
|
||||||
SpellLocal
|
|
||||||
SpellRare
|
|
||||||
StatusLine
|
|
||||||
StatusLineNC
|
|
||||||
StatusLineTerm
|
|
||||||
StatusLineTermNC
|
|
||||||
TabLine
|
|
||||||
TabLineFill
|
|
||||||
TabLineSel
|
|
||||||
Terminal
|
|
||||||
Title
|
|
||||||
TitleBar
|
|
||||||
TitleBarNC
|
|
||||||
TOhtmlProgress
|
|
||||||
TOhtml-progress-color
|
|
||||||
ToolbarButton
|
|
||||||
ToolbarLine
|
|
||||||
Tooltip
|
|
||||||
User1
|
|
||||||
User1..9
|
|
||||||
User9
|
|
||||||
VertSplit
|
|
||||||
Visual
|
|
||||||
VisualNOS
|
|
||||||
WarningMsg
|
|
||||||
WildMenu
|
|
||||||
WinColor
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# vim: ft=make
|
|
||||||
SHELL = /bin/bash
|
|
||||||
|
|
||||||
# Default target to actually run the comparison:
|
|
||||||
.PHONY: check
|
|
||||||
.INTERMEDIATE: hlgroups deflinks hlgroups.stripped
|
|
||||||
|
|
||||||
check: hlgroups.stripped deflinks
|
|
||||||
diff hlgroups.stripped deflinks
|
|
||||||
|
|
||||||
hlgroups:
|
|
||||||
grep '\*hl-' ../runtime/doc/*txt | sed -E -e 's/.*:<?\s*//' -e 's/hl-//g' -e 's/\*//g' -e 's/ /\n/g' | sort > hlgroups
|
|
||||||
|
|
||||||
deflinks: ../src/highlight.c
|
|
||||||
grep '"default link' $< | sed 's/.*default link\s*\(.*\)\s.*/\1/' | sort > deflinks
|
|
||||||
|
|
||||||
hlgroups.stripped: hlgroups.ignore hlgroups
|
|
||||||
grep -v -x -F -f hlgroups.ignore hlgroups > hlgroups.stripped
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
if 1 " This prevents it from being run in tiny versions
|
|
||||||
" Check for required features
|
|
||||||
if exists("g:required")
|
|
||||||
for feature in g:required
|
|
||||||
if !has(feature)
|
|
||||||
echo "Error: Feature '" .. feature .. "' not found"
|
|
||||||
echo ''
|
|
||||||
cquit
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
echo "\nChecked features: " .. string(g:required)
|
|
||||||
echo ''
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
" vim: sts=2 sw=2 et
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
" Print all interface versions. Part 1.
|
|
||||||
|
|
||||||
if 1 " This prevents it from being run in tiny versions
|
|
||||||
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
|
|
||||||
|
|
||||||
echo "*** Interface versions ***\n"
|
|
||||||
|
|
||||||
echo 'Lua:'
|
|
||||||
PrintVer lua print(vim.lua_version, jit and "(LuaJIT)" or "")
|
|
||||||
|
|
||||||
echo 'MzScheme:'
|
|
||||||
PrintVer mzscheme (display (version))
|
|
||||||
|
|
||||||
echo 'Perl:'
|
|
||||||
PrintVer perl print $^V
|
|
||||||
|
|
||||||
echo 'Ruby:'
|
|
||||||
PrintVer ruby print RUBY_VERSION
|
|
||||||
|
|
||||||
echo 'Tcl:'
|
|
||||||
PrintVer tcl puts [info patchlevel]
|
|
||||||
|
|
||||||
echo 'Python 2:'
|
|
||||||
PrintVer python print sys.version
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
" Print py3 interface versions. Part 2.
|
|
||||||
" This is done separately from part 1 because Vim cannot concurrently load
|
|
||||||
" Python 2 and 3 together.
|
|
||||||
|
|
||||||
if 1 " This prevents it from being run in tiny versions
|
|
||||||
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
|
|
||||||
|
|
||||||
echo 'Python 3:'
|
|
||||||
PrintVer python3 print(sys.version)
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
" Provide 'PrintVer' command to print the interface versions.
|
|
||||||
|
|
||||||
func s:print_ver(lang, ...)
|
|
||||||
if has(a:lang)
|
|
||||||
exec a:lang join(a:000)
|
|
||||||
else
|
|
||||||
echo 'N/A'
|
|
||||||
endif
|
|
||||||
echo ''
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
command -nargs=+ PrintVer call <SID>print_ver(<f-args>)
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
############################# Runtime #############################
|
|
||||||
|
|
||||||
# Reasonable concurrency to avoid rate-limiting small hosts.
|
|
||||||
max_concurrency = 14
|
|
||||||
|
|
||||||
# File extensions to scan
|
|
||||||
extensions = ["c", "h", "md", "html", "txt"]
|
|
||||||
|
|
||||||
############################# Requests ############################
|
|
||||||
|
|
||||||
# Accepted status codes
|
|
||||||
# - Include 429 (Too Many Requests) to avoid marking throttled links as dead.
|
|
||||||
accept = ["100..=103", "200..=299", "429"]
|
|
||||||
|
|
||||||
# Retry each request a few times on transient network errors
|
|
||||||
max_retries = 2
|
|
||||||
retry_wait_time = 2
|
|
||||||
|
|
||||||
# Timeout per request in seconds
|
|
||||||
timeout = 60
|
|
||||||
|
|
||||||
############################# Exclusions ##########################
|
|
||||||
|
|
||||||
exclude = [
|
|
||||||
'^https?://sys/file$',
|
|
||||||
'^file://.*',
|
|
||||||
'^https?://(www\.)?badges\.debian\.net/.*$',
|
|
||||||
'^https?://(www\.)?repology\.org/.*$',
|
|
||||||
'^https?://scan\.coverity\.com/.*$',
|
|
||||||
'^https?://(www\.)?img\.shields\.io/.*$',
|
|
||||||
'^https?://(www\.)?fossies\.org/.*$',
|
|
||||||
'^https?://(www\.)?adobe\.com.*$',
|
|
||||||
'^https?://(www\.)?google\.com.*$',
|
|
||||||
'^https?://(www\.)?forum\.vmssoftware\.com/.*$',
|
|
||||||
'^http://vim\.sourceforge\.net/scripts/script\.php\?script_id=40$',
|
|
||||||
'^https://is\.gd/.*$',
|
|
||||||
'^https://wiki\.contextgarden\.net/Vim$',
|
|
||||||
'^https://github\.com/you/foobar\.git$',
|
|
||||||
'^https?://flatassembler\.net',
|
|
||||||
'^https?://www\.fleiner\.com/vim/download.html',
|
|
||||||
]
|
|
||||||
|
|
||||||
# Lychee only reads UTF-8 files
|
|
||||||
exclude_path = [
|
|
||||||
'src/po',
|
|
||||||
'src/testdir',
|
|
||||||
]
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
# Unfortunately ubtunu does not keep the debug packages strictly up-to-date
|
|
||||||
# with the main packages. So this file needs to pin the main packages back to
|
|
||||||
# the version for which debug packages are available.
|
|
||||||
|
|
||||||
Package: libwayland-client0
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-client0
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
Package: libwayland-cursor0
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-cursor0
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
Package: libwayland-egl1
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-egl1
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
Package: libwayland-dev
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-dev
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
Package: libwayland-server0
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-server0
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
Package: libwayland-bin
|
|
||||||
Pin: version 1.20.0-1
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libwayland-bin
|
|
||||||
Pin: version 1.20.0-1ubuntu0.1
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
# As of 2025-04-27 the base library package libgtk-3-0t64 is still at 3.24.41-4ubuntu1.2
|
|
||||||
Package: libgtk-3-0t64-dbgsym
|
|
||||||
Pin: version 3.24.41-4ubuntu1.2
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libgtk-3-0t64-dbgsym
|
|
||||||
Pin: version 3.24.41-4ubuntu1.3
|
|
||||||
Pin-Priority: 100
|
|
||||||
|
|
||||||
# As of 2025-04-27 the base binary package libgtk-3-bin is still at 3.24.41-4ubuntu1.2
|
|
||||||
Package: libgtk-3-bin-dbgsym
|
|
||||||
Pin: version 3.24.41-4ubuntu1.2
|
|
||||||
Pin-Priority: 1000
|
|
||||||
|
|
||||||
Package: libgtk-3-bin-dbgsym
|
|
||||||
Pin: version 3.24.41-4ubuntu1.3
|
|
||||||
Pin-Priority: 100
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
pushd /etc/apt/preferences.d/
|
|
||||||
cat > nosnap.pref <<EOF
|
|
||||||
# To prevent repository packages from triggering the installation of snap,
|
|
||||||
# this file forbids snapd from being installed by APT.
|
|
||||||
|
|
||||||
Package: snapd
|
|
||||||
Pin: release a=*
|
|
||||||
Pin-Priority: -10
|
|
||||||
EOF
|
|
||||||
popd
|
|
||||||
snap remove --purge $(snap list | awk '!/^Name|^core/ {print $1}')
|
|
||||||
apt-get purge -y snapd
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
apt-get install -y xvfb
|
|
||||||
|
|
||||||
cat <<EOT >/etc/systemd/system/xvfb.service
|
|
||||||
[Unit]
|
|
||||||
Description=X Virtual Frame Buffer Service
|
|
||||||
After=network.target
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOT
|
|
||||||
|
|
||||||
systemctl enable xvfb.service
|
|
||||||
systemctl start xvfb.service
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# vim: ft=make
|
|
||||||
SHELL = /bin/bash
|
|
||||||
|
|
||||||
# List all files that are tracked in git but not listed in Filelist.
|
|
||||||
# Exit code is 2 ("Make encountered an error") if any such files exist.
|
|
||||||
|
|
||||||
# Filelist is a Makefile that defines many variables, so we use Make itself to
|
|
||||||
# query which variables it defines, then expand them all by wrapping each name
|
|
||||||
# in $(...), importing Filelist and using $(eval).
|
|
||||||
|
|
||||||
include Filelist
|
|
||||||
$(eval all_patterns := $(shell \
|
|
||||||
make -f Filelist --question --print-data-base --no-builtin-rules \
|
|
||||||
--no-builtin-variables 2>/dev/null \
|
|
||||||
| sed -nre \
|
|
||||||
'/^# makefile .from \x27Filelist\x27,/ { \
|
|
||||||
n; \
|
|
||||||
s/ = .*//; \
|
|
||||||
T; \
|
|
||||||
s/.*/$$(\0)/; \
|
|
||||||
p; \
|
|
||||||
}'))
|
|
||||||
|
|
||||||
# In Makefile's `prepare` target, all the IN_README_DIR files are moved from
|
|
||||||
# READMEdir to the root, so add those files in their Git-tracked location:
|
|
||||||
all_patterns := $(all_patterns) \
|
|
||||||
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
|
|
||||||
|
|
||||||
# The result 'all_patterns' is a list of patterns (globs), which we expand with
|
|
||||||
# wildcard to get actual filenames. Note this means Filelist can list a file
|
|
||||||
# that does not exist, and it will be omitted at this step.
|
|
||||||
listed_files := $(wildcard $(all_patterns))
|
|
||||||
|
|
||||||
# Default target to actually run the comparison:
|
|
||||||
.PHONY: check
|
|
||||||
check:
|
|
||||||
@# There are too many files to list on the command line, so we write
|
|
||||||
@# that to a temporary file, one per line.
|
|
||||||
$(file > Filelist-listed-files)
|
|
||||||
$(foreach filename, $(listed_files),\
|
|
||||||
$(file >> Filelist-listed-files,$(filename)))
|
|
||||||
@# Compare the sorted lists. Delete that temporary file on both
|
|
||||||
@# success and failure, but exit with diff's exit code.
|
|
||||||
diff -u0 --label files-in-git <(git ls-files | sort) \
|
|
||||||
--label Filelist <(sort --unique Filelist-listed-files); \
|
|
||||||
RV=$$?; \
|
|
||||||
rm Filelist-listed-files; \
|
|
||||||
(($$RV != 0)) && echo "Add files to the right variable in Filelist."; \
|
|
||||||
exit $$RV
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# This is just a stub for the Unix configure script, to provide support for
|
|
||||||
# doing "./configure" in the top Vim directory.
|
|
||||||
|
|
||||||
cd "${SRCDIR:-src}" && exec ./configure "$@"
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
LICENZA VIM
|
|
||||||
|
|
||||||
Nota: Agli effetti legali ha valore non la seguente traduzione italiana, ma
|
|
||||||
l'originale inglese su cui è basata. È alla versione inglese che si fa
|
|
||||||
riferimento qui sotto quando si parla di "questa licenza" (NdT).
|
|
||||||
|
|
||||||
I) Non ci sono restrizioni alla distribuzione di copie non modificate di Vim,
|
|
||||||
alla condizione che esse includano il testo di questa licenza. Si possono
|
|
||||||
anche distribuire parti non modificate di Vim, sempre senza restrizioni,
|
|
||||||
alla condizione che esse includano il testo di questa licenza. È anche
|
|
||||||
consentito includere programmi eseguibili da voi preparati a partire dai
|
|
||||||
file sorgenti Vim non modificati, più i vostri esempi di utilizzo e i
|
|
||||||
vostri script Vim.
|
|
||||||
|
|
||||||
II) È consentito distribuire una versione modificata (o estesa) di Vim,
|
|
||||||
contenente programmi eseguibile e/o codice sorgente, quando siano
|
|
||||||
rispettare le seguenti quattro condizioni:
|
|
||||||
1) Il testo di questa licenza deve essere incluso senza modifiche.
|
|
||||||
2) La versione modificata di Vim dev'essere distribuita in una della
|
|
||||||
seguenti cinque maniere:
|
|
||||||
a) Se voi personalmente modificate a Vim, dovete descrivere
|
|
||||||
chiaramente nella distribuzione come è possibile mettersi in
|
|
||||||
contatto con voi. Quando il manutentore vi chiede (in qualsiasi
|
|
||||||
forma) una copia della versione modificata di Vim da voi
|
|
||||||
distribuita, dovete rendere disponibili le vostre modifiche,
|
|
||||||
compreso il codice sorgente, al manutentore, senza alcuna spesa.
|
|
||||||
Il manutentore si riserva il diritto di includere le vostre
|
|
||||||
modifiche nella versione ufficiale di Vim. Quel che il manutentore
|
|
||||||
potrà fare con le vostre modifiche e sotto quale licenza esse
|
|
||||||
verranno distribuite può essere oggetto di negoziazione. Se non c'è
|
|
||||||
stata alcuna negoziazione, questa licenza, o una versione successiva
|
|
||||||
della stessa è anche applicabile alle vostre modifiche.
|
|
||||||
I manutentori correnti sono elencati qui:
|
|
||||||
https://github.com/orgs/vim/people.
|
|
||||||
Se dovessero cambiare, ne sarò dato annuncio nei luoghi appropriati
|
|
||||||
(verosimilmente vim.sf.net, www.vim.org e/o comp.editors). Quando
|
|
||||||
sia completamente impossibile contattare il manutentore, l'obbligo
|
|
||||||
di spedirgli le vostre modifiche viene meno. Una volta che il
|
|
||||||
manutentore abbia confermato di aver ricevuto le vostre modifiche,
|
|
||||||
non sarà necessario spedirle ulteriormente.
|
|
||||||
b) Se avete ricevuto un Vim modificato che era stato distribuito come
|
|
||||||
descritto al punto a) potete ulteriormente distribuirlo senza
|
|
||||||
modificarlo, come menzionato al punto I). Se fate ulteriori
|
|
||||||
modifiche, il testo al punto a) si applica a queste modifiche.
|
|
||||||
c) Includete tutte le modifiche, compreso il codice sorgente, con ogni
|
|
||||||
copia del Vim modificato da voi distribuito. Questo può essere
|
|
||||||
fatto sotto forma dell'output di un comando "diff", che contenga
|
|
||||||
anche il contesto [ossia anche le linee non modificate di sorgente
|
|
||||||
che vengono prima o dopo le modifiche - NdT]. Potete scegliere
|
|
||||||
quale licenza volete utilizzare per il nuovo codice sorgente che voi
|
|
||||||
aggiungere. Le modifiche e la relativa licenza non devono impedire
|
|
||||||
a terze parti di apportare le loro proprie modifiche a Vim.
|
|
||||||
d) Quando avete un Vim modificato che comprende modifiche quali quelle
|
|
||||||
menzionate al punto c), potete distribuirlo senza il codice sorgente
|
|
||||||
che descrive le modifiche, se le seguenti tre condizioni sono
|
|
||||||
soddisfatte:
|
|
||||||
- La licenza applicabile alle modifiche vi consente di distribuire
|
|
||||||
le modifiche al manutentore Vim senza alcun costo o restrizione, e
|
|
||||||
permette al manutentore Vim di includere le modifiche nella
|
|
||||||
versione ufficiale di Vim senza alcun costo o restrizione.
|
|
||||||
- Le modifiche da voi fatte sono conservate per almeno tre anni,
|
|
||||||
dopo che avrete distribuito per l'ultima volta il Vim modificato
|
|
||||||
corrispondente alle modifiche stesse. Quando il manutentore o
|
|
||||||
qualcuno a cui voi avete distribuito il Vim modificato vi chiede
|
|
||||||
(in qualsiasi forma) le modifiche, entro il periodo qui indicato,
|
|
||||||
dovete fargliele avere.
|
|
||||||
- Dovete descrivere chiaramente nella distribuzione come è possibile
|
|
||||||
mettersi in contatto con voi. Questa informazione di contatto
|
|
||||||
deve rimanere valida per almeno tre anni dopo l'ultima data di
|
|
||||||
distribuzione della corrispondente modifica di Vim, oppure il più
|
|
||||||
a lungo possibile.
|
|
||||||
e) Quando al GNU General Public License (GPL) si applica alle
|
|
||||||
modifiche, potete distribuire il Vim modificato sotto la versione 2
|
|
||||||
della licenza GNU GPL versione 2 o una qualsiasi versione successiva
|
|
||||||
della stessa licenza.
|
|
||||||
3) Un messaggio deve essere aggiunto, almeno all'output del comando
|
|
||||||
":version" e nella schermata introduttiva, in modo che l'utilizzatore
|
|
||||||
del Vim modificato sia in grado di comprendere cosa è stato modificato.
|
|
||||||
Quando si distribuisca come menzionato al punto 2)e) l'aggiunta del
|
|
||||||
messaggio è richiesta solo se ciò non conduca a conflitti con la
|
|
||||||
licenza usata per le modifiche.
|
|
||||||
4) L'informazione di contatto, richiesta ai punto 2)a) e 2)d) non deve
|
|
||||||
essere rimossa o modificata, tranne che per il fatto che la persona
|
|
||||||
stessa può apportare delle correzioni.
|
|
||||||
|
|
||||||
III) Se distribuite una versione modificata di Vim, siete incoraggiati a
|
|
||||||
utilizzare la licenza Vim per le vostre modifiche, e a mettere le
|
|
||||||
modifiche a disposizione del manutentore, compreso il codice sorgente.
|
|
||||||
Il modo preferito in cui fare questo è tramite e-mail o caricando
|
|
||||||
i file su un server ed inviandone l'indirizzo (URL) tramite e-mail.
|
|
||||||
Se il numero di modifiche è piccolo (per esempio, una modifica a un
|
|
||||||
Makefile) inviare tramite email l'output del comando diff con contesto
|
|
||||||
può essere sufficiente. L'indirizzo e-mail da utilizzare è
|
|
||||||
<maintainer@vim.org>
|
|
||||||
|
|
||||||
IV) Non è consentito rimuovere questa licenza dalla distribuzione dei codici
|
|
||||||
sorgente Vim, anche in parte, o da una versione di Vim modificata.
|
|
||||||
Potete usare questa licenza per precedenti versioni di Vim, invece della
|
|
||||||
licenza con cui esse sono state distribuite, a vostra scelta.
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
LICENÇA DO VIM
|
|
||||||
|
|
||||||
I) Não há restrições para distribuir cópias não modificadas do Vim, exceto
|
|
||||||
que elas devem incluir este texto de licença. Você também pode distribuir
|
|
||||||
partes não modificadas do Vim, igualmente irrestritas, exceto que elas
|
|
||||||
devem incluir este texto de licença. Você também tem permissão para incluir
|
|
||||||
executáveis que você fez a partir das fontes não modificadas do Vim, além
|
|
||||||
de seus próprios exemplos de uso e scripts do Vim.
|
|
||||||
|
|
||||||
II) É permitido distribuir uma versão modificada (ou estendida) do Vim,
|
|
||||||
incluindo executáveis e/ou código-fonte, quando as quatro
|
|
||||||
condições a seguir forem atendidas:
|
|
||||||
1) Este texto de licença deve ser incluído sem modificações.
|
|
||||||
2) O Vim modificado deve ser distribuído de uma das cinco formas a seguir:
|
|
||||||
a) Se você fizer alterações no Vim, deverá descrever claramente na
|
|
||||||
distribuição como entrar em contato com você. Quando o mantenedor
|
|
||||||
solicitar a você (de qualquer forma) uma cópia do Vim modificado que
|
|
||||||
você distribuiu, você deverá disponibilizar suas alterações,
|
|
||||||
incluindo o código-fonte, ao mantenedor sem taxa. O mantenedor
|
|
||||||
reserva o direito de incluir suas alterações na versão oficial
|
|
||||||
do Vim. O que o mantenedor fará com suas alterações e sob qual
|
|
||||||
licença elas serão distribuídas é negociável. Se não houve negociação
|
|
||||||
então esta licença, ou uma versão posterior, também se aplica às suas
|
|
||||||
alterações. Os mantenedores atuais estão listados aqui:
|
|
||||||
https://github.com/orgs/vim/people. Se isso mudar, será anunciado em
|
|
||||||
lugares apropriados (provavelmente vim.sf.net, www.vim.org e/ou
|
|
||||||
comp.editors). Quando for completamente impossível contatar o
|
|
||||||
mantenedor, a obrigação de enviar a ele suas alterações cessa.
|
|
||||||
Uma vez que o mantenedor tenha confirmado que ele recebeu suas
|
|
||||||
alterações, elas não precisarão ser enviadas novamente.
|
|
||||||
b) Se você recebeu um Vim modificado que foi distribuído como
|
|
||||||
mencionado em a), você tem permissão para distribuí-lo sem
|
|
||||||
modificações, como mencionado em I). Se você fizer alterações
|
|
||||||
adicionais, o texto em a) se aplica a essas alterações.
|
|
||||||
c) Forneça todas as alterações, incluindo o código-fonte, com cada cópia
|
|
||||||
do Vim modificado que você distribuir. Isso pode ser feito na forma
|
|
||||||
de um diff de contexto. Você pode escolher qual licença usar para o
|
|
||||||
novo código que você adicionar. As alterações e sua licença não devem
|
|
||||||
restringir outros de fazer suas próprias alterações na versão oficial
|
|
||||||
do Vim.
|
|
||||||
d) Quando você tem um Vim modificado que inclui alterações conforme
|
|
||||||
mencionado em c), você pode distribuí-lo sem o código-fonte para as
|
|
||||||
alterações se as três condições a seguir forem atendidas:
|
|
||||||
- A licença que se aplica às alterações permite que você distribua
|
|
||||||
as alterações para o mantenedor do Vim sem taxa ou restrição, e
|
|
||||||
permite que o mantenedor do Vim inclua as alterações na
|
|
||||||
versão oficial do Vim sem taxa ou restrição.
|
|
||||||
- Você mantém as alterações por pelo menos três anos após a última
|
|
||||||
distribuição do Vim modificado correspondente. Quando o mantenedor
|
|
||||||
ou alguém para quem você distribuiu o Vim modificado solicitar a
|
|
||||||
você (de qualquer forma) as alterações dentro deste período, você
|
|
||||||
deve disponibilizá-las a ele.
|
|
||||||
- Você descreve claramente na distribuição como entrar em contato
|
|
||||||
com você. Estas informações de contato devem permanecer válidas por
|
|
||||||
pelo menos três anos após a última distribuição do Vim modificado
|
|
||||||
correspondente, ou pelo maior tempo possível.
|
|
||||||
e) Quando a Licença Pública Geral GNU (GPL) se aplica às alterações,
|
|
||||||
você pode distribuir o Vim modificado sob a GNU GPL versão 2 ou
|
|
||||||
qualquer versão posterior.
|
|
||||||
3) Uma mensagem deve ser adicionada, no mínimo na saída do comando
|
|
||||||
":version" e na tela de introdução, de modo que o usuário do Vim
|
|
||||||
modificado seja capaz de ver que ele foi modificado. Ao distribuir
|
|
||||||
conforme mencionado em 2)e), só é necessário adicionar a mensagem
|
|
||||||
na medida em que isso não entre em conflito com a licença usada para
|
|
||||||
as alterações.
|
|
||||||
4) As informações de contato conforme exigido em 2)a) e 2)d) não devem ser
|
|
||||||
removidas ou alteradas, exceto que a própria pessoa pode fazer
|
|
||||||
correções.
|
|
||||||
|
|
||||||
III) Se você distribuir uma versão modificada do Vim, encorajamos que use
|
|
||||||
a licença do Vim para suas alterações e disponibilizá-las ao
|
|
||||||
mantenedor, incluindo o código-fonte. A maneira preferida de fazer isso é
|
|
||||||
por e-mail ou enviando os arquivos para um servidor e enviando a URL por
|
|
||||||
e-mail. Se o número de alterações for pequeno (por exemplo, um Makefile
|
|
||||||
modificado), enviar um diff de contexto por e-mail será suficiente.
|
|
||||||
O endereço de e-mail a ser usado é <maintainer@vim.org>
|
|
||||||
|
|
||||||
IV) Não é permitido remover esta licença da distribuição das fontes do Vim,
|
|
||||||
partes dela ou de uma versão modificada. Você pode usar esta licença
|
|
||||||
para versões anteriores do Vim em vez da licença com a qual elas vieram,
|
|
||||||
a seu critério.
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
Примечание. Данный текст перевода лицензии Vim предоставляется с целью
|
|
||||||
ознакомления и не является юридически значимым. Переводчик не несёт
|
|
||||||
ответственности за возможные неточности и ошибки при переводе лицензии.
|
|
||||||
Единственно юридически значимым является текст лицензии Vim на английском языке.
|
|
||||||
|
|
||||||
ЛИЦЕНЗИЯ VIM
|
|
||||||
|
|
||||||
I) Неизменённые копии программы Vim могут распространяться без ограничения
|
|
||||||
при условии включения данного текста лицензии. Распространение
|
|
||||||
неизменённых копий отдельных частей программы Vim также возможно
|
|
||||||
при соблюдении условия о включении данного текста лицензии. Подобным
|
|
||||||
образом разрешается добавлять исполняемые файлы, скомпилированные
|
|
||||||
из неизменённого исходного кода программы Vim, а также собственные
|
|
||||||
примеры использования и командные файлы редактора Vim.
|
|
||||||
|
|
||||||
II) Изменённую (или дополненную) версию программы Vim, включающую
|
|
||||||
исполняемые файлы и/или исходный код, допускается распространять
|
|
||||||
при соблюдении следующих четырёх условий:
|
|
||||||
1) Текст настоящей лицензии должен включаться в состав распространяемой
|
|
||||||
версии программы Vim без изменений.
|
|
||||||
2) Изменённая версия программы Vim должна распространяться одним
|
|
||||||
из следующих пяти способов:
|
|
||||||
a) При внесении изменений в программу Vim, в дистрибутиве должны
|
|
||||||
быть явно указаны контактные данные лица, внёсшего эти изменения.
|
|
||||||
Ответственному разработчику по его запросу (в любой форме) должна
|
|
||||||
быть безвозмездно предоставлена копия распространяемой изменённой
|
|
||||||
версии программы Vim, включая её исходный код. Ответственный
|
|
||||||
разработчик оставляет за собой право включать сделанные изменения
|
|
||||||
в официальную версию программы Vim. Конкретные действия
|
|
||||||
ответственного разработчика, относительно переданных изменений,
|
|
||||||
а также лицензионные условия, на основании которых будет
|
|
||||||
осуществляться их распространение, могут быть дополнительно
|
|
||||||
согласованы. Если согласование не проводилось, сделанные изменения
|
|
||||||
будут распространяться на условиях настоящей лицензии или более
|
|
||||||
поздней её версии. Лица, в данное время являющиеся ответственными
|
|
||||||
за разработку, указаны в перечне, размещённом по адресу:
|
|
||||||
https://github.com/orgs/vim/people.
|
|
||||||
При изменении этой информации, актуальные данные будут
|
|
||||||
опубликованы на соответствующих ресурсах (вероятнее всего
|
|
||||||
по интернет‐адресам vim.sf.net, www.vim.org и/или comp.editors).
|
|
||||||
В случае полной невозможности связаться с ответственным
|
|
||||||
разработчиком, обязательства по отправке изменений утрачивают
|
|
||||||
силу. После передачи подтверждения о получении изменений
|
|
||||||
от ответственного разработчика, необходимость в повторной
|
|
||||||
отправке копии изменённой программы Vim неприменима.
|
|
||||||
b) Если лицом получена изменённая версия программа Vim,
|
|
||||||
распространяющаяся на условиях, указанных в ч. II) п. 2) пп. а)
|
|
||||||
допускается дальнейшее её распространение этим лицом без внесения
|
|
||||||
изменений и согласно ч. I) настоящей лицензии. В случае внесения
|
|
||||||
дополнительных изменений, на эти изменения будут распространяться
|
|
||||||
условия, указанные в ч. II) п. 2) пп. a).
|
|
||||||
c) Каждая копия распространяемой изменённой версии программы Vim
|
|
||||||
должна включать информацию обо всех произведённых изменениях,
|
|
||||||
включая исходный код. Эта информация может быть представлена
|
|
||||||
в виде построчного сравнения файлов. Выбор лицензии, по условиям
|
|
||||||
которой будет распространяться добавленный код, остаётся
|
|
||||||
за автором этих изменений. Изменения и лицензия на эти изменения
|
|
||||||
не должны запрещать другим лицам внесение своих собственных
|
|
||||||
изменений в официальную версию программы Vim.
|
|
||||||
d) Изменённая версия программы Vim, содержащая изменения в
|
|
||||||
соответствии с ч. II) п. 2 пп. c), может распространяться без
|
|
||||||
исходного кода для этих изменений, при соблюдении следующих трёх
|
|
||||||
условий:
|
|
||||||
- Лицензия, применяемая к внесённым изменениям, предоставляет
|
|
||||||
ответственному разработчику программы Vim возможность
|
|
||||||
безвозмездного и неограниченного распространения этих изменений,
|
|
||||||
а также право на безвозмездное и неограниченное включение этих
|
|
||||||
изменений в официальную версию программы Vim.
|
|
||||||
- Изменения должны сохраняться не менее трёх лет со времени
|
|
||||||
распространения соответствующей изменённой версии программы Vim.
|
|
||||||
В течение этого периода по запросу ответственного разработчика
|
|
||||||
или другого пользователя изменённой версии программы Vim
|
|
||||||
(в любой форме) необходимо предоставить исходный код данных
|
|
||||||
изменений.
|
|
||||||
- В дистрибутиве изменённой версии программы Vim должны быть явно
|
|
||||||
указаны контактные данные лица, внёсшего эти изменения.
|
|
||||||
Контактные данные должны сохранять актуальность в течение
|
|
||||||
не менее трёх лет со времени последнего распространения
|
|
||||||
соответствующей изменённой версии программы Vim или как можно
|
|
||||||
дольше.
|
|
||||||
e) Если к изменениям, внесённым в программу Vim, применимы условия
|
|
||||||
лицензии GNU General Public License (GNU GPL), допускается
|
|
||||||
распространение изменённой версия программы Vim на условиях
|
|
||||||
лицензии GNU GPL версии 2 или любой более поздней версии этой
|
|
||||||
лицензии.
|
|
||||||
3) Необходимо добавить соответствующую информацию, которая должна быть
|
|
||||||
выведена в результате выполнения команды ":version" в программе Vim,
|
|
||||||
а также на экране приветствия программы Vim, чтобы пользователь
|
|
||||||
изменённой версии программы Vim имел возможность определить,
|
|
||||||
что он пользуется изменённой версией. При распространении
|
|
||||||
на условиях, указанных в ч. II) п. 2) пп. e) такую информацию
|
|
||||||
требуется добавлять только в том случае, когда она не противоречит
|
|
||||||
лицензии, распространяющейся на эти изменения.
|
|
||||||
4) Контактная информация, которая указывается по требованию ч. II) п. 2)
|
|
||||||
пп. a) и ч. II) п. 2) пп. d) не должна удаляться или изменяться никем
|
|
||||||
другим, кроме лица, указавшего данную контактную информацию.
|
|
||||||
|
|
||||||
III) При распространении изменённой версии программы Vim рекомендуется
|
|
||||||
пользоваться лицензией Vim для произведённых изменений и обеспечить
|
|
||||||
доступ к этим изменениям ответственного разработчика, включая исходный
|
|
||||||
код изменений. Предпочтительным способом предоставления доступа
|
|
||||||
к произведённым изменениям является отправка этих изменений через
|
|
||||||
электронную почту или размещение файлов на сервер с отправкой
|
|
||||||
URL-адреса по электронной почте. Если количество изменений
|
|
||||||
незначительно (например, изменения в файле Makefile), достаточно будет
|
|
||||||
отправить через электронную почту файл построчного сравнения. Изменения
|
|
||||||
или URL-адреса должны быть направлены на адрес электронной почты
|
|
||||||
maintainer@vim.org
|
|
||||||
|
|
||||||
IV) Не допускается удаление настоящей лицензия из дистрибутива исходного
|
|
||||||
кода программы Vim, его отдельных частей или изменённой версии.
|
|
||||||
Допускается использование настоящей лицензию для предыдущих
|
|
||||||
изменённых выпусков программы Vim, взамен тех лицензий, с которыми
|
|
||||||
они распространялись.
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
VIM-LICENS
|
|
||||||
|
|
||||||
I) Det finns inga begränsningar för distribution av oförändrade kopior av Vim förutom
|
|
||||||
att de måste innehålla denna licenstext. Du kan också distribuera
|
|
||||||
oförändrade delar av Vim, likaså utan begränsningar förutom att de måste
|
|
||||||
innehålla denna licenstext. Du får också inkludera körbara filer
|
|
||||||
som du har skapat från de oförändrade Vim-källorna, samt dina egna användningsexempel
|
|
||||||
och Vim-skript.
|
|
||||||
|
|
||||||
II) Det är tillåtet att distribuera en modifierad (eller utökad) version av Vim,
|
|
||||||
inklusive körbara filer och/eller källkod, när följande fyra
|
|
||||||
villkor är uppfyllda:
|
|
||||||
1) Denna licenstext måste inkluderas oförändrad.
|
|
||||||
2) Den modifierade Vim måste distribueras på ett av följande fem sätt:
|
|
||||||
a) Om du själv gör ändringar i Vim måste du tydligt beskriva
|
|
||||||
distributionen hur man kan kontakta dig. När underhållaren ber dig
|
|
||||||
(på något sätt) om en kopia av den modifierade Vim du distribuerat, måste du
|
|
||||||
måste du göra dina ändringar, inklusive källkoden, tillgängliga för
|
|
||||||
underhållaren utan kostnad. Underhållaren förbehåller sig rätten att
|
|
||||||
inkludera dina ändringar i den officiella versionen av Vim. Vad
|
|
||||||
underhållaren kommer att göra med dina ändringar och under vilken licens de
|
|
||||||
kommer att distribueras är förhandlingsbart. Om ingen förhandling har ägt rum
|
|
||||||
gäller denna licens, eller en senare version, även för dina ändringar.
|
|
||||||
De nuvarande underhållarna finns listade här: https://github.com/orgs/vim/people.
|
|
||||||
Om detta ändras kommer det att meddelas på lämpliga platser (troligen
|
|
||||||
vim.sf.net, www.vim.org och/eller comp.editors). När det är helt
|
|
||||||
omöjligt att kontakta underhållaren upphör skyldigheten att skicka
|
|
||||||
dina ändringar upphör. När underhållaren har bekräftat att han har
|
|
||||||
mottagit dina ändringar behöver de inte skickas igen.
|
|
||||||
b) Om du har fått en modifierad Vim som distribuerats enligt
|
|
||||||
nämnts under a) får du distribuera den vidare
|
|
||||||
oförändrat, enligt vad som anges i I). Om du gör ytterligare ändringar gäller
|
|
||||||
gäller texten under a) för dessa ändringar.
|
|
||||||
c) Tillhandahåll alla ändringar, inklusive källkod, med varje kopia av
|
|
||||||
den modifierade Vim du distribuerar. Detta kan göras i form av en
|
|
||||||
kontextdiff. Du kan välja vilken licens du vill använda för ny kod som du
|
|
||||||
lägger till. Ändringarna och deras licens får inte hindra andra från att
|
|
||||||
göra egna ändringar i den officiella versionen av Vim.
|
|
||||||
d) När du har en modifierad Vim som innehåller ändringar enligt
|
|
||||||
under c), kan du distribuera den utan källkoden för
|
|
||||||
ändringarna om följande tre villkor är uppfyllda:
|
|
||||||
- Licensen som gäller för ändringarna tillåter dig att distribuera
|
|
||||||
ändringarna till Vim-underhållaren utan avgift eller begränsningar, och
|
|
||||||
tillåter Vim-underhållaren att inkludera ändringarna i den officiella
|
|
||||||
versionen av Vim utan avgift eller begränsningar.
|
|
||||||
- Du behåller ändringarna i minst tre år efter senaste
|
|
||||||
distribution av motsvarande modifierade Vim. När underhållaren
|
|
||||||
eller någon som du distribuerat den modifierade Vim till ber dig (på
|
|
||||||
något sätt) om ändringarna inom denna period måste du göra dem
|
|
||||||
tillgängliga för honom.
|
|
||||||
- Du beskriver tydligt i distributionen hur man kan kontakta dig. Denna
|
|
||||||
kontaktinformationen måste vara giltig i minst tre år
|
|
||||||
efter den sista distributionen av motsvarande modifierade Vim, eller så länge
|
|
||||||
som möjligt.
|
|
||||||
e) När GNU General Public License (GPL) gäller för ändringarna,
|
|
||||||
kan du distribuera den modifierade Vim under GNU GPL version 2 eller
|
|
||||||
någon senare version.
|
|
||||||
3) Ett meddelande måste läggas till, åtminstone i utdata från kommandot ":version"
|
|
||||||
och i introduktionsskärmen, så att användaren av den modifierade Vim
|
|
||||||
kan se att den har modifierats. Vid distribution enligt
|
|
||||||
under 2)e) krävs det endast att meddelandet läggs till i den mån detta
|
|
||||||
inte strider mot den licens som används för ändringarna.
|
|
||||||
4) Kontaktinformationen som krävs enligt 2)a) och 2)d) får inte
|
|
||||||
tas bort eller ändras, förutom att personen själv kan göra
|
|
||||||
korrigeringar.
|
|
||||||
|
|
||||||
III) Om du distribuerar en modifierad version av Vim uppmuntras du att använda
|
|
||||||
Vim-licensen för dina ändringar och göra dem tillgängliga för
|
|
||||||
underhållaren, inklusive källkoden. Det bästa sättet att göra detta är
|
|
||||||
via e-post eller genom att ladda upp filerna till en server och e-posta URL:en.
|
|
||||||
Om antalet ändringar är litet (t.ex. en modifierad Makefile) räcker det att skicka ett
|
|
||||||
kontextdiff. E-postadressen som ska användas är
|
|
||||||
<maintainer@vim.org>
|
|
||||||
|
|
||||||
IV) Det är inte tillåtet att ta bort denna licens från distributionen av Vim
|
|
||||||
källkoden, delar av den eller från en modifierad version. Du får använda denna
|
|
||||||
licensen för tidigare Vim-utgåvor istället för den licens som de levererades med
|
|
||||||
med, om du så önskar.
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
注意: 本译文仅供参考。若因译文错漏引发任何问题,译者概不承担责任。VIM 许可证的
|
|
||||||
完整英文版本为唯一法律依据。如有任何疑问,以英文原文为准。
|
|
||||||
|
|
||||||
VIM 许可证
|
|
||||||
|
|
||||||
I) 可以任意发布没有修改的 Vim 的拷贝,但是必须保证包含本许可证。您也可以发布
|
|
||||||
未经修改的部分 Vim,同样也必须包含这份许可证。发布由未经修改的 Vim 源代码
|
|
||||||
所编译出的 Vim 可执行文件,外加您自己的应用实例和 Vim 脚本也是允许的。
|
|
||||||
|
|
||||||
II) 在满足以下全部四个条件的前提下,您可以发布经过修改 (或扩充) 的 Vim 版本,
|
|
||||||
包括可执行文件 和/或 源代码:
|
|
||||||
1) 本许可证必须包含在内,并且不能被修改。
|
|
||||||
2) 经过修改的 Vim 必须以下述五种方式之一发布:
|
|
||||||
a) 如果您本人对 Vim 做了改动,您必须在发布版本里清楚地说明如何与您联系。
|
|
||||||
当 Vim 的维护者 (以任何方式) 向您索取您所发布的 Vim 时,您必须把所做
|
|
||||||
的改动包括源代码无偿地提供出来。维护者保留把这些改动加入 Vim 正式版本
|
|
||||||
的权利。至于维护者怎样处理这些改动,以及用什么许可证发布,可以协商。
|
|
||||||
如果没有协商,那么,本许可证,或者它更新的版本,同样适用于您做出的改
|
|
||||||
动。Vim 现在的几位维护者可见:
|
|
||||||
https://github.com/orgs/vim/people
|
|
||||||
如果维护者发生变动,会在合适的地方 (很可能是 vim.sf.net、www.vim.org
|
|
||||||
和/或 comp.editors) 公布,当完全不能与维护者联系时,发送变更的约定自
|
|
||||||
动终止。一旦维护者确认收到了您所做的修改,您就不必再次发送了。
|
|
||||||
|
|
||||||
b) 如果您得到的是一个修改过的 Vim,并且它是在条件 a) 下发布的,那么您可
|
|
||||||
以不加改动地在条件 I) 下发布它;如果您又做了额外的改动,则这些改动受
|
|
||||||
到 a) 款条文的约束。
|
|
||||||
|
|
||||||
c) 在您发布的经过修改的 Vim 的每一份拷贝里,提供所有的变更部分,包括源代
|
|
||||||
码。提供的形式可以采用上下文风格的差异比较记录 (context diff)。您可以
|
|
||||||
为添加的新代码选择许可证,但是这些更改和为其选择的许可证不能限制他人
|
|
||||||
对 Vim 正式版本作出自己的改动。
|
|
||||||
|
|
||||||
d) 在满足以下全部三个条件的前提下,您可以继续发布带有条件 c) 所提及之变
|
|
||||||
更的经过修改的 Vim,而不必在发布时提供更改部分的源代码:
|
|
||||||
- 这些变更所附带的许可证允许您把这些变更无偿地并且没有任何限制地提供
|
|
||||||
给 Vim 的维护者,而且允许 Vim 的维护者无偿地并且没有任何限制地把这
|
|
||||||
些更改加入到 Vim 的正式版本中。
|
|
||||||
- 从您最后一次发布更改的 Vim 之日起,您要保存这些改动至少三年时间。在
|
|
||||||
这期间,维护者或别人 (以任何方式) 向您要求提供这些变更时,您必须提
|
|
||||||
供给他。
|
|
||||||
- 您要在发布版本中清楚地说明如何与您联系,这个联系方式必须保证自最后
|
|
||||||
一次发布相应的经过修改的 Vim 之日起至少三年有效,或尽可能长。
|
|
||||||
e) 当这些变更以 GPL (GNU General Public License,GNU 通用公共许可证) 发
|
|
||||||
布时,您可以在 GPL 版本 2,或更高版本的 GPL 下发布修改过的 Vim。
|
|
||||||
3) 必须添加一条改动的信息。至少要放在 "version" 命令的输出和启动画面里,好
|
|
||||||
让用户知道自己用的是一个修改过的 Vim。当以 2)e) 条件发布时,只有不与变
|
|
||||||
更适用的许可证冲突,这个信息的添加才是必要的。
|
|
||||||
4) 在 2)a) 和 2)d) 条件里要求的联系方式不能随便更改或删除,除非是作者自己
|
|
||||||
作出的更正。
|
|
||||||
|
|
||||||
III) 如果您发布一个更改过的 Vim,强烈建议您对变更部分使用 Vim 的许可证,并且对
|
|
||||||
维护者提供变更部分并开放源代码。最好的方式是通过电子邮件或者把文件放到服
|
|
||||||
务器上,通过电子邮件传送 URL。如果只修改了很少的部分 (例如,只是一个修改
|
|
||||||
过的 Makefile),那么传送一个上下文风格的差异比较记录 (context diff) 就可
|
|
||||||
以了。电子邮件的地址是 <maintainer@vim.org>
|
|
||||||
|
|
||||||
IV) 不允许从 Vim 的源代码的发行版本或其中部分的源代码里删除本许可证,即使来自
|
|
||||||
更改过的版本也是如此。您可能想用这份许可证代替以前版本的 Vim 里的许可证,
|
|
||||||
这可以由您自行决定。
|
|
||||||
@@ -1,167 +0,0 @@
|
|||||||
README.txt per la versione 9.1 di Vim: VI Migliorato.
|
|
||||||
|
|
||||||
|
|
||||||
COS'È VIM?
|
|
||||||
|
|
||||||
Vim è una versione migliorata del classico programma di videoscrittura UNIX
|
|
||||||
Vi. Molte nuove funzionalità sono state aggiunte: la possibilità di avere
|
|
||||||
multipli annullamenti di comando, l'evidenziazione sintattica, una storia dei
|
|
||||||
comandi immessi, file di aiuto facilmente consultabili, controlli ortografici,
|
|
||||||
completamento di nomi di file, operazioni su blocchi di dati, un linguaggio di
|
|
||||||
script, etc. È anche disponibile una versione grafica (GUI). Tuttavia è
|
|
||||||
possibile lavorare come se si stesse usando il Vi "classico". Chi avesse Vi
|
|
||||||
"sulle dita" si troverà a suo agio. Vedere il file "runtime/doc/vi_diff.txt"
|
|
||||||
[in inglese] per dettagli sulle differenze di Vim rispetto a Vi.
|
|
||||||
|
|
||||||
Questo editor è molto utile per modificare programmi e altri file di testo.
|
|
||||||
Tutti i comandi sono immessi usando i tasti presenti sulla tastiera, in modo
|
|
||||||
che chi è in grado di digitare usando tutte e dieci le dita può lavorare molto
|
|
||||||
velocemente. Inoltre, i tasti funzione possono essere mappati per inserire
|
|
||||||
comandi dell'utente, ed è possibile usare il mouse.
|
|
||||||
|
|
||||||
Vim è disponibile in ambiente MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS e
|
|
||||||
in quasi tutte le varianti di Unix. L'adattamento a nuovi sistemi operativi
|
|
||||||
non dovrebbe essere molto difficile.
|
|
||||||
Precedenti versioni di Vim funzionano in ambiente MS-DOS, MS-Windows
|
|
||||||
95/98/Me/NT/2000/XP/Vista, Amiga DOS, Atari MiNT, BeOS, RISC OS e OS/2.
|
|
||||||
Tali versioni non sono più supportate.
|
|
||||||
|
|
||||||
|
|
||||||
DISTRIBUZIONE
|
|
||||||
|
|
||||||
Spesso è possibile usare il vostro Gestore applicazioni preferito per
|
|
||||||
installare Vim. Negli ambienti Mac e Linux una versione base di Vim è inclusa
|
|
||||||
nel sistema operativo, ma può ancora essere necessario installare Vim se si
|
|
||||||
desiderano funzionalità ulteriori.
|
|
||||||
|
|
||||||
Ci sono distribuzioni separate di Vim per gli ambienti Unix, PC, Amiga e per
|
|
||||||
qualche altro sistema operativo. Questo file README.txt è contenuto nelle
|
|
||||||
directory che contengono i file usati da Vim in fase di esecuzione. Nelle
|
|
||||||
stesse directory sono presente la documentazione, i file usati per
|
|
||||||
l'evidenziazione sintattica e altri file usati da Vim in fase di esecuzione.
|
|
||||||
Per installare Vim occorre ottenere un archivio che contiene solo i file
|
|
||||||
eseguibili, o un archivio che permette di compilare Vim a partire dai file
|
|
||||||
sorgente. Quale alternativa preferire dipende dal sistema su cui si vuole
|
|
||||||
usare Vim, e dal preferire (o meno) di compilarlo direttamente a partire dai
|
|
||||||
file sorgente. Consultate "https://www.vim.org/download.php" per una
|
|
||||||
panoramica delle distribuzioni correntemente disponibili.
|
|
||||||
|
|
||||||
Alcuni siti da cui ottenere l'ultima versione di Vim:
|
|
||||||
* Consultare la repository git in github: https://github.com/vim/vim.
|
|
||||||
* Procurarsi il codice sorgente come archivio https://github.com/vim/vim/tags.
|
|
||||||
* Ottenere un file per installare Vim in ambiente Windows dalla repository
|
|
||||||
vim-win32-installer:
|
|
||||||
https://github.com/vim/vim-win32-installer/releases.
|
|
||||||
|
|
||||||
|
|
||||||
COMPILARE VIM
|
|
||||||
|
|
||||||
Se si è ottenuta una distribuzione di file eseguibili di Vim non è necessario
|
|
||||||
compilarlo. Se si è ottenuta una distribuzione di file sorgente, tutto ciò
|
|
||||||
che serve per compilare Vim è nella directory "src". Vedere src/INSTALL per
|
|
||||||
come procedere.
|
|
||||||
|
|
||||||
|
|
||||||
INSTALLAZIONE
|
|
||||||
|
|
||||||
Vedere uno dei file elencati più sotto per istruzioni riguardo a uno specifico
|
|
||||||
sistema operativo. Tali file sono (nella repository git) nella directory
|
|
||||||
READMEdir oppure nella directory principale se si scompatta un archivio:
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS e MS-Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
|
|
||||||
Esistono altri file README_*.txt, a seconda della distribuzione in uso.
|
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTAZIONE
|
|
||||||
|
|
||||||
Esiste un corso di introduzione a Vim per principianti, della durata di circa
|
|
||||||
un'ora. Normalmente si può accedervi tramite il comando "vimtutor". Vedere
|
|
||||||
":help tutor" per ulteriori informazioni.
|
|
||||||
|
|
||||||
Ma la cosa migliore è usare la documentazione disponibile in una sessione di
|
|
||||||
Vim, tramite il comando ":help". Se ancora non si ha a disposizione Vim, si
|
|
||||||
può leggere il file "runtime/doc/help.txt". Questo file contiene puntatori
|
|
||||||
agli altri file che costituiscono la documentazione.
|
|
||||||
All'interno della documentazione esiste anche uno User Manual (manuale utente)
|
|
||||||
che si legge come un libro ed è raccomandato per imparare a usare Vim.
|
|
||||||
Vedere ":help user-manual". Il manuale utente è stato interamente tradotto in
|
|
||||||
italiano, ed è disponibile, vedere:
|
|
||||||
https://www.vim.org/translations.php
|
|
||||||
|
|
||||||
|
|
||||||
COPIE
|
|
||||||
|
|
||||||
Vim è un Charityware (ossia eventuali offerte per il suo utilizzo vanno a
|
|
||||||
un'attività caritativa). Vim può essere usato e copiato liberamente, senza
|
|
||||||
limitazioni, ma è incoraggiata un'offerta a favore di orfani ugandesi. Si
|
|
||||||
prega di leggere il file "runtime/doc/uganda.txt" per dettagli su come fare
|
|
||||||
(il file si può visualizzare digitando ":help uganda" all'interno di Vim).
|
|
||||||
|
|
||||||
Sommario della licenza: Non ci sono restrizioni nell'uso e nella distribuzione
|
|
||||||
di una copia non modificata di Vim. Parti di Vim possono anche essere
|
|
||||||
distribuite, ma il testo della licenza va sempre incluso. Per versioni
|
|
||||||
modificate di Vim, valgono alcune limitazioni. La licenza di Vim è
|
|
||||||
compatibile con la licenza GPL, è possibile compilare Vim utilizzando librerie
|
|
||||||
con licenza GPL e distribuirlo.
|
|
||||||
|
|
||||||
|
|
||||||
SPONSORIZZAZIONI
|
|
||||||
|
|
||||||
Correggere errori e aggiungere nuove funzionalità richiede tempo e fatica.
|
|
||||||
Per mostrare la vostra stima per quest'attività e per fornire motivazioni
|
|
||||||
agli sviluppatori perché continuino a lavorare su Vim, siete invitati a
|
|
||||||
fare una donazione.
|
|
||||||
|
|
||||||
Le somme donate saranno usate principalmente per aiutare dei bambini in
|
|
||||||
Uganda. Vedere "runtime/doc/uganda.txt". Allo stesso tempo, le donazioni
|
|
||||||
aumentano la motivazione del gruppo di sviluppo a continuare a lavorare su
|
|
||||||
Vim!
|
|
||||||
|
|
||||||
Informazioni più aggiornate sulla sponsorizzazione, possono essere trovate
|
|
||||||
sul sito Internet di Vim:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
|
|
||||||
CONTRIBUIRE
|
|
||||||
|
|
||||||
Chi vuole contribuire a rendere Vim ancora migliore, può consultare
|
|
||||||
il file CONTRIBUTING.md (in inglese).
|
|
||||||
|
|
||||||
|
|
||||||
INFORMAZIONE
|
|
||||||
|
|
||||||
Se il vostro sistema operativo è macOS, potete usare MacVim:
|
|
||||||
https://macvim.org
|
|
||||||
|
|
||||||
Le ultime notizie riguardo a Vim si possono trovare sulla pagina Internet di
|
|
||||||
Vim:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
Se avete problemi, è possibile consultare la documentazione Vim e i
|
|
||||||
suggerimenti su come utilizzarlo:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
Se avete ancora problemi o qualsiasi altra richiesta, è possibile usare una
|
|
||||||
delle mailing list per discuterne con utenti e sviluppatori di Vim:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
Se nient'altro funziona, potete riferire direttamente i problemi incontrati
|
|
||||||
alla mailing list degli sviluppatori, vim-dev:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
|
|
||||||
|
|
||||||
AUTORE PRINCIPALE
|
|
||||||
|
|
||||||
La maggior parte di Vim è stata creata da Bram Moolenaar <Bram@vim.org>,
|
|
||||||
vedere ":help Bram-Moolenaar"
|
|
||||||
|
|
||||||
Spedire tutti gli altri commenti, modifiche al codice sorgente, fiori e
|
|
||||||
suggerimenti alla mailing list vim-dev:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
README.txt para a versão 9.1 do Vim: Vi IMproved.
|
|
||||||
|
|
||||||
O QUE É VIM?
|
|
||||||
|
|
||||||
Vim é uma versão muito melhorada do bom e velho editor UNIX Vi. Muitos novos
|
|
||||||
recursos foram adicionados: desfazer multinível, destaque de sintaxe, histórico
|
|
||||||
de linha de comando, ajuda on-line, verificação ortográfica, completar
|
|
||||||
nome de arquivo, operações de bloco, linguagem de script, etc. Há também uma
|
|
||||||
interface gráfica (GUI) disponível. Ainda assim, a compatibilidade com Vi é
|
|
||||||
mantida, aqueles que têm Vi "nos dedos" se sentirão em casa.
|
|
||||||
Veja "runtime/doc/vi_diff.txt" para diferenças com Vi.
|
|
||||||
|
|
||||||
Este editor é muito útil para editar programas e outros arquivos de texto
|
|
||||||
simples. Todos os comandos são fornecidos com caracteres normais do teclado,
|
|
||||||
então aqueles que podem digitar com dez dedos podem trabalhar muito rápido.
|
|
||||||
Além disso, as teclas de função podem ser mapeadas para comandos pelo usuário,
|
|
||||||
e o mouse pode ser usado.
|
|
||||||
|
|
||||||
O Vim funciona em MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS e quase todos
|
|
||||||
os sabores do UNIX. A portabilidade para outros sistemas não deve ser difícil.
|
|
||||||
Versões mais antigas do Vim rodam em MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
|
|
||||||
Amiga DOS, Atari MiNT, BeOS, RISC OS e OS/2. Eles não são mais mantidos.
|
|
||||||
|
|
||||||
DISTRIBUIÇÃO
|
|
||||||
|
|
||||||
Você pode frequentemente usar seu gerenciador de pacotes favorito para
|
|
||||||
instalar o Vim. No Mac e Linux, uma pequena versão do Vim é pré-instalada,
|
|
||||||
você ainda precisa instalar o Vim se quiser mais recursos.
|
|
||||||
|
|
||||||
Existem distribuições separadas para Unix, PC, Amiga e alguns outros sistemas.
|
|
||||||
Este arquivo README.txt vem com o arquivo de tempo de execução. Ele inclui a
|
|
||||||
documentação, arquivos de sintaxe e outros arquivos que são usados em
|
|
||||||
tempo de execução. Para executar o Vim, você deve obter um dos arquivos
|
|
||||||
binários ou um arquivo fonte. Qual deles você precisa depende do sistema em
|
|
||||||
que deseja executá-lo e se você deseja ou deve compilá-lo você mesmo.
|
|
||||||
Verifique "https://www.vim.org/download.php" para uma visão geral das
|
|
||||||
distribuições disponíveis atualmente.
|
|
||||||
|
|
||||||
Alguns lugares populares para obter o Vim mais recente:
|
|
||||||
* Confira o repositório git do github: https://github.com/vim/vim.
|
|
||||||
* Obtenha o código-fonte como um arquivo: https://github.com/vim/vim/tags.
|
|
||||||
* Obtenha um executável do Windows do repositório vim-win32-installer:
|
|
||||||
https://github.com/vim/vim-win32-installer/releases.
|
|
||||||
|
|
||||||
COMPILAR
|
|
||||||
|
|
||||||
Se você obteve uma distribuição binária, não precisa compilar o Vim. Se você
|
|
||||||
obteve uma distribuição de origem, todo o material para compilar o Vim está no
|
|
||||||
diretório "src". Veja src/INSTALL para instruções.
|
|
||||||
|
|
||||||
INSTALAÇÃO
|
|
||||||
|
|
||||||
Veja um desses arquivos para instruções específicas do sistema. No diretório
|
|
||||||
READMEdir (no repositório) ou no diretório superior (se você descompactar um
|
|
||||||
arquivo):
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS e MS-Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
|
|
||||||
Existem outros arquivos README_*.txt, dependendo da distribuição que você usou.
|
|
||||||
|
|
||||||
DOCUMENTAÇÃO
|
|
||||||
|
|
||||||
O tutor do Vim é um curso de treinamento de uma hora para iniciantes.
|
|
||||||
Frequentemente, ele pode ser iniciado como "vimtutor". Veja ":help tutor"
|
|
||||||
para mais informações.
|
|
||||||
|
|
||||||
O melhor é usar ":help" no Vim. Se você ainda não tem um executável, leia
|
|
||||||
"runtime/doc/help.txt". Ele contém direcionamentos para os outros arquivos
|
|
||||||
de documentação. O Manual do Usuário é lido como um livro e é recomendado
|
|
||||||
para aprender a usar o Vim. Veja ":help user-manual".
|
|
||||||
|
|
||||||
CÓPIA
|
|
||||||
|
|
||||||
O Vim é um Charityware. Você pode usá-lo e copiá-lo o quanto quiser, mas
|
|
||||||
encorajamos que faça uma doação para ajudar órfãos em Uganda. Leia o arquivo
|
|
||||||
"runtime/doc/uganda.txt" para detalhes (execute ":help uganda" dentro do Vim).
|
|
||||||
|
|
||||||
Resumo da licença: Não há restrições quanto ao uso ou distribuição de uma
|
|
||||||
cópia não modificada do Vim. Partes do Vim também podem ser distribuídas, mas
|
|
||||||
o texto da licença deve sempre ser incluído. Para versões modificadas, algumas
|
|
||||||
restrições se aplicam. A licença é compatível com GPL, você pode compilar o Vim
|
|
||||||
com bibliotecas GPL e distribuí-lo.
|
|
||||||
|
|
||||||
PATROCÍNIO
|
|
||||||
|
|
||||||
Corrigir bugs e adicionar novos recursos exige muito tempo e esforço.
|
|
||||||
Para mostrar seu apreço pelo trabalho e motivar os desenvolvedores a continuar
|
|
||||||
trabalhando no Vim, envie uma doação.
|
|
||||||
|
|
||||||
O dinheiro que você doou será usado principalmente para ajudar crianças em
|
|
||||||
Uganda. Veja "runtime/doc/uganda.txt". Mas, ao mesmo tempo, as doações aumentam
|
|
||||||
a motivação da equipe de desenvolvimento para continuar trabalhando no Vim!
|
|
||||||
|
|
||||||
Para as informações mais recentes sobre patrocínio, consulte o site do Vim:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
CONTRIBUIÇÕES
|
|
||||||
|
|
||||||
Se você gostaria de ajudar a tornar o Vim melhor, veja o arquivo CONTRIBUTING.md.
|
|
||||||
|
|
||||||
INFORMAÇÕES
|
|
||||||
|
|
||||||
Se você estiver no macOS, pode usar o MacVim: https://macvim.org
|
|
||||||
|
|
||||||
As últimas notícias sobre o Vim podem ser encontradas na página inicial do Vim:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
Se você tiver problemas, dê uma olhada na documentação ou dicas do Vim:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
Se você ainda tiver problemas ou quaisquer outras perguntas, use uma das listas
|
|
||||||
de discussão para discuti-las com usuários e desenvolvedores do Vim:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
Se nada mais funcionar, relate os bugs diretamente para a lista de discussão
|
|
||||||
vim-dev:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
|
|
||||||
AUTOR PRINCIPAL
|
|
||||||
|
|
||||||
A maior parte do Vim foi criada por Bram Moolenaar <Bram@vim.org>,
|
|
||||||
":help Bram-Moolenaar"
|
|
||||||
|
|
||||||
Envie quaisquer outros comentários, patches, flores e sugestões para
|
|
||||||
a lista de discussão vim-dev: <vim-dev@vim.org>
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
Краткое описание для версии 9.2 программы Vim — Vi IMproved.
|
|
||||||
|
|
||||||
|
|
||||||
ЧТО ТАКОЕ РЕДАКТОР VIM?
|
|
||||||
|
|
||||||
Программа Vim — это значительно улучшенная версия старого доброго редактора Vi
|
|
||||||
из системы UNIX. При разработке этого редактора было добавлено множество новых
|
|
||||||
возможностей: многоуровневая отмена изменений, подсветка синтаксиса, журнал
|
|
||||||
командной строки, интерактивная справка, проверка орфографии, подстановка
|
|
||||||
наименований файлов и команд, операции с произвольными блоками текста,
|
|
||||||
встроенный язык программирования и т. д. Также доступен графический интерфейс
|
|
||||||
пользователя (GUI). И при этом сохраняется совместимость с редактором Vi,
|
|
||||||
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности
|
|
||||||
о различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
|
|
||||||
|
|
||||||
Этот редактор очень удобен для работы с исходным кодом программ, а также
|
|
||||||
разного рода других текстовых файлов. Все команды вводятся набором обычных
|
|
||||||
символов клавиатуры, поэтому те, кто освоил десятипальцевый метод печати, могут
|
|
||||||
работать очень быстро. Кроме того, пользователи могут назначить на
|
|
||||||
функциональные клавиши клавиатуры необходимые команды, и использовать
|
|
||||||
манипулятор «мышь».
|
|
||||||
|
|
||||||
В редакторе Vim также обеспечивается (насколько это возможно) совместимость
|
|
||||||
с POSIX-реализацией редактора vi, если он скомпилирован с минимальным набором
|
|
||||||
функционала (обычно называемый vim.tiny). Данная сборка чаще всего используется
|
|
||||||
во многих дистрибутивах Linux в качестве предустановленного редактора vi.
|
|
||||||
|
|
||||||
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS
|
|
||||||
и практически во всех UNIX-подобных системах. А перенос на другие платформы
|
|
||||||
не должен представлять особой сложности.
|
|
||||||
Предыдущие версии редактора Vim работают в операционных системах OS/2, MS-DOS,
|
|
||||||
MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
|
|
||||||
Но поддержка этих версий больше не осуществляется.
|
|
||||||
|
|
||||||
|
|
||||||
ПРЕДОСТАВЛЕНИЕ РЕДАКТОРА Vim
|
|
||||||
|
|
||||||
Для установки редактора Vim можно воспользоваться привычным диспетчером пакетов.
|
|
||||||
В системах Mac и Linux уже предустановленна начальная версия программы Vim,
|
|
||||||
но вам все равно нужно установить редактор Vim, если вы хотите получить больше
|
|
||||||
возможностей.
|
|
||||||
|
|
||||||
Существуют отдельные версии для Unix, PC, Amiga и некоторых других систем.
|
|
||||||
Данный файл README.ru.txt поставляется вместе с архивом рабочих файлов
|
|
||||||
программы. Этот архив включает в себя документацию, файлы подсветки синтаксиса
|
|
||||||
и другие файлы, которые используются редактором во время работы. Чтобы
|
|
||||||
запустить программу Vim, вы должны получить либо архив с исполняемыми файлами,
|
|
||||||
либо архив с исходным кодом. Какой из них вам нужен, зависит от того,
|
|
||||||
на какой системе вы хотите запустить редактор Vim, и есть ли для этой системы
|
|
||||||
исполняемые файлы или вы должны компилировать программу самостоятельно.
|
|
||||||
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите
|
|
||||||
на веб‐странице https://www.vim.org/download.php.
|
|
||||||
|
|
||||||
Несколько полезных мест, где можно получить последнюю версию редактора Vim:
|
|
||||||
* Посмотрите в git-хранилище на GitHub: https://github.com/vim/vim.
|
|
||||||
* Получить исходный код в виде архива: https://github.com/vim/vim/tags.
|
|
||||||
* Получить исполняемый файл для ОС Windows из хранилища vim-win32-installer:
|
|
||||||
https://github.com/vim/vim-win32-installer/releases.
|
|
||||||
|
|
||||||
|
|
||||||
КОМПИЛЯЦИЯ РЕДАКТОРА Vim
|
|
||||||
|
|
||||||
Если для вашей системы уже есть готовые исполняемые файлы, вам не нужно самому
|
|
||||||
компилировать редактор Vim. Если вы скачали архив с исходным кодом,
|
|
||||||
то всё необходимое для компиляции программы Vim находится в каталоге "src".
|
|
||||||
Инструкции смотрите в файле src/INSTALL.
|
|
||||||
|
|
||||||
|
|
||||||
УСТАНОВКА ПРОГРАММЫ Vim
|
|
||||||
|
|
||||||
Инструкции для конкретной системы смотрите в одном из нижеуказанных файлов.
|
|
||||||
Или в каталоге READMEdir (на https://github.com/vim/vim), или в основном
|
|
||||||
каталоге (если вы распаковываете архив):
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS и MS Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
|
|
||||||
Существует ещё несколько файлов README_*.txt, в зависимости от предоставляемого
|
|
||||||
пакета.
|
|
||||||
|
|
||||||
|
|
||||||
ДОКУМЕНТАЦИЯ ПО РЕДАКТОРУ Vim
|
|
||||||
|
|
||||||
Учебник Vim — это часовой практический курс для начинающих. Как правило,
|
|
||||||
для работы с ним нужно набрать команду "vimtutor". Чтобы получить
|
|
||||||
дополнительную информацию, смотрите раздел документации ":help tutor".
|
|
||||||
|
|
||||||
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас
|
|
||||||
ещё нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
|
|
||||||
В нём содержатся отсылки на другие полезные файлы документации. Руководство
|
|
||||||
пользователя можно читать как книгу, и оно рекомендуется для обучения работе
|
|
||||||
с редактором Vim. Смотрите ":help user-manual".
|
|
||||||
|
|
||||||
|
|
||||||
ЛИЦЕНЗИОННЫЕ ПРАВА
|
|
||||||
|
|
||||||
Редактор Vim является благотворительным программным обеспечением.
|
|
||||||
Использование и копирование программы Vim не ограничено, однако рекомендуется
|
|
||||||
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
|
|
||||||
подробности, прочитайте, пожалуйста, файл "runtime/doc/uganda.txt" (введите
|
|
||||||
команду ":help uganda" в редакторе Vim).
|
|
||||||
|
|
||||||
Краткое описание лицензии.
|
|
||||||
Нет никаких ограничений на использование или распространение немодифицированной
|
|
||||||
копии программы Vim. Части программы Vim также могут предоставляться отдельно,
|
|
||||||
но текст лицензии Vim всегда должен быть включён в поставку.
|
|
||||||
Для модифицированных версий программы действует несколько ограничений.
|
|
||||||
Лицензия Vim совместима с лицензией GNU GPL, вы можете компилировать
|
|
||||||
и распространять программу Vim с библиотеками, лицензированными под GNU GPL.
|
|
||||||
|
|
||||||
|
|
||||||
ФИНАНСОВАЯ ПОДДЕРЖКА ДЛЯ РАЗРАБОТКИ РЕДАКТОРА Vim
|
|
||||||
|
|
||||||
Устранение ошибок и добавление новых функциональных возможностей требует
|
|
||||||
вложения немалого количества времени и сил. Выразить признательность за труд
|
|
||||||
и подкрепить заинтересованность разработчиков программы в дальнейшей работе
|
|
||||||
над редактором Vim можно с помощью оказания финансовой поддержки.
|
|
||||||
|
|
||||||
Пожертвованные вами деньги будут в основном направлены на оказание помощи детям
|
|
||||||
Уганды, см. "runtime/doc/uganda.txt". Однако в любом случае финансирование
|
|
||||||
будет способствовать повышению заинтересованности команды разработчиков
|
|
||||||
в продолжении работы над редактором Vim!
|
|
||||||
|
|
||||||
Самая свежая информация об оказании финансовой поддержки публикуется
|
|
||||||
на веб-сайте программы Vim:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
|
|
||||||
ПОМОЩЬ В РАЗРАБОТКЕ РЕДАКТОРА Vim
|
|
||||||
|
|
||||||
Если вы хотите помочь сделать редактор Vim лучше, смотрите файл CONTRIBUTING.md.
|
|
||||||
|
|
||||||
|
|
||||||
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
|
|
||||||
|
|
||||||
Для системе macOS вы можете использовать MacVim: https://macvim.org
|
|
||||||
|
|
||||||
Последние новости о редакторе Vim можно найти на его домашней странице:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
Если у вас возникли вопросы, посмотрите полезные советы или документацию
|
|
||||||
по редактору Vim:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
Если у вас все ещё остались вопросы или есть сложности, воспользуйтесь одним
|
|
||||||
из списков рассылки, чтобы обсудить их с пользователями и разработчиками:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
Если ничего не помогает, сообщайте об ошибках непосредственно в список рассылки
|
|
||||||
vim-dev:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
|
|
||||||
|
|
||||||
ОСНОВНОЙ АВТОР ПРОГРАММЫ
|
|
||||||
|
|
||||||
Большая часть редактора Vim была создана Брамом Моленаром <Bram@vim.org>,
|
|
||||||
см. ":help Bram-Moolenaar"
|
|
||||||
|
|
||||||
Присылайте все прочие комментарии, исправления, цветы и предложения в список
|
|
||||||
рассылки vim-dev:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
README.txt för version 9.1 av Vim: Vi IMproved.
|
|
||||||
|
|
||||||
|
|
||||||
VAD ÄR VIM?
|
|
||||||
|
|
||||||
Vim är en kraftigt förbättrad version av den gamla goda UNIX-editorn Vi. Många nya
|
|
||||||
funktioner har lagts till: ångra på flera nivåer, syntaxmarkering, kommandoradshistorik
|
|
||||||
historik, onlinehjälp, stavningskontroll, filnamns komplettering, blockoperationer,
|
|
||||||
skriptspråk etc. Det finns också ett grafiskt användargränssnitt (GUI) tillgängligt.
|
|
||||||
Vi-kompatibiliteten bibehålls dock, så de som har Vi "i fingrarna" kommer
|
|
||||||
känna sig som hemma. Se "runtime/doc/vi_diff.txt" för skillnader jämfört med Vi.
|
|
||||||
|
|
||||||
Denna editor är mycket användbar för att redigera program och andra vanliga textfiler.
|
|
||||||
Alla kommandon ges med vanliga tangentbordstecken, så de som kan skriva
|
|
||||||
med tio fingrar kan arbeta mycket snabbt. Dessutom kan funktionsknapparna
|
|
||||||
mappas till kommandon av användaren, och musen kan användas.
|
|
||||||
|
|
||||||
Vim syftar också till att tillhandahålla en (mestadels) POSIX-kompatibel vi-implementering när
|
|
||||||
kompileras med en minimal uppsättning funktioner (vanligtvis kallad vim.tiny), som används
|
|
||||||
av många Linux-distributioner som standardvi-redigerare.
|
|
||||||
|
|
||||||
Vim körs under MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS och nästan alla
|
|
||||||
varianter av UNIX. Det bör inte vara särskilt svårt att porta till andra system.
|
|
||||||
Äldre versioner av Vim körs på MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
|
|
||||||
Amiga DOS, Atari MiNT, BeOS, RISC OS och OS/2. Dessa underhålls inte längre.
|
|
||||||
|
|
||||||
|
|
||||||
DISTRIBUTION
|
|
||||||
|
|
||||||
Du kan ofta använda din favoritpakethanterare för att installera Vim. På Mac och
|
|
||||||
Linux är en liten version av Vim förinstallerad, men du behöver ändå installera Vim
|
|
||||||
om du vill ha fler funktioner.
|
|
||||||
|
|
||||||
Det finns separata distributioner för Unix, PC, Amiga och vissa andra system.
|
|
||||||
Denna README.txt-fil medföljer runtime-arkivet. Den innehåller
|
|
||||||
dokumentation, syntaxfiler och andra filer som används vid körning. För att köra
|
|
||||||
Vim måste du skaffa antingen ett av binärarkiven eller ett källarkiv.
|
|
||||||
Vilket du behöver beror på vilket system du vill köra det på och om du
|
|
||||||
vill eller måste kompilera det själv. Se "https://www.vim.org/download.php" för
|
|
||||||
en översikt över de distributioner som för närvarande finns tillgängliga.
|
|
||||||
|
|
||||||
Några populära ställen att hämta den senaste versionen av Vim:
|
|
||||||
* Kolla in git-arkivet från github: https://github.com/vim/vim.
|
|
||||||
* Hämta källkoden som ett arkiv: https://github.com/vim/vim/tags.
|
|
||||||
* Hämta en Windows-körbar fil från vim-win32-installer-arkivet:
|
|
||||||
https://github.com/vim/vim-win32-installer/releases.
|
|
||||||
|
|
||||||
|
|
||||||
KOMPILERING
|
|
||||||
|
|
||||||
Om du har skaffat en binär distribution behöver du inte kompilera Vim. Om du
|
|
||||||
har skaffat en källkodsdistribution finns allt du behöver för att kompilera Vim i
|
|
||||||
katalogen "src". Se src/INSTALL för instruktioner.
|
|
||||||
|
|
||||||
|
|
||||||
INSTALLATION
|
|
||||||
|
|
||||||
Se någon av dessa filer för systemspecifika instruktioner. Antingen i
|
|
||||||
READMEdir-katalogen (i arkivet) eller i toppkatalogen (om du packar upp en
|
|
||||||
arkiv):
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS och MS-Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
|
|
||||||
Det finns andra README_*.txt-filer, beroende på vilken distribution du använde.
|
|
||||||
|
|
||||||
|
|
||||||
DOKUMENTATION
|
|
||||||
|
|
||||||
Vim-tutorn är en timmes lång utbildningskurs för nybörjare. Ofta kan den
|
|
||||||
startas som "vimtutor". Se ":help tutor" för mer information.
|
|
||||||
|
|
||||||
Det bästa är att använda ":help" i Vim. Om du ännu inte har en körbar fil, läs
|
|
||||||
"runtime/doc/help.txt". Den innehåller hänvisningar till andra dokumentationsfiler.
|
|
||||||
Användarhandboken läses som en bok och rekommenderas för att lära sig använda Vim. Se
|
|
||||||
":help user-manual".
|
|
||||||
|
|
||||||
|
|
||||||
KOPIERING
|
|
||||||
|
|
||||||
Vim är Charityware. Du kan använda och kopiera det så mycket du vill, men du
|
|
||||||
uppmuntras att göra en donation för att hjälpa föräldralösa barn i Uganda. Läs filen
|
|
||||||
"runtime/doc/uganda.txt" för mer information (skriv ":help uganda" i Vim).
|
|
||||||
|
|
||||||
Sammanfattning av licensen: Det finns inga begränsningar för användning eller distribution av en
|
|
||||||
oförändrad kopia av Vim. Delar av Vim får också distribueras, men licenstexten
|
|
||||||
texten måste alltid inkluderas. För modifierade versioner gäller några begränsningar.
|
|
||||||
Licensen är GPL-kompatibel, du kan kompilera Vim med GPL-bibliotek och
|
|
||||||
distribuera det.
|
|
||||||
|
|
||||||
|
|
||||||
SPONSRING
|
|
||||||
|
|
||||||
Att fixa buggar och lägga till nya funktioner tar mycket tid och ansträngning. För att visa
|
|
||||||
din uppskattning för arbetet och motivera utvecklarna att fortsätta arbeta med
|
|
||||||
Vim, skicka gärna en donation.
|
|
||||||
|
|
||||||
Pengarna du donerar kommer huvudsakligen att användas för att hjälpa barn i Uganda. Se
|
|
||||||
"runtime/doc/uganda.txt". Men samtidigt ökar donationerna
|
|
||||||
utvecklingsteamets motivation att fortsätta arbeta med Vim!
|
|
||||||
|
|
||||||
För den senaste informationen om sponsring, se Vims webbplats:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
|
|
||||||
BIDRA
|
|
||||||
|
|
||||||
Om du vill hjälpa till att förbättra Vim, se filen CONTRIBUTING.md.
|
|
||||||
|
|
||||||
|
|
||||||
INFORMATION
|
|
||||||
|
|
||||||
Om du använder macOS kan du använda MacVim: https://macvim.org
|
|
||||||
|
|
||||||
De senaste nyheterna om Vim finns på Vims hemsida:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
Om du har problem, ta en titt på Vims dokumentation eller tips:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
Om du fortfarande har problem eller andra frågor, använd någon av mailinglistorna
|
|
||||||
för att diskutera dem med Vim-användare och utvecklare:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
Om inget annat fungerar, rapportera buggar direkt till vim-dev-maillistan:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
|
|
||||||
|
|
||||||
HUVUDFÖRFATTARE
|
|
||||||
|
|
||||||
Det mesta av Vim har skapats av Bram Moolenaar <Bram@vim.org>, ":help Bram-Moolenaar"
|
|
||||||
|
|
||||||
Skicka övriga kommentarer, patchar, blommor och förslag till vim-dev
|
|
||||||
: <vim-dev@vim.org>
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
Vim: Vi IMproved 9.1 版本的 README.txt 文件
|
|
||||||
|
|
||||||
|
|
||||||
什 么 是 VIM ?
|
|
||||||
|
|
||||||
Vim 是经典 UNIX 编辑器 Vi 的一个极大改进版本。它新增了许多功能:多级撤销、语法高
|
|
||||||
亮、命令行历史、在线帮助、拼写检查、文件名补全、块操作、脚本语言等。同时也提供了
|
|
||||||
图形用户界面(GUI)。尽管如此,Vi 兼容性依然得以保留,习惯使用 Vi 的用户操作时仍
|
|
||||||
会感到得心应手。与 Vi 的差异请参阅 "runtime/doc/vi_diff.txt"。
|
|
||||||
|
|
||||||
此编辑器对于编辑代码和其他纯文本文件非常有用。所有命令都通过常规键盘字符输入,因
|
|
||||||
此熟练盲打的用户能够高效工作。此外,用户可以将功能键映射到命令,并且可以使用鼠标。
|
|
||||||
|
|
||||||
Vim 也致力于提供一个(基本)符合 POSIX 标准的 vi 实现。当它以最小功能集(通常称
|
|
||||||
为 vim.tiny)编译时,被许多 Linux 发行版用作默认的 vi 编辑器。
|
|
||||||
|
|
||||||
Vim 可在 MS-Windows (7, 8, 10, 11)、macOS、Haiku、VMS 以及几乎所有 UNIX 变体上运
|
|
||||||
行。移植到其他系统应该不太困难。旧版本的 Vim 曾在 Amiga DOS、Atari MiNT、BeOS、
|
|
||||||
MS-DOS、MS-Windows 95/98/Me/NT/2000/XP/Vista、RISC OS 和 OS/2 上运行。这些版本的
|
|
||||||
维护现已终止。
|
|
||||||
|
|
||||||
|
|
||||||
获 取 途 径
|
|
||||||
|
|
||||||
通常你可以使用你喜欢的软件包管理器来安装 Vim。在 Mac 和 Linux 上,会预装一个简化
|
|
||||||
版的 Vim,如果你需要更多功能,仍需要安装完整的 Vim。
|
|
||||||
|
|
||||||
有针对 Unix、PC、Amiga 和其他一些系统的独立发行版。本 README.txt 文件随运行时存
|
|
||||||
档一起提供。该存档包含文档、语法文件以及其他运行时使用的文件。要运行 Vim,你必须
|
|
||||||
获取二进制存档或源代码存档之一。您需要哪一种取决于您想要运行 Vim 的系统以及您是
|
|
||||||
否希望或必须自行编译。请查阅 "https://www.vim.org/download.php" 以了解当前可用的
|
|
||||||
发行版概览。
|
|
||||||
|
|
||||||
获取最新版 Vim 的常见方式:
|
|
||||||
* 从 github 检出 git 仓库:https://github.com/vim/vim。
|
|
||||||
* 以存档形式获取源代码:https://github.com/vim/vim/tags。
|
|
||||||
* 从 vim-win32-installer 仓库获取 Windows 可执行文件:
|
|
||||||
https://github.com/vim/vim-win32-installer/releases。
|
|
||||||
|
|
||||||
|
|
||||||
编 译
|
|
||||||
|
|
||||||
如果你获得的是二进制发行版,则无需编译 Vim。如果你获得的是源代码发行版,编译 Vim
|
|
||||||
所需的所有内容都在 "src" 目录中。请参阅 src/INSTALL 文件中的说明。
|
|
||||||
|
|
||||||
|
|
||||||
安 装
|
|
||||||
|
|
||||||
请查阅以下文件之一以获取系统特定的安装说明。这些文件位于仓库中的 READMEdir 目录,
|
|
||||||
或者在你解压缩存档后的顶级目录中:
|
|
||||||
|
|
||||||
README_ami.txt Amiga
|
|
||||||
README_unix.txt Unix
|
|
||||||
README_dos.txt MS-DOS 和 MS-Windows
|
|
||||||
README_mac.txt Macintosh
|
|
||||||
README_haiku.txt Haiku
|
|
||||||
README_vms.txt VMS
|
|
||||||
|
|
||||||
根据你使用的发行版,可能还有其他 README_*.txt 文件。
|
|
||||||
|
|
||||||
|
|
||||||
文 档
|
|
||||||
|
|
||||||
Vim tutor 是为初学者设计的一小时培训课程。通常可以通过 "vimtutor" 命令启动。更多
|
|
||||||
信息请参阅 ":help tutor"。
|
|
||||||
|
|
||||||
最佳方式是在 Vim 中使用 ":help" 命令。如果您尚未安装可执行文件,请阅读
|
|
||||||
"runtime/doc/help.txt"。该文件包含指向其他文档文件的指引。用户手册采用书籍体例编
|
|
||||||
排,是学习使用 Vim 的推荐资料。具体请参阅 ":help user-manual"。
|
|
||||||
|
|
||||||
|
|
||||||
复 制 与 版 权
|
|
||||||
|
|
||||||
Vim 是慈善软件。您可以尽情使用和复制它,但鼓励您捐款以帮助乌干达的孤儿。请阅读
|
|
||||||
"runtime/doc/uganda.txt" 文件了解详情(在 Vim 中执行 ":help uganda")。
|
|
||||||
|
|
||||||
许可摘要:对于未经修改的 Vim 副本,其使用或分发不受任何限制。Vim 的部分内容亦可
|
|
||||||
分发,但必须始终包含许可文本。对于修改版本,则需遵循若干限制条款。本许可证与 GPL
|
|
||||||
兼容,您可使用 GPL 库编译 Vim 并进行分发。
|
|
||||||
|
|
||||||
|
|
||||||
赞 助
|
|
||||||
|
|
||||||
修复错误与增添新功能均需投入大量时间与精力。为支持开发工作并激励开发者持续完善
|
|
||||||
Vim,敬请通过捐赠表达您的认可。
|
|
||||||
|
|
||||||
您捐赠的资金将主要用于帮助乌干达的儿童。请参阅 "runtime/doc/uganda.txt"。但同时,
|
|
||||||
您的捐赠也将激励开发团队持续投入 Vim 的开发工作。
|
|
||||||
|
|
||||||
关于赞助的最新信息,请查看 Vim 网站:
|
|
||||||
https://www.vim.org/sponsor/
|
|
||||||
|
|
||||||
|
|
||||||
贡 献
|
|
||||||
|
|
||||||
如果您想帮助改进 Vim,请参阅 CONTRIBUTING.md 文件。
|
|
||||||
|
|
||||||
|
|
||||||
信 息 与 支 持
|
|
||||||
|
|
||||||
如果您在 macOS 上,可以使用 MacVim:https://macvim.org
|
|
||||||
|
|
||||||
关于 Vim 的最新消息可以在 Vim 主页上找到:
|
|
||||||
https://www.vim.org/
|
|
||||||
|
|
||||||
如果您遇到问题,请查阅 Vim 文档或使用技巧:
|
|
||||||
https://www.vim.org/docs.php
|
|
||||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
|
||||||
|
|
||||||
如果您仍有问题或其他疑问,请使用其中一个邮件列表与 Vim 用户和开发者讨论:
|
|
||||||
https://www.vim.org/maillist.php
|
|
||||||
|
|
||||||
如果其他方法都无效,请直接将错误报告发送到 vim-dev 邮件列表:
|
|
||||||
<vim-dev@vim.org>
|
|
||||||
|
|
||||||
|
|
||||||
主 要 作 者
|
|
||||||
|
|
||||||
Vim 主要由 Bram Moolenaar <Bram@vim.org> 创建,可通过 ":help Bram-Moolenaar" 命
|
|
||||||
令了解更多信息。
|
|
||||||
|
|
||||||
请将任何其他评论、补丁、鲜花和建议发送到 vim-dev 邮件列表:<vim-dev@vim.org>
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user