mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-05-28 00:21:57 +02:00
Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ac45012c6 | |||
| e793669ceb | |||
| 39c08b5cd7 | |||
| 1d10a62c5f | |||
| 8bbd6d3c21 | |||
| 77324fc9d3 | |||
| 85084ef1e9 | |||
| 203258c3ad | |||
| 021b593e7e | |||
| c970330676 | |||
| e9b892ebcd | |||
| 25b2b94ea7 | |||
| a24f0a550f | |||
| 9ec66d3833 | |||
| fde7641622 | |||
| 5fa7ca57b3 | |||
| 42c9cfa7f4 | |||
| 08b270a8a4 | |||
| 336bd622c3 | |||
| 72defda84e | |||
| a99b90437a | |||
| d82103ed85 | |||
| b0967d587f | |||
| d0232917ce | |||
| 43a34f9f74 | |||
| 4119cf80e1 | |||
| 2db5c3b3ce | |||
| f60b796fa9 | |||
| 8c600052fa | |||
| 4cf7679383 | |||
| 58adb14739 | |||
| da440d21a6 | |||
| f1add63bf6 | |||
| b73174039d | |||
| a1e013d9df | |||
| c66ee271ee | |||
| 286eacd3f6 | |||
| 9bbf63dbf8 | |||
| 4e640bd930 | |||
| d125001297 | |||
| f1f60f859c | |||
| e39b3d9fb4 | |||
| abfa9efb98 | |||
| 36d7cd8965 | |||
| b7604cc19f | |||
| 345efa013d | |||
| 065ee9aebf | |||
| a260b87d9d | |||
| 3d6d5cc3a4 | |||
| 5a46a58eb6 | |||
| ccb80989f2 | |||
| 24c4d539ee | |||
| a803c7f940 | |||
| b01f357791 | |||
| 944363144a | |||
| 7cdd910164 | |||
| 24d55e3b5f | |||
| 8015cac16f | |||
| e268fb8d67 | |||
| 2791ea7877 | |||
| b5690794cf | |||
| 1738058e27 | |||
| da22ab4d96 |
+8
-2
@@ -17,6 +17,7 @@ env:
|
||||
vi_cv_dll_name_perl=/System/Library/Perl/5.16/darwin-thread-multi-2level/CORE/libperl.dylib
|
||||
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
|
||||
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.5/Python
|
||||
VIM=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
||||
"CONFOPT='--with-features=huge --enable-multibyte --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
|
||||
|
||||
sudo: false
|
||||
@@ -34,7 +35,12 @@ script:
|
||||
- grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"$vi_cv_dll_name_python3\\\\\"" src/auto/config.mk
|
||||
- make -j$NPROC
|
||||
- cat src/auto/config.mk
|
||||
- ./src/vim --version
|
||||
- $VIM -g -c "redir>result" -c version -c "redir END" -c q; sleep 1; cat result; cat result|grep -q -w "MacVim GUI"; rm result
|
||||
- $VIM -g -c "redir>result" -c lua 'print(\"Lua\")' -c "redir END" -c q; sleep 1; grep -q -w Lua; rm result
|
||||
- $VIM -g -c "redir>result" -c perl 'VIM::Msg(\"Perl\")' -c "redir END" -c q; sleep 1; grep -q -w Perl; rm result
|
||||
- $VIM -g -c "redir>result" -c py 'print(\"Python\")' -c "redir END" -c q; sleep 1; grep -q -w Python; rm result
|
||||
- $VIM -g -c "redir>result" -c py3 'print(\"Python3\")' -c "redir END" -c q; sleep 1; grep -q -w Python3; rm result
|
||||
- $VIM -g -c "redir>result" -c ruby 'puts(\"Ruby\")' -c "redir END" -c q; sleep 1; grep -q -w Ruby; rm result
|
||||
- make test
|
||||
|
||||
before_deploy:
|
||||
@@ -43,7 +49,7 @@ deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: HYHKVbuSG2Trc5zEN+aQO0TO/020qtTokoaaatd9GhQ/ImOI2uhOuVsk47mcViCINyE9+wwVEr23Tk7GqzsJBS66FoZJeOsgYoO/LFlQjCYyya+48Ajez6I2VAIGKn0JD6jpW+ZYIX7MAWLCQKv/vW03MrBMDLZvjB89pHe72MLQFlVcEzxsWnr7smTzLcuKShkV+AVZopE/HRdY1k/zjWf/TzcJgqXwThuJOPYY+CcGUv1CMJjWB8pBuH31pbQ2AVOXV7VG5oxy2HSbCeDRShKT3GooecWj7xjh9SApNqEIzC44RlufgyC73M0DeILUasmbF0g2Q+AsDaj3+9w3LbLbmfpV5kEM9E/PbzWEn+0EgRKV+HCscZnPMlzkiVWKnjzfwKGMOmTwD0aN4Bt6Y9z+UvQKfsQN+6wHmh7xcSpaeR1J6PBeaCd+QyhD7t9ZxP2qmZWCBMFpnkqO4+LoclJNV+IxYstNFjaKIvxEe/S9GM2w+i2cSDDrxSNz+kUGWzshyu6HXxRtrNo+qM6sCO8TiOMMALPAkLCJT2P/TPMRkdy2wjCDwprc1ePDqikIHIGGwQ8Csd5IqFUcJs405xw4HfVkOuhWL/SpLuI6OHOVQqAkqMEMaEhlfh1swFNkT4ffDJGzvklB8v2980B003eWbcHr6lMGtpqQecqgS9A=
|
||||
file: src/MacVim/build/Release/MacVim-7.4.dmg
|
||||
file: src/MacVim/build/Release/MacVim.dmg
|
||||
skip_cleanup: true
|
||||
on:
|
||||
all_branches: true
|
||||
|
||||
@@ -351,7 +351,6 @@ SRC_DOS = \
|
||||
src/xpm_w32.h \
|
||||
src/xxd/Make_bc3.mak \
|
||||
src/xxd/Make_bc5.mak \
|
||||
src/xxd/Make_cyg.mak \
|
||||
src/xxd/Make_djg.mak \
|
||||
src/xxd/Make_ming.mak \
|
||||
src/xxd/Make_mvc.mak \
|
||||
|
||||
@@ -131,6 +131,9 @@ MINOR = 4
|
||||
#
|
||||
# MS-Windows:
|
||||
# - Run make on Unix to update the ".mo" files.
|
||||
# - Get libintl-8.dll and libiconv-2.dll. E.g. from
|
||||
# https://mlocati.github.io/gettext-iconv-windows/ .
|
||||
# Put them in the top directory, "make dosrt" uses them.
|
||||
# - > make dossrc
|
||||
# > make dosrt
|
||||
# Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC.
|
||||
@@ -493,7 +496,8 @@ dosrt_files: dist prepare no_title.vim
|
||||
cp $$i dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES/vim.mo; \
|
||||
fi \
|
||||
done
|
||||
cp libintl.dll dist/vim/$(VIMRTDIR)/
|
||||
cp libintl-8.dll dist/vim/$(VIMRTDIR)/
|
||||
cp libiconv-2.dll dist/vim/$(VIMRTDIR)/
|
||||
|
||||
|
||||
# Used before uploading. Don't delete the AAPDIR/sign files!
|
||||
|
||||
+14
-8
@@ -6,13 +6,19 @@
|
||||
# because uninstall deletes most files in $0.
|
||||
|
||||
# Location of gvim_ole.exe, vimw32.exe, GvimExt/*, etc.
|
||||
!define VIMSRC "..\src"
|
||||
!ifndef VIMSRC
|
||||
!define VIMSRC "..\src"
|
||||
!endif
|
||||
|
||||
# Location of runtime files
|
||||
!define VIMRT ".."
|
||||
!ifndef VIMRT
|
||||
!define VIMRT ".."
|
||||
!endif
|
||||
|
||||
# Location of extra tools: diff.exe
|
||||
!define VIMTOOLS ..\..
|
||||
!ifndef VIMTOOLS
|
||||
!define VIMTOOLS ..\..
|
||||
!endif
|
||||
|
||||
# Comment the next line if you don't have UPX.
|
||||
# Get it at http://upx.sourceforge.net
|
||||
@@ -32,9 +38,10 @@
|
||||
Name "Vim ${VER_MAJOR}.${VER_MINOR}"
|
||||
OutFile gvim${VER_MAJOR}${VER_MINOR}.exe
|
||||
CRCCheck force
|
||||
SetCompressor lzma
|
||||
SetCompressor /SOLID lzma
|
||||
SetDatablockOptimize on
|
||||
RequestExecutionLevel highest
|
||||
XPStyle on
|
||||
|
||||
ComponentText "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer."
|
||||
DirText "Choose a directory to install Vim (should contain 'vim')"
|
||||
@@ -55,9 +62,6 @@ LicenseData ${VIMRT}\doc\uganda.nsis.txt
|
||||
!packhdr temp.dat "upx --best --compress-icons=1 temp.dat"
|
||||
!endif
|
||||
|
||||
SetCompressor /SOLID lzma
|
||||
XPStyle on
|
||||
|
||||
# This adds '\vim' to the user choice automagically. The actual value is
|
||||
# obtained below with ReadINIStr.
|
||||
InstallDir "$PROGRAMFILES\Vim"
|
||||
@@ -355,7 +359,9 @@ SectionEnd
|
||||
File ${VIMRT}\keymap\README.txt
|
||||
File ${VIMRT}\keymap\*.vim
|
||||
SetOutPath $0
|
||||
File ${VIMRT}\libintl.dll
|
||||
File ${VIMRT}\libintl-8.dll
|
||||
File ${VIMRT}\libiconv-2.dll
|
||||
File /nonfatal ${VIMRT}\libwinpthread-1.dll
|
||||
SectionEnd
|
||||
!endif
|
||||
|
||||
|
||||
+12
-1
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Jan 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -639,6 +639,7 @@ list of the current window.
|
||||
:0argadd x x a b c
|
||||
:1argadd x a x b c
|
||||
:$argadd x a b c x
|
||||
And after the last one:
|
||||
:+2argadd y a b c x y
|
||||
There is no check for duplicates, it is possible to
|
||||
add a file to the argument list twice.
|
||||
@@ -1458,6 +1459,16 @@ using zip, "[blowfish]" when using blowfish, etc.
|
||||
When writing an undo file, the same key and method will be used for the text
|
||||
in the undo file. |persistent-undo|.
|
||||
|
||||
To test for blowfish support you can use these conditions: >
|
||||
has('crypt-blowfish')
|
||||
has('crypt-blowfish2')
|
||||
This works since Vim 7.4.1099 while blowfish support was added earlier.
|
||||
Thus the condition failing doesn't mean blowfish is not supported. You can
|
||||
test for blowfish with: >
|
||||
v:version >= 703
|
||||
And for blowfish2 with: >
|
||||
v:version > 704 || (v:version == 704 && has('patch401'))
|
||||
<
|
||||
*E817* *E818* *E819* *E820*
|
||||
When encryption does not work properly, you would be able to write your text
|
||||
to a file and never be able to read it back. Therefore a test is performed to
|
||||
|
||||
+89
-27
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Jan 09
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Jan 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -873,7 +873,7 @@ cursor: >
|
||||
:let c = getline(".")[col(".") - 1]
|
||||
|
||||
If the length of the String is less than the index, the result is an empty
|
||||
String. A negative index always results in an empty string (reason: backwards
|
||||
String. A negative index always results in an empty string (reason: backward
|
||||
compatibility). Use [-1:] to get the last byte.
|
||||
|
||||
If expr8 is a |List| then it results the item at index expr1. See |list-index|
|
||||
@@ -919,6 +919,11 @@ just above, except that indexes out of range cause an error. Examples: >
|
||||
Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
|
||||
error.
|
||||
|
||||
Watch out for confusion between a namespace and a variable followed by a colon
|
||||
for a sublist: >
|
||||
mylist[n:] " uses variable n
|
||||
mylist[s:] " uses namespace s:, error!
|
||||
|
||||
|
||||
expr8.name entry in a |Dictionary| *expr-entry*
|
||||
|
||||
@@ -1750,9 +1755,11 @@ arglistid( [{winnr} [, {tabnr}]])
|
||||
Number argument list id
|
||||
argv( {nr}) String {nr} entry of the argument list
|
||||
argv( ) List the argument list
|
||||
assert_equal( {exp}, {act} [, {msg}]) none assert that {exp} equals {act}
|
||||
assert_false( {actual} [, {msg}]) none assert that {actual} is false
|
||||
assert_true( {actual} [, {msg}]) none assert that {actual} is true
|
||||
assert_equal( {exp}, {act} [, {msg}]) none assert {exp} equals {act}
|
||||
assert_exception({error} [, {msg}]) none assert {error} is in v:exception
|
||||
assert_fails( {cmd} [, {error}]) none assert {cmd} fails
|
||||
assert_false( {actual} [, {msg}]) none assert {actual} is false
|
||||
assert_true( {actual} [, {msg}]) none assert {actual} is true
|
||||
asin( {expr}) Float arc sine of {expr}
|
||||
atan( {expr}) Float arc tangent of {expr}
|
||||
atan2( {expr}, {expr}) Float arc tangent of {expr1} / {expr2}
|
||||
@@ -1792,7 +1799,7 @@ cursor( {lnum}, {col} [, {off}])
|
||||
Number move cursor to {lnum}, {col}, {off}
|
||||
cursor( {list}) Number move cursor to position in {list}
|
||||
deepcopy( {expr} [, {noref}]) any make a full copy of {expr}
|
||||
delete( {fname}) Number delete file {fname}
|
||||
delete( {fname} [, {flags}]) Number delete the file or directory {fname}
|
||||
did_filetype() Number TRUE if FileType autocommand event used
|
||||
diff_filler( {lnum}) Number diff filler lines about {lnum}
|
||||
diff_hlID( {lnum}, {col}) Number diff highlighting at {lnum}/{col}
|
||||
@@ -1844,7 +1851,7 @@ getcmdpos() Number return cursor position in command-line
|
||||
getcmdtype() String return current command-line type
|
||||
getcmdwintype() String return current command-line window type
|
||||
getcurpos() List position of the cursor
|
||||
getcwd() String the current working directory
|
||||
getcwd( [{winnr} [, {tabnr}]]) String get the current working directory
|
||||
getfontname( [{name}]) String name of font being used
|
||||
getfperm( {fname}) String file permissions of file {fname}
|
||||
getfsize( {fname}) Number size in bytes of file {fname}
|
||||
@@ -1875,7 +1882,8 @@ globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
|
||||
String do glob({expr}) for all dirs in {path}
|
||||
has( {feature}) Number TRUE if feature {feature} supported
|
||||
has_key( {dict}, {key}) Number TRUE if {dict} has entry {key}
|
||||
haslocaldir() Number TRUE if current window executed |:lcd|
|
||||
haslocaldir( [{winnr} [, {tabnr}]])
|
||||
Number TRUE if the window executed |:lcd|
|
||||
hasmapto( {what} [, {mode} [, {abbr}]])
|
||||
Number TRUE if mapping to {what} exists
|
||||
histadd( {history},{item}) String add an item to a history
|
||||
@@ -1943,6 +1951,7 @@ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
|
||||
nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr}
|
||||
or( {expr}, {expr}) Number bitwise OR
|
||||
pathshorten( {expr}) String shorten directory names in a path
|
||||
perleval( {expr}) any evaluate |Perl| expression
|
||||
pow( {x}, {y}) Float {x} to the power of {y}
|
||||
prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum}
|
||||
printf( {fmt}, {expr1}...) String format text
|
||||
@@ -2179,7 +2188,7 @@ argv([{nr}]) The result is the {nr}th file in the argument list of the
|
||||
returned.
|
||||
|
||||
*assert_equal()*
|
||||
assert_equal({expected}, {actual}, [, {msg}])
|
||||
assert_equal({expected}, {actual} [, {msg}])
|
||||
When {expected} and {actual} are not equal an error message is
|
||||
added to |v:errors|.
|
||||
There is no automatic conversion, the String "4" is different
|
||||
@@ -2193,18 +2202,36 @@ assert_equal({expected}, {actual}, [, {msg}])
|
||||
< Will result in a string to be added to |v:errors|:
|
||||
test.vim line 12: Expected 'foo' but got 'bar' ~
|
||||
|
||||
assert_false({actual}, [, {msg}]) *assert_false()*
|
||||
assert_exception({error} [, {msg}]) *assert_exception()*
|
||||
When v:exception does not contain the string {error} an error
|
||||
message is added to |v:errors|.
|
||||
This can be used to assert that a command throws an exception.
|
||||
Using the error number, followed by a colon, avoids problems
|
||||
with translations: >
|
||||
try
|
||||
commandthatfails
|
||||
call assert_false(1, 'command should have failed')
|
||||
catch
|
||||
call assert_exception('E492:')
|
||||
endtry
|
||||
|
||||
assert_fails({cmd} [, {error}]) *assert_fails()*
|
||||
Run {cmd} and add an error message to |v:errors| if it does
|
||||
NOT produce an error.
|
||||
When {error} is given it must match |v:errmsg|.
|
||||
|
||||
assert_false({actual} [, {msg}]) *assert_false()*
|
||||
When {actual} is not false an error message is added to
|
||||
|v:errors|, like with |assert_equal()|..
|
||||
|v:errors|, like with |assert_equal()|.
|
||||
A value is false when it is zero. When "{actual}" is not a
|
||||
number the assert fails.
|
||||
When {msg} is omitted an error in the form "Expected False but
|
||||
got {actual}" is produced.
|
||||
|
||||
assert_true({actual}, [, {msg}]) *assert_true()*
|
||||
assert_true({actual} [, {msg}]) *assert_true()*
|
||||
When {actual} is not true an error message is added to
|
||||
|v:errors|, like with |assert_equal()|..
|
||||
A value is true when it is a non-zeron number. When {actual}
|
||||
|v:errors|, like with |assert_equal()|.
|
||||
A value is true when it is a non-zero number. When {actual}
|
||||
is not a number the assert fails.
|
||||
When {msg} is omitted an error in the form "Expected True but
|
||||
got {actual}" is produced.
|
||||
@@ -2728,10 +2755,20 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
|
||||
{noref} set to 1 will fail.
|
||||
Also see |copy()|.
|
||||
|
||||
delete({fname}) *delete()*
|
||||
Deletes the file by the name {fname}. The result is a Number,
|
||||
which is 0 if the file was deleted successfully, and non-zero
|
||||
when the deletion failed.
|
||||
delete({fname} [, {flags}]) *delete()*
|
||||
Without {flags} or with {flags} empty: Deletes the file by the
|
||||
name {fname}. This also works when {fname} is a symbolic link.
|
||||
|
||||
When {flags} is "d": Deletes the directory by the name
|
||||
{fname}. This fails when directory {fname} is not empty.
|
||||
|
||||
When {flags} is "rf": Deletes the directory by the name
|
||||
{fname} and everything in it, recursively. BE CAREFUL!
|
||||
A symbolic link itself is deleted, not what it points to.
|
||||
|
||||
The result is a Number, which is 0 if the delete operation was
|
||||
successful and -1 when the deletion failed or partly failed.
|
||||
|
||||
Use |remove()| to delete an item from a |List|.
|
||||
To delete a line from the buffer use |:delete|. Use |:exe|
|
||||
when the line number is in a variable.
|
||||
@@ -3477,7 +3514,7 @@ getcmdwintype() *getcmdwintype()*
|
||||
*getcurpos()*
|
||||
getcurpos() Get the position of the cursor. This is like getpos('.'), but
|
||||
includes an extra item in the list:
|
||||
[bufnum, lnum, col, off, curswant]
|
||||
[bufnum, lnum, col, off, curswant] ~
|
||||
The "curswant" number is the preferred column when moving the
|
||||
cursor vertically.
|
||||
This can be used to save and restore the cursor position: >
|
||||
@@ -3486,8 +3523,16 @@ getcurpos() Get the position of the cursor. This is like getpos('.'), but
|
||||
call setpos('.', save_cursor)
|
||||
<
|
||||
*getcwd()*
|
||||
getcwd() The result is a String, which is the name of the current
|
||||
getcwd([{winnr} [, {tabnr}]])
|
||||
The result is a String, which is the name of the current
|
||||
working directory.
|
||||
Without arguments, for the current window.
|
||||
|
||||
With {winnr} return the local current directory of this window
|
||||
in the current tab page.
|
||||
With {winnr} and {tabnr} return the local current directory of
|
||||
the window in the specified tab page.
|
||||
Return an empty string if the arguments are invalid.
|
||||
|
||||
getfsize({fname}) *getfsize()*
|
||||
The result is a Number, which is the size in bytes of the
|
||||
@@ -3823,9 +3868,15 @@ has_key({dict}, {key}) *has_key()*
|
||||
The result is a Number, which is 1 if |Dictionary| {dict} has
|
||||
an entry with key {key}. Zero otherwise.
|
||||
|
||||
haslocaldir() *haslocaldir()*
|
||||
The result is a Number, which is 1 when the current
|
||||
window has set a local path via |:lcd|, and 0 otherwise.
|
||||
haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()*
|
||||
The result is a Number, which is 1 when the window has set a
|
||||
local path via |:lcd|, and 0 otherwise.
|
||||
|
||||
Without arguments use the current window.
|
||||
With {winnr} use this window in the current tab page.
|
||||
With {winnr} and {tabnr} use the window in the specified tab
|
||||
page.
|
||||
Return 0 if the arguments are invalid.
|
||||
|
||||
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
|
||||
The result is a Number, which is 1 if there is a mapping that
|
||||
@@ -4512,8 +4563,8 @@ matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]])
|
||||
respectively. If the {id} argument is not specified or -1,
|
||||
|matchadd()| automatically chooses a free ID.
|
||||
|
||||
The optional {dict} argmument allows for further custom
|
||||
values. Currently this is used to specify a match specifc
|
||||
The optional {dict} argument allows for further custom
|
||||
values. Currently this is used to specify a match specific
|
||||
conceal character that will be shown for |hl-Conceal|
|
||||
highlighted matches. The dict can have the following members:
|
||||
|
||||
@@ -4743,6 +4794,17 @@ pathshorten({expr}) *pathshorten()*
|
||||
< ~/.v/a/myfile.vim ~
|
||||
It doesn't matter if the path exists or not.
|
||||
|
||||
perleval({expr}) *perleval()*
|
||||
Evaluate Perl expression {expr} in scalar context and return
|
||||
its result converted to Vim data structures. If value can't be
|
||||
converted, it is returned as a string Perl representation.
|
||||
Note: If you want an array or hash, {expr} must return a
|
||||
reference to it.
|
||||
Example: >
|
||||
:echo perleval('[1 .. 4]')
|
||||
< [1, 2, 3, 4]
|
||||
{only available when compiled with the |+perl| feature}
|
||||
|
||||
pow({x}, {y}) *pow()*
|
||||
Return the power of {x} to the exponent {y} as a |Float|.
|
||||
{x} and {y} must evaluate to a |Float| or a |Number|.
|
||||
@@ -5257,7 +5319,7 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
|
||||
|
||||
'ignorecase', 'smartcase' and 'magic' are used.
|
||||
|
||||
When the 'z' flag is not given seaching always starts in
|
||||
When the 'z' flag is not given, searching always starts in
|
||||
column zero and then matches before the cursor are skipped.
|
||||
When the 'c' flag is present in 'cpo' the next search starts
|
||||
after the match. Without the 'c' flag the next search starts
|
||||
@@ -7623,7 +7685,7 @@ This does NOT work: >
|
||||
From Vim version 4.5 until 5.0, every Ex command in
|
||||
between the ":if" and ":endif" is ignored. These two
|
||||
commands were just to allow for future expansions in a
|
||||
backwards compatible way. Nesting was allowed. Note
|
||||
backward compatible way. Nesting was allowed. Note
|
||||
that any ":else" or ":elseif" was ignored, the "else"
|
||||
part was not executed either.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Jan 09
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
|
||||
VIM - main help file
|
||||
k
|
||||
@@ -10,14 +10,14 @@ Close this window: Use ":q<Enter>".
|
||||
Jump to a subject: Position the cursor on a tag (e.g. |bars|) and hit CTRL-].
|
||||
With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI).
|
||||
Double-click the left mouse button on a tag, e.g. |bars|.
|
||||
Jump back: Type CTRL-T or CTRL-O (repeat to go further back).
|
||||
Jump back: Type CTRL-T or CTRL-O. Repeat to go further back.
|
||||
|
||||
Get specific help: It is possible to go directly to whatever you want help
|
||||
on, by giving an argument to the |:help| command.
|
||||
It is possible to further specify the context:
|
||||
*help-context*
|
||||
Prepend something to specify the context: *help-context*
|
||||
|
||||
WHAT PREPEND EXAMPLE ~
|
||||
Normal mode command (nothing) :help x
|
||||
Normal mode command :help x
|
||||
Visual mode command v_ :help v_u
|
||||
Insert mode command i_ :help i_<Esc>
|
||||
Command-line command : :help :quit
|
||||
@@ -25,7 +25,7 @@ Get specific help: It is possible to go directly to whatever you want help
|
||||
Vim command argument - :help -r
|
||||
Option ' :help 'textwidth'
|
||||
Regular expression / :help /[
|
||||
Also see |help-summary| for a verbose explanation.
|
||||
See |help-summary| for more contexts and an explanation.
|
||||
|
||||
Search for help: Type ":help word", then hit CTRL-D to see matching
|
||||
help entries for "word".
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_mzsch.txt* For Vim version 7.4. Last change: 2012 Dec 17
|
||||
*if_mzsch.txt* For Vim version 7.4. Last change: 2016 Jan 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Sergey Khorev
|
||||
@@ -13,6 +13,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme*
|
||||
5. mzeval() Vim function |mzscheme-mzeval|
|
||||
6. Using Function references |mzscheme-funcref|
|
||||
7. Dynamic loading |mzscheme-dynamic|
|
||||
8. MzScheme setup |mzscheme-setup|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
|
||||
@@ -272,6 +273,9 @@ output then includes |+mzscheme/dyn|.
|
||||
This means that Vim will search for the MzScheme DLL files only when needed.
|
||||
When you don't use the MzScheme interface you don't need them, thus you can
|
||||
use Vim without these DLL files.
|
||||
NOTE: Newer version of MzScheme (Racket) require earlier (trampolined)
|
||||
initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at
|
||||
startup if possible.
|
||||
|
||||
To use the MzScheme interface the MzScheme DLLs must be in your search path.
|
||||
In a console window type "path" to see what directories are used.
|
||||
@@ -282,5 +286,24 @@ For MzScheme version 209 they will be "libmzsch209_000.dll" and
|
||||
command, look for -DDYNAMIC_MZSCH_DLL="something" and
|
||||
-DDYNAMIC_MZGC_DLL="something" in the "Compilation" info.
|
||||
|
||||
For example, if MzScheme (Racket) is installed at C:\Racket63, you may need
|
||||
to set the environment variable as the following: >
|
||||
|
||||
PATH=%PATH%;C:\Racket63\lib
|
||||
PLTCOLLECTS=C:\Racket63\collects
|
||||
PLTCONFIGDIR=C:\Racket63\etc
|
||||
<
|
||||
==============================================================================
|
||||
8. MzScheme setup *mzscheme-setup*
|
||||
|
||||
Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base"
|
||||
if it doesn't exist), "r5rs" module for test and "raco ctool" command for
|
||||
building Vim. If MzScheme did not have them, you can install them with
|
||||
MzScheme's raco command:
|
||||
>
|
||||
raco pkg install scheme-lib # scheme/base module
|
||||
raco pkg install r5rs-lib # r5rs module
|
||||
raco pkg install cext-lib # raco ctool command
|
||||
<
|
||||
======================================================================
|
||||
vim:tw=78:ts=8:sts=4:ft=help:norl:
|
||||
|
||||
+8
-8
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 7.4. Last change: 2014 Dec 08
|
||||
*map.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -483,7 +483,7 @@ internal code is written to the script file.
|
||||
|
||||
|
||||
1.6 SPECIAL CHARACTERS *:map-special-chars*
|
||||
*map_backslash*
|
||||
*map_backslash* *map-backslash*
|
||||
Note that only CTRL-V is mentioned here as a special character for mappings
|
||||
and abbreviations. When 'cpoptions' does not contain 'B', a backslash can
|
||||
also be used like CTRL-V. The <> notation can be fully used then |<>|. But
|
||||
@@ -494,21 +494,21 @@ To map a backslash, or use a backslash literally in the {rhs}, the special
|
||||
sequence "<Bslash>" can be used. This avoids the need to double backslashes
|
||||
when using nested mappings.
|
||||
|
||||
*map_CTRL-C*
|
||||
*map_CTRL-C* *map-CTRL-C*
|
||||
Using CTRL-C in the {lhs} is possible, but it will only work when Vim is
|
||||
waiting for a key, not when Vim is busy with something. When Vim is busy
|
||||
CTRL-C interrupts/breaks the command.
|
||||
When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy
|
||||
command to the clipboard. Use CTRL-Break to interrupt Vim.
|
||||
|
||||
*map_space_in_lhs*
|
||||
*map_space_in_lhs* *map-space_in_lhs*
|
||||
To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for
|
||||
each space).
|
||||
*map_space_in_rhs*
|
||||
*map_space_in_rhs* *map-space_in_rhs*
|
||||
If you want a {rhs} that starts with a space, use "<Space>". To be fully Vi
|
||||
compatible (but unreadable) don't use the |<>| notation, precede {rhs} with a
|
||||
single CTRL-V (you have to type CTRL-V two times).
|
||||
*map_empty_rhs*
|
||||
*map_empty_rhs* *map-empty-rhs*
|
||||
You can create an empty {rhs} by typing nothing after a single CTRL-V (you
|
||||
have to type CTRL-V two times). Unfortunately, you cannot do this in a vimrc
|
||||
file.
|
||||
@@ -583,7 +583,7 @@ Upper and lowercase differences are ignored.
|
||||
It is not possible to put a comment after these commands, because the '"'
|
||||
character is considered to be part of the {lhs} or {rhs}.
|
||||
|
||||
*map_bar*
|
||||
*map_bar* *map-bar*
|
||||
Since the '|' character is used to separate a map command from the next
|
||||
command, you will have to do something special to include a '|' in {rhs}.
|
||||
There are three methods:
|
||||
@@ -601,7 +601,7 @@ When 'b' is present in 'cpoptions', "\|" will be recognized as a mapping
|
||||
ending in a '\' and then another command. This is Vi compatible, but
|
||||
illogical when compared to other commands.
|
||||
|
||||
*map_return*
|
||||
*map_return* *map-return*
|
||||
When you have a mapping that contains an Ex command, you need to put a line
|
||||
terminator after it to have it executed. The use of <CR> is recommended for
|
||||
this (see |<>|). Example: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*mlang.txt* For Vim version 7.4. Last change: 2012 Jan 15
|
||||
*mlang.txt* For Vim version 7.4. Last change: 2016 Jan 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -97,13 +97,15 @@ If you used the self-installing .exe file, message translations should work
|
||||
already. Otherwise get the libintl.dll file if you don't have it yet:
|
||||
|
||||
http://sourceforge.net/projects/gettext
|
||||
Or:
|
||||
https://mlocati.github.io/gettext-iconv-windows/
|
||||
|
||||
This also contains tools xgettext, msgformat and others.
|
||||
|
||||
libintl.dll should be placed in same directory with (g)vim.exe, or some
|
||||
place where PATH environment value describe. Message files (vim.mo)
|
||||
have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES", where "xx" is the
|
||||
abbreviation of the language (mostly two letters).
|
||||
place where PATH environment value describe. Vim also finds libintl-8.dll.
|
||||
Message files (vim.mo) have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES",
|
||||
where "xx" is the abbreviation of the language (mostly two letters).
|
||||
|
||||
If you write your own translations you need to generate the .po file and
|
||||
convert it to a .mo file. You need to get the source distribution and read
|
||||
|
||||
+30
-2
@@ -1,4 +1,4 @@
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2015 Apr 13
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2016 Jan 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -483,16 +483,44 @@ Additionally, these commands can be used:
|
||||
finish Finish the current script or user function and come
|
||||
back to debug mode for the command after the one that
|
||||
sourced or called it.
|
||||
*>bt*
|
||||
*>backtrace*
|
||||
*>where*
|
||||
backtrace Show the call stacktrace for current debugging session.
|
||||
bt
|
||||
where
|
||||
*>frame*
|
||||
frame N Goes to N bactrace level. + and - signs make movement
|
||||
relative. E.g., ":frame +3" goes three frames up.
|
||||
*>up*
|
||||
up Goes one level up from call stacktrace.
|
||||
*>down*
|
||||
down Goes one level down from call stacktrace.
|
||||
|
||||
About the additional commands in debug mode:
|
||||
- There is no command-line completion for them, you get the completion for the
|
||||
normal Ex commands only.
|
||||
- You can shorten them, up to a single character: "c", "n", "s" and "f".
|
||||
- You can shorten them, up to a single character, unless more then one command
|
||||
starts with the same letter. "f" stands for "finish", use "fr" for "frame".
|
||||
- Hitting <CR> will repeat the previous one. When doing another command, this
|
||||
is reset (because it's not clear what you want to repeat).
|
||||
- When you want to use the Ex command with the same name, prepend a colon:
|
||||
":cont", ":next", ":finish" (or shorter).
|
||||
|
||||
The backtrace shows the hierarchy of function calls, e.g.:
|
||||
>bt ~
|
||||
3 function One[3] ~
|
||||
2 Two[3] ~
|
||||
->1 Three[3] ~
|
||||
0 Four ~
|
||||
line 1: let four = 4 ~
|
||||
|
||||
The "->" points to the current frame. Use "up", "down" and "frame N" to
|
||||
select another frame.
|
||||
|
||||
In the current frame you can evaluate the local function variables. There is
|
||||
no way to see the command at the current line yet.
|
||||
|
||||
|
||||
DEFINING BREAKPOINTS
|
||||
*:breaka* *:breakadd*
|
||||
|
||||
@@ -3404,12 +3404,18 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
|
||||
== change.txt /*==*
|
||||
> change.txt /*>*
|
||||
>> change.txt /*>>*
|
||||
>backtrace repeat.txt /*>backtrace*
|
||||
>bt repeat.txt /*>bt*
|
||||
>cont repeat.txt /*>cont*
|
||||
>down repeat.txt /*>down*
|
||||
>finish repeat.txt /*>finish*
|
||||
>frame repeat.txt /*>frame*
|
||||
>interrupt repeat.txt /*>interrupt*
|
||||
>next repeat.txt /*>next*
|
||||
>quit repeat.txt /*>quit*
|
||||
>step repeat.txt /*>step*
|
||||
>up repeat.txt /*>up*
|
||||
>where repeat.txt /*>where*
|
||||
? pattern.txt /*?*
|
||||
?<CR> pattern.txt /*?<CR>*
|
||||
@ repeat.txt /*@*
|
||||
@@ -4955,6 +4961,8 @@ asm.vim syntax.txt /*asm.vim*
|
||||
asm68k syntax.txt /*asm68k*
|
||||
asmh8300.vim syntax.txt /*asmh8300.vim*
|
||||
assert_equal() eval.txt /*assert_equal()*
|
||||
assert_exception() eval.txt /*assert_exception()*
|
||||
assert_fails() eval.txt /*assert_fails()*
|
||||
assert_false() eval.txt /*assert_false()*
|
||||
assert_true() eval.txt /*assert_true()*
|
||||
at motion.txt /*at*
|
||||
@@ -7014,9 +7022,13 @@ man.vim filetype.txt /*man.vim*
|
||||
manual-copyright usr_01.txt /*manual-copyright*
|
||||
map() eval.txt /*map()*
|
||||
map-<SID> map.txt /*map-<SID>*
|
||||
map-CTRL-C map.txt /*map-CTRL-C*
|
||||
map-ambiguous map.txt /*map-ambiguous*
|
||||
map-backslash map.txt /*map-backslash*
|
||||
map-backtick tips.txt /*map-backtick*
|
||||
map-bar map.txt /*map-bar*
|
||||
map-comments map.txt /*map-comments*
|
||||
map-empty-rhs map.txt /*map-empty-rhs*
|
||||
map-error map.txt /*map-error*
|
||||
map-examples map.txt /*map-examples*
|
||||
map-keys-fails map.txt /*map-keys-fails*
|
||||
@@ -7025,7 +7037,10 @@ map-modes map.txt /*map-modes*
|
||||
map-multibyte map.txt /*map-multibyte*
|
||||
map-overview map.txt /*map-overview*
|
||||
map-precedence map.txt /*map-precedence*
|
||||
map-return map.txt /*map-return*
|
||||
map-self-destroy tips.txt /*map-self-destroy*
|
||||
map-space_in_lhs map.txt /*map-space_in_lhs*
|
||||
map-space_in_rhs map.txt /*map-space_in_rhs*
|
||||
map-typing map.txt /*map-typing*
|
||||
map-which-keys map.txt /*map-which-keys*
|
||||
map.txt map.txt /*map.txt*
|
||||
@@ -7170,6 +7185,7 @@ mzscheme-examples if_mzsch.txt /*mzscheme-examples*
|
||||
mzscheme-funcref if_mzsch.txt /*mzscheme-funcref*
|
||||
mzscheme-mzeval if_mzsch.txt /*mzscheme-mzeval*
|
||||
mzscheme-sandbox if_mzsch.txt /*mzscheme-sandbox*
|
||||
mzscheme-setup if_mzsch.txt /*mzscheme-setup*
|
||||
mzscheme-threads if_mzsch.txt /*mzscheme-threads*
|
||||
mzscheme-vim if_mzsch.txt /*mzscheme-vim*
|
||||
mzscheme-vimext if_mzsch.txt /*mzscheme-vimext*
|
||||
@@ -7616,6 +7632,7 @@ perl-overview if_perl.txt /*perl-overview*
|
||||
perl-patterns pattern.txt /*perl-patterns*
|
||||
perl-using if_perl.txt /*perl-using*
|
||||
perl.vim syntax.txt /*perl.vim*
|
||||
perleval() eval.txt /*perleval()*
|
||||
persistent-undo undo.txt /*persistent-undo*
|
||||
pexpr-option print.txt /*pexpr-option*
|
||||
pfn-option print.txt /*pfn-option*
|
||||
|
||||
+9
-46
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Jan 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -34,8 +34,6 @@ not be repeated below, unless there is extra information.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
/tmp/test_increment_new_style.patch.2
|
||||
|
||||
Regexp problems:
|
||||
- The regexp engines are not reentrant, causing havoc when interrupted by a
|
||||
remote expression or something else. Move global variables onto the stack
|
||||
@@ -78,8 +76,6 @@ Regexp problems:
|
||||
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
|
||||
- Search for \\~ causes error E874.
|
||||
|
||||
Help to build with interfaces. (Ken Takata, 2015 Jan 5)
|
||||
|
||||
Need to try out instructions in INSSTALLpc.txt about how to install all
|
||||
interfaces and how to build Vim with them.
|
||||
Appveyor build with self-installing executable, includes getting most
|
||||
@@ -101,10 +97,6 @@ Should use /usr/local/share/applications or /usr/share/applications.
|
||||
Or use $XDG_DATA_DIRS.
|
||||
Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
|
||||
|
||||
Patch to update the help summary. (Christian Brabandt, 2015 Jan 10)
|
||||
|
||||
Add has('crypt-blowfish') and has('crypt-blowfish2') (Smu Johnson)
|
||||
|
||||
Access to uninitialized memory in match_backref() regexp_nda.c:4882
|
||||
(Dominique Pelle, 2015 Nov 6)
|
||||
|
||||
@@ -123,25 +115,14 @@ Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
|
||||
|
||||
Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
|
||||
|
||||
Patch to fix "." after CTRL-A in Visual block mode. (Ozaki Kiichi, 2015 Oct
|
||||
24)
|
||||
|
||||
Patch to have CTRL-A and CTRL-X update the '[ and '] marks.
|
||||
(Yukihiro Nakadaira, 2015 Aug 23)
|
||||
|
||||
Patch for GVimExt building with VS2015. (Mike Williams, 2015 Jan 10)
|
||||
|
||||
Unexpected delay when using CTRL-O u. It's not timeoutlen.
|
||||
(Gary Johnson, 2015 Aug 28)
|
||||
|
||||
Instead of separately uploading patches to the ftp site, can we get them from
|
||||
github? This URL works:
|
||||
Instead of separately uploading patches to the ftp site, we can get them from
|
||||
github with a URL like this:
|
||||
https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
|
||||
Diff for version.c contains more context, can't skip a patch.
|
||||
>
|
||||
Can src/GvimExt/Make_cyg.mak be removed?
|
||||
Same for src/xxd/Make_cyg.mak
|
||||
|
||||
When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
|
||||
triggered. Use the code from the end of set_num_option() in
|
||||
set_color_count().
|
||||
@@ -152,18 +133,6 @@ Plugin to use Vim in MANPAGER. Konfekt, PR #491
|
||||
|
||||
Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
|
||||
|
||||
Patch for explaining the help. (Christian Brabandt, 2015 Jan 8)
|
||||
Should be in the user manual?
|
||||
|
||||
Patch to recognize string slice for variable followed by colon.
|
||||
(Hirohito Higashi, 2015 Nov 24)
|
||||
|
||||
Patch to add debug backtrace. (Alberto Fanjul, 2015 Sep 27)
|
||||
Update 2016 Jan 2. Issue #433
|
||||
|
||||
Patch to make mzscheme (racket) interface work. (Yukihiro Nakadaira, 2015 Jan
|
||||
10) Doesn't work for me, need to build from source.
|
||||
|
||||
MS-Windows: When editing a file with a leading space, writing it uses the
|
||||
wrong name. (Aram, 2014 Nov 7) Vim 7.4.
|
||||
|
||||
@@ -172,21 +141,14 @@ specifically? First try with the parens, then without.
|
||||
|
||||
Half-finished patch to fix the Problem using cgn to change a search hit when
|
||||
replacement includes hit. Reported by John Beckett, fix by Christian Brabandt,
|
||||
2015 Dec 14, Update Dec 15.
|
||||
|
||||
Patch to fix pointer cast warning in VS2015. (Mike Williams, 2015 Dec 13)
|
||||
Patch to make building GVimExt with VS2015. (Mike Williams, 2015 Dec 13)
|
||||
2016 Jan 11.
|
||||
|
||||
Value returned by virtcol() changes depending on how lines wrap. This is
|
||||
inconsistent with the documentation.
|
||||
|
||||
Patch to add perleval(). (Damien, 2015 Dec 8, update 2016 Jan 4)
|
||||
|
||||
Can we cache the syntax attributes, so that updates for 'relativenumber' and
|
||||
'cursorline'/'cursorcolumn' are a lot faster?
|
||||
|
||||
Patch to add window and tab arguments to getcwd(). (Thinca, 2015 Nov 15)
|
||||
|
||||
Build with Python on Mac does not always use the right library.
|
||||
(Kazunobu Kuriyama, 2015 Mar 28)
|
||||
|
||||
@@ -199,6 +161,10 @@ library: http://userguide.icu-project.org/boundaryanalysis
|
||||
When complete() first argument is before where insert started and 'backspace'
|
||||
is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
|
||||
|
||||
Patch to fix bug in searchpair(). (Christian Brabandt, 2016 Jan 11)
|
||||
Problem reported by David Fishburn, using searchpair() with synID() used in
|
||||
the skip expression.
|
||||
|
||||
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
|
||||
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
|
||||
|
||||
@@ -285,7 +251,7 @@ Is this the right solution? Need to cleanup langmap behavior:
|
||||
- Remove LANGMAP_ADJUST() in other parts of the code. Make sure the mode is
|
||||
covered by the above change.
|
||||
So that replaying the register doesn't use keymap/langmap and still does the
|
||||
same thing. Remarks on issue 543.
|
||||
same thing. Remarks on issue 543 (Roland Puntaier).
|
||||
|
||||
Patch to add grepfile(). (Scott Prager, 2015 May 26)
|
||||
Work in progress.
|
||||
@@ -339,9 +305,6 @@ When two SIGWINCH arrive very quickly, the second one may be lost.
|
||||
|
||||
Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)
|
||||
|
||||
Patch to improve behavior of dead keys on MS-Windows. (John Wellesz, 2015 Aug
|
||||
25) https://github.com/vim/vim/pull/399.diff
|
||||
|
||||
Result of systemlist() does not show whether text ended in line break.
|
||||
(Bjorn Linse, 2014 Nov 27)
|
||||
|
||||
|
||||
+196
-61
@@ -1,4 +1,4 @@
|
||||
*usr_02.txt* For Vim version 7.4. Last change: 2015 Apr 12
|
||||
*usr_02.txt* For Vim version 7.4. Last change: 2016 Jan 16
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -408,7 +408,15 @@ original version of the file.
|
||||
|
||||
Everything you always wanted to know can be found in the Vim help files.
|
||||
Don't be afraid to ask!
|
||||
To get generic help use this command: >
|
||||
|
||||
If you know what you are looking for, it is usually easier to search for it
|
||||
using the help system, instead of using Google. Because the subjects follow
|
||||
a certain style guide.
|
||||
|
||||
Also the help has the advantage of belonging to your particular Vim version.
|
||||
You won't see help for commands added later. These would not work for you.
|
||||
|
||||
To get generic help use this command: >
|
||||
|
||||
:help
|
||||
|
||||
@@ -482,7 +490,7 @@ example, use the following command: >
|
||||
|
||||
:help 'number'
|
||||
|
||||
The table with all mode prefixes can be found here: |help-context|.
|
||||
The table with all mode prefixes can be found below: |help-summary|.
|
||||
|
||||
Special keys are enclosed in angle brackets. To find help on the up-arrow key
|
||||
in Insert mode, for instance, use this command: >
|
||||
@@ -499,64 +507,191 @@ You can use the error ID at the start to find help about it: >
|
||||
|
||||
|
||||
Summary: *help-summary* >
|
||||
:help
|
||||
< Gives you very general help. Scroll down to see a list of all
|
||||
helpfiles, including those added locally (i.e. not distributed
|
||||
with Vim). >
|
||||
:help user-toc.txt
|
||||
< Table of contents of the User Manual. >
|
||||
:help :subject
|
||||
< Ex-command "subject", for instance the following: >
|
||||
:help :help
|
||||
< Help on getting help. >
|
||||
:help abc
|
||||
< normal-mode command "abc". >
|
||||
:help CTRL-B
|
||||
< Control key <C-B> in Normal mode. >
|
||||
:help i_abc
|
||||
:help i_CTRL-B
|
||||
< The same in Insert mode. >
|
||||
:help v_abc
|
||||
:help v_CTRL-B
|
||||
< The same in Visual mode. >
|
||||
:help c_abc
|
||||
:help c_CTRL-B
|
||||
< The same in Command-line mode. >
|
||||
:help 'subject'
|
||||
< Option 'subject'. >
|
||||
:help subject()
|
||||
< Function "subject". >
|
||||
:help -subject
|
||||
< Command-line argument "-subject". >
|
||||
:help +subject
|
||||
< Compile-time feature "+subject". >
|
||||
:help /*
|
||||
< Regular expression item "*" >
|
||||
:help EventName
|
||||
< Autocommand event "EventName". >
|
||||
:help digraphs.txt
|
||||
< The top of the helpfile "digraph.txt".
|
||||
Similarly for any other helpfile. >
|
||||
:help pattern<Tab>
|
||||
< Find a help tag starting with "pattern". Repeat <Tab> for
|
||||
others. >
|
||||
:help pattern<Ctrl-D>
|
||||
< See all possible help tag matches "pattern" at once. >
|
||||
:helpgrep pattern
|
||||
< Search the whole text of all help files for pattern "pattern".
|
||||
Jumps to the first match. Jump to other matches with: >
|
||||
:cn
|
||||
< next match >
|
||||
:cprev
|
||||
:cN
|
||||
< previous match >
|
||||
:cfirst
|
||||
:clast
|
||||
< first or last match >
|
||||
:copen
|
||||
:cclose
|
||||
< open/close the quickfix window; press <Enter> to jump
|
||||
to the item under the cursor
|
||||
|
||||
1) Use Ctrl-D after typing a topic and let Vim show all available topics.
|
||||
Or press Tab to complete: >
|
||||
:help some<Tab>
|
||||
< More information on how to use the help: >
|
||||
:help helphelp
|
||||
|
||||
2) Follow the links in bars to related help. You can go from the detailed
|
||||
help to the user documentation, which describes certain commands more from
|
||||
a user perspective and less detailed. E.g. after: >
|
||||
:help pattern.txt
|
||||
< You can see the user guide topics |03.9| and |usr_27.txt| in the
|
||||
introduction.
|
||||
|
||||
3) Options are enclosed in single apostrophes. To go to the help topic for the
|
||||
list option: >
|
||||
:help 'list'
|
||||
< If you only know you are looking for a certain option, you can also do: >
|
||||
:help options.txt
|
||||
< to open the help page which describes all option handling and then search
|
||||
using regular expressions, e.g. textwidth.
|
||||
Certain options have their own namespace, e.g.: >
|
||||
:help cpo-<letter>
|
||||
< for the corresponding flag of the 'cpoptions' settings, substitute <letter>
|
||||
by a specific flag, e.g.: >
|
||||
:help cpo-;
|
||||
< And for the guioption flags: >
|
||||
:help go-<letter>
|
||||
|
||||
4) Normal mode commands do not have a prefix. To go to the help page for the
|
||||
"gt" command: >
|
||||
:help gt
|
||||
|
||||
5) Insert mode commands start with i_. Help for deleting a word: >
|
||||
:help i_CTRL-W
|
||||
|
||||
6) Visual mode commands start with v_. Help for jumping to the other side of
|
||||
the Visual area: >
|
||||
:help v_o
|
||||
|
||||
7) Command line editing and arguments start with c_. Help for using the
|
||||
command argument %: >
|
||||
:help c_%
|
||||
|
||||
8) Ex-commands always start with ":", so to go to the :s command help: >
|
||||
:help :s
|
||||
|
||||
9) Commands specifically for debugging start with ">". To go to to the help
|
||||
for the "cont" debug command: >
|
||||
:help >cont
|
||||
|
||||
10) Key combinations. They usually start with a single letter indicating
|
||||
the mode for which they can be used. E.g.: >
|
||||
:help i_CTRL-X
|
||||
< takes you to the family of Ctrl-X commands for insert mode which can be
|
||||
used to auto complete different things. Note, that certain keys will
|
||||
always be written the same, e.g. Control will always be CTRL.
|
||||
For normal mode commands there is no prefix and the topic is available at
|
||||
:h CTRL-<Letter>. E.g. >
|
||||
:help CTRL-W
|
||||
< In contrast >
|
||||
:help c_CTRL-R
|
||||
< will describe what the Ctrl-R does when entering commands in the Command
|
||||
line and >
|
||||
:help v_Ctrl-A
|
||||
< talks about incrementing numbers in visual mode and >
|
||||
:help g_CTRL-A
|
||||
< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>).
|
||||
Here the "g" stand for the normal command "g" which always expects a second
|
||||
key before doing something similar to the commands starting with "z"
|
||||
|
||||
11) Regexp items always start with /. So to get help for the "\+" quantifier
|
||||
in Vim regexes: >
|
||||
:help /\+
|
||||
< If you need to know everything about regular expressions, start reading
|
||||
at: >
|
||||
:help pattern.txt
|
||||
|
||||
12) Registers always start with "quote". To find out about the special ":"
|
||||
register: >
|
||||
:help quote:
|
||||
|
||||
13) Vim Script (VimL) is available at >
|
||||
:help eval.txt
|
||||
< Certain aspects of the language are available at :h expr-X where "X" is a
|
||||
single letter. E.g. >
|
||||
:help expr-!
|
||||
< will take you to the topic describing the "!" (Not) operator for
|
||||
VimScript.
|
||||
Also important is >
|
||||
:help function-list
|
||||
< to find a short description of all functions available. Help topics for
|
||||
VimL functions always include the "()", so: >
|
||||
:help append()
|
||||
< talks about the append VimL function rather than how to append text in the
|
||||
current buffer.
|
||||
|
||||
14) Mappings are talked about in the help page :h |map.txt|. Use >
|
||||
:help mapmode-i
|
||||
< to find out about the |:imap| command. Also use :map-topic
|
||||
to find out about certain subtopics particular for mappings. e.g: >
|
||||
:help :map-local
|
||||
< for buffer-local mappings or >
|
||||
:help map-bar
|
||||
< for how the '|' is handled in mappings.
|
||||
|
||||
15) Command definitions are talked about :h command-topic, so use >
|
||||
:help command-bar
|
||||
< to find out about the '!' argument for custom commands.
|
||||
|
||||
16) Window management commands always start with CTRL-W, so you find the
|
||||
corresponding help at :h CTRL-W_letter. E.g. >
|
||||
:help CTRL-W_p
|
||||
< for moving the previous accessed window. You can also access >
|
||||
:help windows.txt
|
||||
< and read your way through if you are looking for window handling
|
||||
commands.
|
||||
|
||||
17) Use |:helpgrep| to search in all help pages (and also of any installed
|
||||
plugins). See |:helpgrep| for how to use it.
|
||||
To search for a topic: >
|
||||
:helpgrep topic
|
||||
< This takes you to the first match. To go to the next one: >
|
||||
:cnext
|
||||
< All matches are available in the quickfix window which can be opened
|
||||
with: >
|
||||
:copen
|
||||
< Move around to the match you like and press Enter to jump to that help.
|
||||
|
||||
18) The user manual. This describes help topics for beginners in a rather
|
||||
friendly way. Start at |usr_toc.txt| to find the table of content (as you
|
||||
might have guessed): >
|
||||
:help usr_toc.txt
|
||||
< Skim over the contents to find interesting topics. The "Digraphs" and
|
||||
"Entering special characters" items are in chapter 24, so to go to that
|
||||
particular help page: >
|
||||
:help usr_24.txt
|
||||
< Also if you want to access a certain chapter in the help, the chapter
|
||||
number can be accessed directly like this: >
|
||||
:help 10.1
|
||||
< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros.
|
||||
|
||||
19) Highlighting groups. Always start with hl-groupname. E.g. >
|
||||
:help hl-WarningMsg
|
||||
< talks about the WarningMsg highlighting group.
|
||||
|
||||
20) Syntax highlighting is namespaced to :syn-topic e.g. >
|
||||
:help :syn-conceal
|
||||
< talks about the conceal argument for the :syn command.
|
||||
|
||||
21) Quickfix commands usually start with :c while location list commands
|
||||
usually start with :l
|
||||
|
||||
22) Autocommand events can be found by their name: >
|
||||
:help BufWinLeave
|
||||
< To see all possible events: >
|
||||
:help autocommands-events
|
||||
|
||||
23) Command-line switches always start with "-". So for the help of the -f
|
||||
command switch of Vim use: >
|
||||
:help -f
|
||||
|
||||
24) Optional features always start with "+". To find out about the
|
||||
conceal feature use: >
|
||||
:help +conceal
|
||||
|
||||
25) Documentation for included filetype specific functionality is usually
|
||||
available in the form ft-<filetype>-<functionality>. So >
|
||||
:help ft-c-syntax
|
||||
< talks about the C syntax file and the option it provides. Sometimes,
|
||||
additional sections for omni completion >
|
||||
:help ft-php-omni
|
||||
< or filetype plugins >
|
||||
:help ft-tex-plugin
|
||||
< are available.
|
||||
|
||||
26) Error and Warning codes can be looked up directly in the help. So >
|
||||
:help E297
|
||||
< takes you exactly to the description of the swap error message and >
|
||||
:help W10
|
||||
< talks about the warning "Changing a readonly file".
|
||||
Sometimes however, those error codes are not described, but rather are
|
||||
listed at the Vim command that usually causes this. So: >
|
||||
:help E128
|
||||
< takes you to the |:function| command
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -921,6 +921,7 @@ Various: *various-functions*
|
||||
|
||||
luaeval() evaluate Lua expression
|
||||
mzeval() evaluate |MzScheme| expression
|
||||
perleval() evaluate Perl expression (|+perl|)
|
||||
py3eval() evaluate Python expression (|+python3|)
|
||||
pyeval() evaluate Python expression (|+python|)
|
||||
wordcount() get byte/word/char count of buffer
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.4. Last change: 2015 Nov 15
|
||||
*various.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -650,6 +650,7 @@ K Run a program to lookup the keyword under the
|
||||
g CTRL-A Only when Vim was compiled with MEM_PROFILING defined
|
||||
(which is very rare): print memory usage statistics.
|
||||
Only useful for debugging Vim.
|
||||
For incrementing in Visual mode see |v_g_CTRL-A|.
|
||||
|
||||
==============================================================================
|
||||
2. Using Vim like less or more *less*
|
||||
|
||||
+100
-35
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: APT config file
|
||||
" Maintainer: Yann Amar <quidame@poivron.org>
|
||||
" Last Change: 2013 Apr 12
|
||||
" Last Change: 2015 Dec 22
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x and 7.x: Quit when a syntax file was already loaded
|
||||
@@ -38,22 +38,22 @@ setlocal iskeyword+=/,-,.,_,+
|
||||
|
||||
" Incomplete keywords will be treated differently than completely bad strings:
|
||||
syn keyword aptconfGroupIncomplete
|
||||
\ a[cquire] a[ptitude] d[ebtags] d[ebug] d[ir] d[pkg] d[select]
|
||||
\ o[rderlist] p[ackagemanager] p[kgcachegen] q[uiet] r[pm]
|
||||
\ u[nattended-upgrade]
|
||||
\ a[cquire] a[dequate] a[ptitude] a[ptlistbugs] d[ebtags] d[ebug]
|
||||
\ d[ir] d[pkg] d[select] o[rderlist] p[ackagemanager] p[kgcachegen]
|
||||
\ q[uiet] r[pm] s[ynaptic] u[nattended-upgrade] w[hatmaps]
|
||||
|
||||
" Only the following keywords can be used at toplevel (to begin an option):
|
||||
syn keyword aptconfGroup
|
||||
\ acquire apt aptitude debtags debug dir dpkg dselect
|
||||
\ orderlist packagemanager pkgcachegen quiet rpm
|
||||
\ unattended-upgrade
|
||||
\ acquire adequate apt aptitude aptlistbugs debtags debug
|
||||
\ dir dpkg dselect orderlist packagemanager pkgcachegen
|
||||
\ quiet rpm synaptic unattended-upgrade whatmaps
|
||||
|
||||
" Possible options for each group:
|
||||
" Acquire: {{{
|
||||
syn keyword aptconfAcquire contained
|
||||
\ cdrom Check-Valid-Until CompressionTypes ForceHash ftp gpgv
|
||||
\ GzipIndexes http https Languages Max-ValidTime Min-ValidTime PDiffs
|
||||
\ Queue-Mode Retries Source-Symlinks
|
||||
\ cdrom Check-Valid-Until CompressionTypes ForceHash ForceIPv4
|
||||
\ ForceIPv6 ftp gpgv GzipIndexes http https Languages Max-ValidTime
|
||||
\ Min-ValidTime PDiffs Queue-Mode Retries Source-Symlinks
|
||||
|
||||
syn keyword aptconfAcquireCDROM contained
|
||||
\ AutoDetect CdromOnly Mount UMount
|
||||
@@ -62,14 +62,15 @@ syn keyword aptconfAcquireCompressionTypes contained
|
||||
\ bz2 lzma gz Order
|
||||
|
||||
syn keyword aptconfAcquireFTP contained
|
||||
\ Passive Proxy ProxyLogin Timeout
|
||||
\ ForceExtended Passive Proxy ProxyLogin Timeout
|
||||
|
||||
syn keyword aptconfAcquireHTTP contained
|
||||
\ AllowRedirect Dl-Limit Max-Age No-Cache No-Store Pipeline-Depth
|
||||
\ Proxy Timeout User-Agent
|
||||
\ Proxy ProxyAutoDetect Proxy-Auto-Detect Timeout User-Agent
|
||||
|
||||
syn keyword aptconfAcquireHTTPS contained
|
||||
\ CaInfo CaPath CrlFile IssuerCert SslCert SslForceVersion SslKey
|
||||
\ AllowRedirect CaInfo CaPath CrlFile Dl-Limit IssuerCert Max-Age
|
||||
\ No-Cache No-Store Proxy SslCert SslForceVersion SslKey Timeout
|
||||
\ Verify-Host Verify-Peer
|
||||
|
||||
syn keyword aptconfAcquireMaxValidTime contained
|
||||
@@ -83,14 +84,21 @@ syn cluster aptconfAcquire_ contains=aptconfAcquire,
|
||||
\ aptconfAcquireHTTP,aptconfAcquireHTTPS,aptconfAcquireMaxValidTime,
|
||||
\ aptconfAcquirePDiffs
|
||||
" }}}
|
||||
" Adequate: {{{
|
||||
syn keyword aptconfAdequate contained
|
||||
\ Enabled
|
||||
|
||||
syn cluster aptconfAdequate_ contains=aptconfAdequate
|
||||
" }}}
|
||||
" Apt: {{{
|
||||
syn keyword aptconfApt contained
|
||||
\ Architecture Architectures Archive Authentication AutoRemove
|
||||
\ Build-Essential Cache Cache-Grow Cache-Limit Cache-Start CDROM
|
||||
\ Changelogs Clean-Installed Compressor Default-Release
|
||||
\ Force-LoopBreak Get Ignore-Hold Immediate-Configure
|
||||
\ Build-Essential Build-Profiles Cache Cache-Grow Cache-Limit
|
||||
\ Cache-Start CDROM Changelogs Clean-Installed Compressor
|
||||
\ Default-Release Force-LoopBreak Get Ignore-Hold Immediate-Configure
|
||||
\ Install-Recommends Install-Suggests Keep-Fds List-Cleanup
|
||||
\ NeverAutoRemove Never-MarkAuto-Sections Periodic Status-Fd Update
|
||||
\ Move-Autobit-Sections NeverAutoRemove Never-MarkAuto-Sections
|
||||
\ Periodic Status-Fd Update VersionedKernelPackages
|
||||
|
||||
syn keyword aptconfAptAuthentication contained
|
||||
\ TrustCDROM
|
||||
@@ -124,11 +132,12 @@ syn keyword aptconfAptGet contained
|
||||
|
||||
syn keyword aptconfAptPeriodic contained
|
||||
\ AutocleanInterval BackupArchiveInterval BackupLevel
|
||||
\ Download-Upgradeable-Packages MaxAge MaxSize MinAge
|
||||
\ Unattended-Upgrade Update-Package-Lists Verbose
|
||||
\ Download-Upgradeable-Packages Download-Upgradeable-Packages-Debdelta
|
||||
\ Enable MaxAge MaxSize MinAge Unattended-Upgrade Update-Package-Lists
|
||||
\ Verbose
|
||||
|
||||
syn keyword aptconfAptUpdate contained
|
||||
\ Pre-Invoke Post-Invoke Post-Invoke-Success
|
||||
\ List-Refresh Pre-Invoke Post-Invoke Post-Invoke-Success
|
||||
|
||||
syn cluster aptconfApt_ contains=aptconfApt,
|
||||
\ aptconfAptAuthentication,aptconfAptAutoRemove,aptconfAptCache,
|
||||
@@ -240,6 +249,12 @@ syn cluster aptconfAptitude_ contains=aptconfAptitude,
|
||||
\ aptconfAptitudeUIKeyBindings,aptconfAptitudeUIStyles,
|
||||
\ aptconfAptitudeUIStylesElements
|
||||
" }}}
|
||||
" AptListbugs: {{{
|
||||
syn keyword aptconfAptListbugs contained
|
||||
\ IgnoreRegexp Severities
|
||||
|
||||
syn cluster aptconfAptListbugs_ contains=aptconfAptListbugs
|
||||
" }}}
|
||||
" DebTags: {{{
|
||||
syn keyword aptconfDebTags contained
|
||||
\ Vocabulary
|
||||
@@ -251,7 +266,8 @@ syn keyword aptconfDebug contained
|
||||
\ Acquire aptcdrom BuildDeps Hashes IdentCdrom Nolocking
|
||||
\ pkgAcquire pkgAutoRemove pkgCacheGen pkgDepCache pkgDPkgPM
|
||||
\ pkgDPkgProgressReporting pkgInitialize pkgOrderList
|
||||
\ pkgPackageManager pkgPolicy pkgProblemResolver sourceList
|
||||
\ pkgPackageManager pkgPolicy pkgProblemResolver RunScripts
|
||||
\ sourceList
|
||||
|
||||
syn keyword aptconfDebugAcquire contained
|
||||
\ cdrom Ftp gpgv Http Https netrc
|
||||
@@ -295,7 +311,7 @@ syn keyword aptconfDirMedia contained
|
||||
\ MountPath
|
||||
|
||||
syn keyword aptconfDirState contained
|
||||
\ cdroms extended_states Lists mirrors status
|
||||
\ cdroms extended_states Lists mirrors preferences status
|
||||
|
||||
syn cluster aptconfDir_ contains=aptconfDir,
|
||||
\ aptconfDirAptitude,aptconfDirBin,aptconfDirCache,aptconfDirEtc,
|
||||
@@ -303,15 +319,16 @@ syn cluster aptconfDir_ contains=aptconfDir,
|
||||
" }}}
|
||||
" DPkg: {{{
|
||||
syn keyword aptconfDPkg contained
|
||||
\ Build-Options Chroot-Directory ConfigurePending FlushSTDIN MaxArgs
|
||||
\ MaxBytes NoTriggers options Pre-Install-Pkgs Pre-Invoke Post-Invoke
|
||||
\ Build-Options Chroot-Directory ConfigurePending FlushSTDIN
|
||||
\ MaxArgBytes MaxArgs MaxBytes NoTriggers options
|
||||
\ Pre-Install-Pkgs Pre-Invoke Post-Invoke
|
||||
\ Run-Directory StopOnError Tools TriggersPending
|
||||
|
||||
syn keyword aptconfDPkgTools contained
|
||||
\ Options Version
|
||||
\ adequate InfoFD Options Version
|
||||
|
||||
syn cluster aptconfDPkg_ contains=aptconfDPkg,
|
||||
\ aptconfDPkgOrderList,aptconfDPkgOrderListScore,aptconfDPkgTools
|
||||
\ aptconfDPkgTools
|
||||
" }}}
|
||||
" DSelect: {{{
|
||||
syn keyword aptconfDSelect contained
|
||||
@@ -353,23 +370,59 @@ syn keyword aptconfRpm contained
|
||||
|
||||
syn cluster aptconfRpm_ contains=aptconfRpm
|
||||
" }}}
|
||||
" Unattened Upgrade: {{{
|
||||
" Synaptic: {{{
|
||||
syn keyword aptconfSynaptic contained
|
||||
\ AskQuitOnProceed AskRelated AutoCleanCache CleanCache DefaultDistro
|
||||
\ delAction delHistory Download-Only ftpProxy ftpProxyPort httpProxy
|
||||
\ httpProxyPort Install-Recommends LastSearchType Maximized noProxy
|
||||
\ OneClickOnStatusActions ShowAllPkgInfoInMain showWelcomeDialog
|
||||
\ ToolbarState undoStackSize update upgradeType useProxy UseStatusColors
|
||||
\ UseTerminal useUserFont useUserTerminalFont ViewMode
|
||||
\ availVerColumnPos availVerColumnVisible componentColumnPos
|
||||
\ componentColumnVisible descrColumnPos descrColumnVisible
|
||||
\ downloadSizeColumnPos downloadSizeColumnVisible hpanedPos
|
||||
\ instVerColumnPos instVerColumnVisible instSizeColumnPos
|
||||
\ instSizeColumnVisible nameColumnPos nameColumnVisible
|
||||
\ sectionColumnPos sectionColumnVisible statusColumnPos
|
||||
\ statusColumnVisible supportedColumnPos supportedColumnVisible
|
||||
\ vpanedPos windowWidth windowHeight windowX windowY closeZvt
|
||||
\ color-available color-available-locked color-broken color-downgrade
|
||||
\ color-install color-installed-locked color-installed-outdated
|
||||
\ color-installed-updated color-new color-purge color-reinstall
|
||||
\ color-remove color-upgrade
|
||||
|
||||
syn keyword aptconfSynapticUpdate contained
|
||||
\ last type
|
||||
|
||||
syn cluster aptconfSynaptic_ contains=aptconfSynaptic,
|
||||
\ aptconfSynapticUpdate
|
||||
" }}}
|
||||
" Unattended Upgrade: {{{
|
||||
syn keyword aptconfUnattendedUpgrade contained
|
||||
\ AutoFixInterruptedDpkg Automatic-Reboot InstallOnShutdown Mail
|
||||
\ MailOnlyOnError MinimalSteps Origins-Pattern Package-Blacklist
|
||||
\ AutoFixInterruptedDpkg Automatic-Reboot Automatic-Reboot-Time
|
||||
\ Automatic-Reboot-WithUsers InstallOnShutdown Mail MailOnlyOnError
|
||||
\ MinimalSteps Origins-Pattern Package-Blacklist
|
||||
\ Remove-Unused-Dependencies
|
||||
|
||||
syn cluster aptconfUnattendedUpgrade_ contains=aptconfUnattendedUpgrade
|
||||
" }}}
|
||||
" Whatmaps: {{{
|
||||
syn keyword aptconfWhatmaps contained
|
||||
\ Enable-Restart Security-Update-Origins
|
||||
|
||||
syn cluster aptconfWhatmaps_ contains=aptconfWhatmaps
|
||||
" }}}
|
||||
|
||||
syn case match
|
||||
|
||||
" Now put all the keywords (and 'valid' options) in a single cluster:
|
||||
syn cluster aptconfOptions contains=aptconfRegexpOpt,
|
||||
\ @aptconfAcquire_,@aptconfApt_,@aptconfAptitude_,@aptconfDebTags_,
|
||||
\ @aptconfDebug_,@aptconfDir_,@aptconfDPkg_,@aptconfDSelect_,
|
||||
\ @aptconfOrderList_,@aptconfPackageManager_,@aptconfPkgCacheGen_,
|
||||
\ @aptconfQuiet_,@aptconfRpm_,@aptconfUnattendedUpgrade_
|
||||
\ @aptconfAcquire_,@aptconfAdequate_,@aptconfApt_,@aptconfAptitude_,
|
||||
\ @aptconfAptListbugs_,@aptconfDebTags_,@aptconfDebug_,@aptconfDir_,
|
||||
\ @aptconfDPkg_,@aptconfDSelect_,@aptconfOrderList_,
|
||||
\ @aptconfPackageManager_,@aptconfPkgCacheGen_,@aptconfQuiet_,
|
||||
\ @aptconfRpm_,@aptconfSynaptic_,@aptconfUnattendedUpgrade_,
|
||||
\ @aptconfWhatmaps_
|
||||
|
||||
" Syntax:
|
||||
syn match aptconfSemiColon ';'
|
||||
@@ -382,8 +435,11 @@ syn region aptconfInclude matchgroup=aptconfOperator start='::' end='::\|\s'me=
|
||||
|
||||
" Basic Syntax Errors: XXX avoid to generate false positives !!!
|
||||
"
|
||||
" * Invalid comment format (seems to not cause errors, but...):
|
||||
syn match aptconfAsError display '^#.*'
|
||||
" * Undocumented inline comment. Since it is currently largely used, and does
|
||||
" not seem to cause trouble ('apt-config dump' never complains when # is used
|
||||
" the same way than //) it has been moved to aptconfComment group. But it
|
||||
" still needs to be defined here (i.e. before #clear and #include directives)
|
||||
syn match aptconfComment '#.*' contains=@aptconfCommentSpecial
|
||||
"
|
||||
" * When a semicolon is missing after a double-quoted string:
|
||||
" There are some cases (for example in the Dir group of options, but not only)
|
||||
@@ -445,6 +501,8 @@ hi def link aptconfAcquireHTTPS aptconfOption
|
||||
hi def link aptconfAcquireMaxValidTime aptconfOption
|
||||
hi def link aptconfAcquirePDiffs aptconfOption
|
||||
|
||||
hi def link aptconfAdequate aptconfOption
|
||||
|
||||
hi def link aptconfApt aptconfOption
|
||||
hi def link aptconfAptAuthentication aptconfOption
|
||||
hi def link aptconfAptAutoRemove aptconfOption
|
||||
@@ -471,6 +529,8 @@ hi def link aptconfAptitudeUIKeyBindings aptconfOption
|
||||
hi def link aptconfAptitudeUIStyles aptconfOption
|
||||
hi def link aptconfAptitudeUIStylesElements aptconfOption
|
||||
|
||||
hi def link aptconfAptListbugs aptconfOption
|
||||
|
||||
hi def link aptconfDebTags aptconfOption
|
||||
|
||||
hi def link aptconfDebug aptconfOption
|
||||
@@ -504,8 +564,13 @@ hi def link aptconfQuiet aptconfOption
|
||||
|
||||
hi def link aptconfRpm aptconfOption
|
||||
|
||||
hi def link aptconfSynaptic aptconfOption
|
||||
hi def link aptconfSynapticUpdate aptconfOption
|
||||
|
||||
hi def link aptconfUnattendedUpgrade aptconfOption
|
||||
|
||||
hi def link aptconfWhatmaps aptconfOption
|
||||
|
||||
let b:current_syntax = "aptconf"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: reStructuredText documentation format
|
||||
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2015-09-07
|
||||
" Latest Revision: 2016-01-05
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -13,8 +13,6 @@ set cpo&vim
|
||||
|
||||
syn case ignore
|
||||
|
||||
syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$"
|
||||
|
||||
syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/
|
||||
|
||||
syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
|
||||
@@ -123,6 +121,8 @@ call s:DefineInlineMarkup('InlineLiteral', '``', "", '``')
|
||||
call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}')
|
||||
call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`')
|
||||
|
||||
syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$"
|
||||
|
||||
" TODO: Can’t remember why these two can’t be defined like the ones above.
|
||||
execute 'syn match rstFootnoteReference contains=@NoSpell' .
|
||||
\ ' +\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+'
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
" Language: OpenSSH client configuration file (ssh_config)
|
||||
" Author: David Necas (Yeti)
|
||||
" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Last Change: 2015 Dec 3
|
||||
" SSH Version: 7.0
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Last Change: 2016 Jan 15
|
||||
" SSH Version: 7.1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -69,8 +70,8 @@ syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
|
||||
syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
|
||||
syn keyword sshconfigAddressFamily inet inet6
|
||||
|
||||
syn match sshconfigIPQoS "af1[1234]"
|
||||
syn match sshconfigIPQoS "af2[23]"
|
||||
syn match sshconfigIPQoS "af1[123]"
|
||||
syn match sshconfigIPQoS "af2[123]"
|
||||
syn match sshconfigIPQoS "af3[123]"
|
||||
syn match sshconfigIPQoS "af4[123]"
|
||||
syn match sshconfigIPQoS "cs[0-7]"
|
||||
@@ -106,6 +107,10 @@ syn keyword sshconfigMatch canonical exec host originalhost user localuser all
|
||||
syn keyword sshconfigKeyword AddressFamily
|
||||
syn keyword sshconfigKeyword BatchMode
|
||||
syn keyword sshconfigKeyword BindAddress
|
||||
syn keyword sshconfigKeyword CanonicalDomains
|
||||
syn keyword sshconfigKeyword CanonicalizeFallbackLocal
|
||||
syn keyword sshconfigKeyword CanonicalizeHostname
|
||||
syn keyword sshconfigKeyword CanonicalizeMaxDots
|
||||
syn keyword sshconfigKeyword ChallengeResponseAuthentication
|
||||
syn keyword sshconfigKeyword CheckHostIP
|
||||
syn keyword sshconfigKeyword Cipher
|
||||
@@ -145,6 +150,8 @@ syn keyword sshconfigKeyword HostbasedKeyTypes
|
||||
syn keyword sshconfigKeyword IPQoS
|
||||
syn keyword sshconfigKeyword IdentitiesOnly
|
||||
syn keyword sshconfigKeyword IdentityFile
|
||||
syn keyword sshconfigKeyword IgnoreUnknown
|
||||
syn keyword sshconfigKeyword IPQoS
|
||||
syn keyword sshconfigKeyword KbdInteractiveAuthentication
|
||||
syn keyword sshconfigKeyword KbdInteractiveDevices
|
||||
syn keyword sshconfigKeyword KexAlgorithms
|
||||
@@ -182,6 +189,7 @@ syn keyword sshconfigKeyword UseBlacklistedKeys
|
||||
syn keyword sshconfigKeyword UsePrivilegedPort
|
||||
syn keyword sshconfigKeyword User
|
||||
syn keyword sshconfigKeyword UserKnownHostsFile
|
||||
syn keyword sshconfigKeyword UseRoaming
|
||||
syn keyword sshconfigKeyword VerifyHostKeyDNS
|
||||
syn keyword sshconfigKeyword VisualHostKey
|
||||
syn keyword sshconfigKeyword XAuthLocation
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
|
||||
" Contributor: Thilo Six
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Originally: 2009-07-09
|
||||
" Last Change: 2015 Dec 3
|
||||
" SSH Version: 7.0
|
||||
" Last Change: 2016 Jan 12
|
||||
" SSH Version: 7.1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -65,8 +66,8 @@ syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
|
||||
|
||||
syn keyword sshdconfigCompression delayed
|
||||
|
||||
syn match sshdconfigIPQoS "af1[1234]"
|
||||
syn match sshdconfigIPQoS "af2[23]"
|
||||
syn match sshdconfigIPQoS "af1[123]"
|
||||
syn match sshdconfigIPQoS "af2[123]"
|
||||
syn match sshdconfigIPQoS "af3[123]"
|
||||
syn match sshdconfigIPQoS "af4[123]"
|
||||
syn match sshdconfigIPQoS "cs[0-7]"
|
||||
@@ -109,6 +110,7 @@ syn keyword sshdconfigKeyword AllowGroups
|
||||
syn keyword sshdconfigKeyword AllowStreamLocalForwarding
|
||||
syn keyword sshdconfigKeyword AllowTcpForwarding
|
||||
syn keyword sshdconfigKeyword AllowUsers
|
||||
syn keyword sshdconfigKeyword AuthenticationMethods
|
||||
syn keyword sshdconfigKeyword AuthorizedKeysFile
|
||||
syn keyword sshdconfigKeyword AuthorizedKeysCommand
|
||||
syn keyword sshdconfigKeyword AuthorizedKeysCommandUser
|
||||
@@ -132,6 +134,7 @@ syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck
|
||||
syn keyword sshdconfigKeyword GatewayPorts
|
||||
syn keyword sshdconfigKeyword HostCertificate
|
||||
syn keyword sshdconfigKeyword HostKey
|
||||
syn keyword sshdconfigKeyword HostKeyAgent
|
||||
syn keyword sshdconfigKeyword HostKeyAlgorithms
|
||||
syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes
|
||||
syn keyword sshdconfigKeyword HostbasedAuthentication
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
# Project: gvimext
|
||||
# Generates gvimext.dll with gcc.
|
||||
# To be used with Cygwin.
|
||||
#
|
||||
# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
|
||||
# Now it is allocated dymanically by the linker by evaluating all DLLs
|
||||
# already loaded in memory. The binary image contains as well information
|
||||
# for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
|
||||
|
||||
# If cross-compiling set this to yes, else set it to no
|
||||
CROSS = no
|
||||
#CROSS = yes
|
||||
# For the old MinGW 2.95 (the one you get e.g. with debian woody)
|
||||
# set the following variable to yes and check if the executables are
|
||||
# really named that way.
|
||||
# If you have a newer MinGW or you are using cygwin set it to no and
|
||||
# check also the executables
|
||||
MINGWOLD = no
|
||||
|
||||
# Link against the shared versions of libgcc/libstdc++ by default. Set
|
||||
# STATIC_STDCPLUS to "yes" to link against static versions instead.
|
||||
STATIC_STDCPLUS=no
|
||||
#STATIC_STDCPLUS=yes
|
||||
|
||||
# Note: -static-libstdc++ is not available until gcc 4.5.x.
|
||||
LDFLAGS += -shared
|
||||
ifeq (yes, $(STATIC_STDCPLUS))
|
||||
LDFLAGS += -static-libgcc -static-libstdc++
|
||||
endif
|
||||
|
||||
ifeq ($(CROSS),yes)
|
||||
DEL = rm
|
||||
ifeq ($(MINGWOLD),yes)
|
||||
CXXFLAGS := -O2 -fvtable-thunks
|
||||
else
|
||||
CXXFLAGS := -O2
|
||||
endif
|
||||
else
|
||||
CXXFLAGS := -O2
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
DEL = rm
|
||||
else
|
||||
DEL = del
|
||||
endif
|
||||
endif
|
||||
CXX := $(CROSS_COMPILE)g++
|
||||
WINDRES := $(CROSS_COMPILE)windres
|
||||
WINDRES_CXX = $(CXX)
|
||||
WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
|
||||
LIBS := -luuid
|
||||
RES := gvimext.res
|
||||
DEFFILE = gvimext_ming.def
|
||||
OBJ := gvimext.o
|
||||
|
||||
DLL := gvimext.dll
|
||||
|
||||
.PHONY: all all-before all-after clean clean-custom
|
||||
|
||||
all: all-before $(DLL) all-after
|
||||
|
||||
$(DLL): $(OBJ) $(RES) $(DEFFILE)
|
||||
$(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
|
||||
-Wl,--enable-auto-image-base \
|
||||
-Wl,--enable-auto-import \
|
||||
-Wl,--whole-archive \
|
||||
$^ \
|
||||
-Wl,--no-whole-archive \
|
||||
$(LIBS)
|
||||
|
||||
gvimext.o: gvimext.cpp
|
||||
$(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
|
||||
|
||||
$(RES): gvimext_ming.rc
|
||||
$(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
|
||||
|
||||
clean: clean-custom
|
||||
-$(DEL) $(OBJ) $(RES) $(DLL)
|
||||
@@ -1,6 +1,6 @@
|
||||
# Project: gvimext
|
||||
# Generates gvimext.dll with gcc.
|
||||
# To be used with MingW.
|
||||
# To be used with MingW and Cygwin.
|
||||
#
|
||||
# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
|
||||
# Now it is allocated dymanically by the linker by evaluating all DLLs
|
||||
|
||||
@@ -16,6 +16,9 @@ NODEBUG = 1
|
||||
# On Windows NT
|
||||
! ifndef CPU
|
||||
CPU = i386
|
||||
! if !defined(PLATFORM) && defined(TARGET_CPU)
|
||||
PLATFORM = $(TARGET_CPU)
|
||||
! endif
|
||||
! ifdef PLATFORM
|
||||
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
|
||||
CPU = AMD64
|
||||
|
||||
+60
-13
@@ -24,7 +24,7 @@ Contents:
|
||||
5. Cross compiling for Win32 from a Linux machine
|
||||
6. Building with Python support
|
||||
7. Building with Python3 support
|
||||
8. Building with MzScheme support
|
||||
8. Building with MzScheme/Racket support
|
||||
9. Building with Lua support
|
||||
10. Building with Perl support
|
||||
11. Building with Ruby support
|
||||
@@ -415,8 +415,10 @@ E.g. When using MSVC (as one line):
|
||||
PYTHON3=C:\Python34 DYNAMIC_PYTHON3=yes PYTHON3_VER=34
|
||||
|
||||
|
||||
8. Building with MzScheme support
|
||||
=================================
|
||||
8. Building with MzScheme/Racket support
|
||||
========================================
|
||||
|
||||
1) Building with MzScheme support
|
||||
|
||||
(written by Sergey Khorev <sergey.khorev@gmail.com>)
|
||||
|
||||
@@ -451,31 +453,75 @@ After a successful build, these dlls can be freely removed, leaving them in
|
||||
%WINDOWS%\System32 only.
|
||||
|
||||
|
||||
2) Building with Racket support
|
||||
|
||||
MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
|
||||
(https://racket-lang.org/) support can be built with either MSVC or MinGW (or
|
||||
Cygwin).
|
||||
|
||||
You need to set the following variables:
|
||||
|
||||
MZSCHEME: Where Racket is installed.
|
||||
E.g. C:\Program Files (x86)\Racket
|
||||
DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
|
||||
MZSCHEME_VER: Racket DLL version. E.g. 3m_9z0ds0 for Racket 6.3.
|
||||
MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
|
||||
runtime. Default: $(MZSCHEME)\collects
|
||||
User can override this with the PLTCOLLECTS environment
|
||||
variable.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_ming.mak
|
||||
MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Spaces should be escaped with '\'.
|
||||
|
||||
|
||||
9. Building with Lua support
|
||||
============================
|
||||
|
||||
Vim with Lua support can be built with either MSVC or MinGW (or Cygwin).
|
||||
You can use binaries from LuaBinaries.
|
||||
http://luabinaries.sourceforge.net/
|
||||
Vim with Lua support can be built with either MSVC or MinGW (or maybe Cygwin).
|
||||
You can use binaries from LuaBinaries: http://luabinaries.sourceforge.net/
|
||||
This also applies to when you get a Vim executable and don't build yourself,
|
||||
do the part up to "Build".
|
||||
|
||||
1) Download and install LuaBinaries
|
||||
|
||||
Go to the Download page of LuaBinaries:
|
||||
http://luabinaries.sourceforge.net/download.html
|
||||
http://luabinaries.sourceforge.net/download.html
|
||||
|
||||
Download lua-X.Y.Z_Win32_dllw4_lib.zip for x86 or
|
||||
lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them for both MSVC and
|
||||
lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them both for MSVC and
|
||||
MinGW.
|
||||
|
||||
Unpack it to a working directory. E.g. C:\projects\lua53.
|
||||
Lua's header files will be installed under the include directory.
|
||||
|
||||
Copy luaXY.dll to your Windows system directory. The system directory depends
|
||||
on your Windows bitness and Vim bitness:
|
||||
32-bit Vim on 32-bit Windows: C:\Windows\System32
|
||||
32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
|
||||
64-bit Vim on 64-bit Windows: C:\Windows\System32
|
||||
|
||||
Or another option is copying luaXY.dll to the directory where gvim.exe
|
||||
(or vim.exe) is.
|
||||
|
||||
|
||||
2) Build
|
||||
You need to set the following variables:
|
||||
|
||||
LUA: Where Lua is installed. E.g. C:\projects\lua53.
|
||||
DYNAMIC_LUA: Whether dynamic linking is used. Usually, set to yes.
|
||||
LUA_VER: Lua version. E.g. 53 for Lua 5.3.X.
|
||||
You need to set LUA, DYNAMIC_LUA and LUA_VER.
|
||||
|
||||
LUA: Where Lua's header files are installed. E.g. C:\projects\lua53.
|
||||
DYNAMIC_LUA: Whether dynamic linking is used. Set to yes.
|
||||
LUA_VER: Lua version. E.g. 53 for Lua 5.3.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
@@ -487,7 +533,8 @@ Or when using MinGW (as one line):
|
||||
mingw32-make -f Make_mingw.mak
|
||||
LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
Or when using Cygwin (as one line):
|
||||
|
||||
Or when using Cygwin (as one line) (untested):
|
||||
|
||||
make -f Make_cyg.mak
|
||||
LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
{
|
||||
IBClasses = (
|
||||
{
|
||||
ACTIONS = {"_cycleWindows" = id; "_cycleWindowsBackwards" = id; addNewTab = id; };
|
||||
CLASS = FirstResponder;
|
||||
LANGUAGE = ObjC;
|
||||
SUPERCLASS = NSObject;
|
||||
},
|
||||
{
|
||||
ACTIONS = {
|
||||
fileOpen = id;
|
||||
fontSizeDown = id;
|
||||
fontSizeUp = id;
|
||||
forceNewWindow = id;
|
||||
newWindow = id;
|
||||
newWindowAndActivate = id;
|
||||
openWebsite = id;
|
||||
orderFrontPreferencePanel = id;
|
||||
selectNextWindow = id;
|
||||
selectPreviousWindow = id;
|
||||
showHelp = id;
|
||||
showVimHelp = id;
|
||||
zoomAll = id;
|
||||
};
|
||||
CLASS = MMAppController;
|
||||
LANGUAGE = ObjC;
|
||||
SUPERCLASS = NSObject;
|
||||
},
|
||||
{CLASS = NSMenu; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
|
||||
{
|
||||
ACTIONS = {didAdjustSubviews = RBSplitView; willAdjustSubviews = RBSplitView; };
|
||||
CLASS = NSObject;
|
||||
LANGUAGE = ObjC;
|
||||
},
|
||||
{CLASS = RBSplitSubview; LANGUAGE = ObjC; SUPERCLASS = NSView; },
|
||||
{
|
||||
CLASS = RBSplitView;
|
||||
LANGUAGE = ObjC;
|
||||
OUTLETS = {delegate = id; };
|
||||
SUPERCLASS = RBSplitSubview;
|
||||
},
|
||||
{
|
||||
ACTIONS = {checkForUpdates = id; };
|
||||
CLASS = SUUpdater;
|
||||
LANGUAGE = ObjC;
|
||||
SUPERCLASS = NSObject;
|
||||
}
|
||||
);
|
||||
IBVersion = 1;
|
||||
}
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment version="1060" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="235" id="236"/>
|
||||
<outlet property="dockMenu" destination="337" id="341"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<menu title="MainMenu" systemMenu="main" id="29" userLabel="MainMenu">
|
||||
<items>
|
||||
<menuItem title="MacVim" id="56">
|
||||
<menu key="submenu" title="MacVim" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About MacVim" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check for updates…" id="255">
|
||||
<connections>
|
||||
<action selector="checkForUpdates:" target="Jqk-qh-n0J" id="Wau-rL-cbn"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="196">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129">
|
||||
<connections>
|
||||
<action selector="orderFrontPreferencePanel:" target="235" id="252"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="143">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="131">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="144">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hide MacVim" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-2" id="152"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-2" id="146"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-2" id="153"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Quit MacVim" keyEquivalent="q" id="136">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-2" id="139"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="217">
|
||||
<menu key="submenu" title="File" id="218">
|
||||
<items>
|
||||
<menuItem title="New Window" keyEquivalent="n" id="219">
|
||||
<connections>
|
||||
<action selector="newWindow:" target="235" id="251"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="261">
|
||||
<connections>
|
||||
<action selector="fileOpen:" target="235" id="277"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="262">
|
||||
<menu key="submenu" title="Open Recent" id="271">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="272">
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="278"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="263">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="248">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="249"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="281">
|
||||
<menu key="submenu" title="Edit" id="282">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="283">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="316"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="284">
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="317"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="285">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="286">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="318"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="287">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="319"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="288">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="320"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="290">
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="321"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="291">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="322"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="309">
|
||||
<menu key="submenu" title="Window" id="310">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="311">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="323"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="312">
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="324"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="313">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="314">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="325"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="232">
|
||||
<menu key="submenu" title="Help" id="233">
|
||||
<items>
|
||||
<menuItem title="MacVim Help" keyEquivalent="?" id="275">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="showVimHelp:" target="235" id="329"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="MacVim Website" id="234">
|
||||
<connections>
|
||||
<action selector="openWebsite:" target="235" id="274"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<customObject id="235" userLabel="MMAppController" customClass="MMAppController"/>
|
||||
<menu id="337" userLabel="DockMenu">
|
||||
<items>
|
||||
<menuItem title="New Window" id="338">
|
||||
<attributedString key="attributedTitle"/>
|
||||
<connections>
|
||||
<action selector="newWindowAndActivate:" target="235" id="350"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<customObject id="Jqk-qh-n0J" customClass="SUUpdater"/>
|
||||
</objects>
|
||||
</document>
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>84 130 356 240 0 0 1024 746 </string>
|
||||
<key>IBEditorPositions</key>
|
||||
<dict>
|
||||
<key>29</key>
|
||||
<string>84 375 281 44 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>IBFramework Version</key>
|
||||
<string>489.0</string>
|
||||
<key>IBLastKnownRelativeProjectPath</key>
|
||||
<string>../../MacVim.xcodeproj</string>
|
||||
<key>IBOldestOS</key>
|
||||
<integer>5</integer>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>29</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8S165</string>
|
||||
<key>targetFramework</key>
|
||||
<string>IBCocoaFramework</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -1255,7 +1255,12 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>90</string>
|
||||
<string>93</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
@@ -1301,7 +1306,9 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>SUFeedURL</key>
|
||||
<string>http://b4winckler.github.com/macvim/appcast/stable.xml</string>
|
||||
<string>https://raw.githubusercontent.com/macvim-dev/macvim/gh-pages/appcast/latest.xml</string>
|
||||
<key>SUPublicDSAKeyFile</key>
|
||||
<string>dsa_pub.pem</string>
|
||||
<key>NSAppleScriptEnabled</key>
|
||||
<true/>
|
||||
|
||||
|
||||
@@ -155,7 +155,14 @@ enum {
|
||||
[[target windowController] setWindow:self];
|
||||
|
||||
oldTabBarStyle = [[view tabBarControl] styleName];
|
||||
[[view tabBarControl] setStyleNamed:@"Unified"];
|
||||
|
||||
NSString *style;
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
|
||||
style = @"Yosemite";
|
||||
#else
|
||||
style = @"Unified";
|
||||
#endif
|
||||
[[view tabBarControl] setStyleNamed:style];
|
||||
|
||||
// add text view
|
||||
oldPosition = [view frame].origin;
|
||||
|
||||
+10
-2
@@ -115,8 +115,8 @@ enum {
|
||||
|
||||
// Create the tab bar control (which is responsible for actually
|
||||
// drawing the tabline and tabs).
|
||||
NSRect tabFrame = { { 0, frame.size.height - 22 },
|
||||
{ frame.size.width, 22 } };
|
||||
NSRect tabFrame = { { 0, frame.size.height - kPSMTabBarControlHeight },
|
||||
{ frame.size.width, kPSMTabBarControlHeight } };
|
||||
tabBarControl = [[PSMTabBarControl alloc] initWithFrame:tabFrame];
|
||||
|
||||
[tabView setDelegate:tabBarControl];
|
||||
@@ -125,10 +125,18 @@ enum {
|
||||
[tabBarControl setDelegate:self];
|
||||
[tabBarControl setHidden:YES];
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
|
||||
CGFloat screenWidth = [[NSScreen mainScreen] frame].size.width;
|
||||
[tabBarControl setStyleNamed:@"Yosemite"];
|
||||
[tabBarControl setCellMinWidth:120];
|
||||
[tabBarControl setCellMaxWidth:screenWidth];
|
||||
[tabBarControl setCellOptimumWidth:screenWidth];
|
||||
#else
|
||||
[tabBarControl setCellMinWidth:[ud integerForKey:MMTabMinWidthKey]];
|
||||
[tabBarControl setCellMaxWidth:[ud integerForKey:MMTabMaxWidthKey]];
|
||||
[tabBarControl setCellOptimumWidth:
|
||||
[ud integerForKey:MMTabOptimumWidthKey]];
|
||||
#endif
|
||||
|
||||
[tabBarControl setShowAddTabButton:[ud boolForKey:MMShowAddTabButtonKey]];
|
||||
[[tabBarControl addTabButton] setTarget:self];
|
||||
|
||||
@@ -80,6 +80,14 @@
|
||||
#define FUOPT_BGCOLOR_HLGROUP 0x004
|
||||
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
|
||||
# define TABBAR_STYLE_UNIFINED @"Yosemite"
|
||||
# define TABBAR_STYLE_METAL @"Yosemite"
|
||||
#else
|
||||
# define TABBAR_STYLE_UNIFINED @"Unified"
|
||||
# define TABBAR_STYLE_METAL @"Metal"
|
||||
#endif
|
||||
|
||||
|
||||
@interface MMWindowController (Private)
|
||||
- (NSSize)contentSize;
|
||||
@@ -1173,7 +1181,7 @@
|
||||
[[window animator] setAlphaValue:0];
|
||||
} completionHandler:^{
|
||||
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
|
||||
[[vimView tabBarControl] setStyleNamed:@"Unified"];
|
||||
[[vimView tabBarControl] setStyleNamed:TABBAR_STYLE_UNIFINED];
|
||||
[self updateTablineSeparator];
|
||||
|
||||
// Stay dark for some time to wait for things to sync, then do the full screen operation
|
||||
@@ -1234,7 +1242,7 @@
|
||||
fullScreenEnabled = NO;
|
||||
[window setAlphaValue:1];
|
||||
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
|
||||
[[vimView tabBarControl] setStyleNamed:@"Metal"];
|
||||
[[vimView tabBarControl] setStyleNamed:TABBAR_STYLE_METAL];
|
||||
[self updateTablineSeparator];
|
||||
[window setFrame:preFullScreenFrame display:YES];
|
||||
}
|
||||
@@ -1264,7 +1272,7 @@
|
||||
[[window animator] setAlphaValue:0];
|
||||
} completionHandler:^{
|
||||
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
|
||||
[[vimView tabBarControl] setStyleNamed:@"Metal"];
|
||||
[[vimView tabBarControl] setStyleNamed:TABBAR_STYLE_METAL];
|
||||
[self updateTablineSeparator];
|
||||
[window setFrame:preFullScreenFrame display:YES];
|
||||
|
||||
@@ -1309,7 +1317,7 @@
|
||||
fullScreenEnabled = YES;
|
||||
[window setAlphaValue:1];
|
||||
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
|
||||
[[vimView tabBarControl] setStyleNamed:@"Unified"];
|
||||
[[vimView tabBarControl] setStyleNamed:TABBAR_STYLE_UNIFINED];
|
||||
[self updateTablineSeparator];
|
||||
[self maximizeWindow:fullScreenOptions];
|
||||
}
|
||||
|
||||
@@ -64,6 +64,9 @@
|
||||
1DE9B9500D341AB8008FEDD4 /* MMWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DE9B94E0D341AB8008FEDD4 /* MMWindow.m */; };
|
||||
1DED78600C6DE43D0079945F /* vimrc in Copy Vim Runtime Files */ = {isa = PBXBuildFile; fileRef = 1DED785F0C6DE43D0079945F /* vimrc */; };
|
||||
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; };
|
||||
52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; };
|
||||
52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */; };
|
||||
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
@@ -112,6 +115,7 @@
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */,
|
||||
1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */,
|
||||
);
|
||||
name = "Copy Frameworks";
|
||||
@@ -214,6 +218,8 @@
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
32CA4F630368D1EE00C91783 /* MacVim_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacVim_Prefix.pch; sourceTree = "<group>"; };
|
||||
52818AFA1C1C075300F59085 /* QuickLookStephen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = QuickLookStephen.xcodeproj; path = qlstephen/QuickLookStephen.xcodeproj; sourceTree = "<group>"; };
|
||||
52A364721C4A5789005757EC /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
|
||||
52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* MacVim.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MacVim.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -226,6 +232,7 @@
|
||||
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */,
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
1D8B5A53104AF9FF002E59D5 /* Carbon.framework in Frameworks */,
|
||||
52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -379,6 +386,7 @@
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */,
|
||||
1D384A0D100D671700D3C22F /* KeyBinding.plist */,
|
||||
1D9C602E0EF79C0C0034AD44 /* MacVim.icns */,
|
||||
1D8BEA73104992290069B072 /* FindAndReplace.nib */,
|
||||
@@ -402,6 +410,7 @@
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
52A364721C4A5789005757EC /* Sparkle.framework */,
|
||||
1D8B5A52104AF9FF002E59D5 /* Carbon.framework */,
|
||||
1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */,
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
@@ -513,6 +522,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */,
|
||||
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1D0E051C0BA5F83800B6049E /* Colors.plist in Resources */,
|
||||
@@ -664,6 +674,7 @@
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\"";
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
@@ -676,6 +687,7 @@
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = "";
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.vim.MacVim;
|
||||
@@ -694,6 +706,7 @@
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\"";
|
||||
GCC_DYNAMIC_NO_PIC = YES;
|
||||
@@ -705,6 +718,7 @@
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = "";
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.vim.MacVim;
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
52C0B9B515BDB7A9000C268F /* overflowImagePressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52C0B9B315BDB7A9000C268F /* overflowImagePressed@2x.png */; };
|
||||
52C268D015BDB72B0012FECA /* overflowImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 52C268CE15BDB72B0012FECA /* overflowImage.png */; };
|
||||
52C268D115BDB72B0012FECA /* overflowImagePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 52C268CF15BDB72B0012FECA /* overflowImagePressed.png */; };
|
||||
52FAFCCF1C30F4B500C6E613 /* TabNewYosemite.png in Resources */ = {isa = PBXBuildFile; fileRef = 52FAFCCD1C30F4B500C6E613 /* TabNewYosemite.png */; };
|
||||
52FAFCD01C30F4B500C6E613 /* TabNewYosemite@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52FAFCCE1C30F4B500C6E613 /* TabNewYosemite@2x.png */; };
|
||||
52FAFCD31C30F4DF00C6E613 /* PSMYosemiteTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FAFCD11C30F4DF00C6E613 /* PSMYosemiteTabStyle.h */; };
|
||||
52FAFCD41C30F4DF00C6E613 /* PSMYosemiteTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 52FAFCD21C30F4DF00C6E613 /* PSMYosemiteTabStyle.m */; };
|
||||
546DEAF1067F63070098DCC4 /* PSMTabBarControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0259C576FE90428111CA0C5A /* PSMTabBarControl.m */; };
|
||||
546DEAF2067F630E0098DCC4 /* PSMTabBarControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
A2082A9009EAEB34009AC8BE /* PSMTabDragAssistant.h in Headers */ = {isa = PBXBuildFile; fileRef = A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */; };
|
||||
@@ -111,6 +115,10 @@
|
||||
52C0B9B315BDB7A9000C268F /* overflowImagePressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "overflowImagePressed@2x.png"; path = "images/overflowImagePressed@2x.png"; sourceTree = "<group>"; };
|
||||
52C268CE15BDB72B0012FECA /* overflowImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = overflowImage.png; path = images/overflowImage.png; sourceTree = "<group>"; };
|
||||
52C268CF15BDB72B0012FECA /* overflowImagePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = overflowImagePressed.png; path = images/overflowImagePressed.png; sourceTree = "<group>"; };
|
||||
52FAFCCD1C30F4B500C6E613 /* TabNewYosemite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewYosemite.png; path = images/TabNewYosemite.png; sourceTree = "<group>"; };
|
||||
52FAFCCE1C30F4B500C6E613 /* TabNewYosemite@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabNewYosemite@2x.png"; path = "images/TabNewYosemite@2x.png"; sourceTree = "<group>"; };
|
||||
52FAFCD11C30F4DF00C6E613 /* PSMYosemiteTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMYosemiteTabStyle.h; path = source/PSMYosemiteTabStyle.h; sourceTree = "<group>"; };
|
||||
52FAFCD21C30F4DF00C6E613 /* PSMYosemiteTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMYosemiteTabStyle.m; path = source/PSMYosemiteTabStyle.m; sourceTree = "<group>"; };
|
||||
53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PSMTabBarControl.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
53DF68FE067E5B5A0090B5B0 /* PSMTabBarControlFramework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PSMTabBarControlFramework-Info.plist"; sourceTree = "<group>"; };
|
||||
54D33B2806778E3300C9C163 /* PSMTabBarControl.ibclassdescription */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PSMTabBarControl.ibclassdescription; sourceTree = "<group>"; };
|
||||
@@ -309,6 +317,8 @@
|
||||
A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */,
|
||||
A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */,
|
||||
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */,
|
||||
52FAFCD11C30F4DF00C6E613 /* PSMYosemiteTabStyle.h */,
|
||||
52FAFCD21C30F4DF00C6E613 /* PSMYosemiteTabStyle.m */,
|
||||
A268EA5F09A9831800E082AA /* PSMRolloverButton.h */,
|
||||
A268EA6009A9831800E082AA /* PSMRolloverButton.m */,
|
||||
A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */,
|
||||
@@ -382,6 +392,8 @@
|
||||
523897EE15BDA9AC00498A53 /* TabClose_Front_Pressed@2x.png */,
|
||||
52A57C0E15BBA230003EC59C /* TabClose_Front_Rollover.png */,
|
||||
523897EF15BDA9AC00498A53 /* TabClose_Front_Rollover@2x.png */,
|
||||
52FAFCCD1C30F4B500C6E613 /* TabNewYosemite.png */,
|
||||
52FAFCCE1C30F4B500C6E613 /* TabNewYosemite@2x.png */,
|
||||
);
|
||||
name = Images;
|
||||
sourceTree = "<group>";
|
||||
@@ -396,6 +408,7 @@
|
||||
546DEAF2067F630E0098DCC4 /* PSMTabBarControl.h in Headers */,
|
||||
A251BE850959A1B90058BC7F /* PSMOverflowPopUpButton.h in Headers */,
|
||||
A251BE870959A1B90058BC7F /* PSMTabBarCell.h in Headers */,
|
||||
52FAFCD31C30F4DF00C6E613 /* PSMYosemiteTabStyle.h in Headers */,
|
||||
A2D32EDC09A634C900EC8662 /* PSMTabStyle.h in Headers */,
|
||||
A2D32F0009A63D7A00EC8662 /* PSMMetalTabStyle.h in Headers */,
|
||||
A268EA6209A9831800E082AA /* PSMRolloverButton.h in Headers */,
|
||||
@@ -478,8 +491,10 @@
|
||||
52A57C0F15BBA230003EC59C /* TabClose_Front.png in Resources */,
|
||||
52A57C1015BBA230003EC59C /* TabClose_Front_Pressed.png in Resources */,
|
||||
52A57C1115BBA230003EC59C /* TabClose_Front_Rollover.png in Resources */,
|
||||
52FAFCCF1C30F4B500C6E613 /* TabNewYosemite.png in Resources */,
|
||||
523897F415BDA9AC00498A53 /* TabClose_Front_Pressed@2x.png in Resources */,
|
||||
523897F515BDA9AC00498A53 /* TabClose_Front_Rollover@2x.png in Resources */,
|
||||
52FAFCD01C30F4B500C6E613 /* TabNewYosemite@2x.png in Resources */,
|
||||
523897F615BDA9AC00498A53 /* TabClose_Front@2x.png in Resources */,
|
||||
523897F715BDA9AC00498A53 /* TabNewMetal@2x.png in Resources */,
|
||||
523897F815BDA9AC00498A53 /* TabNewMetalPressed@2x.png in Resources */,
|
||||
@@ -505,6 +520,7 @@
|
||||
A268EA6309A9831800E082AA /* PSMRolloverButton.m in Sources */,
|
||||
A2129BB309AEB58F00724E6C /* PSMProgressIndicator.m in Sources */,
|
||||
A2082A9109EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */,
|
||||
52FAFCD41C30F4DF00C6E613 /* PSMYosemiteTabStyle.m in Sources */,
|
||||
A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */,
|
||||
A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */,
|
||||
);
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -393,12 +393,7 @@ void MyNSDrawWindowBackground(NSRect rect)
|
||||
if ([cell closeButtonPressed]) closeButton = metalCloseButtonDown;
|
||||
|
||||
closeButtonSize = [closeButton size];
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
|
||||
[closeButton drawInRect:closeButtonRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
|
||||
#else
|
||||
[closeButton setFlipped:YES];
|
||||
[closeButton drawAtPoint:closeButtonRect.origin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
|
||||
#endif
|
||||
|
||||
// scoot label over
|
||||
labelPosition += closeButtonSize.width + kPSMTabBarCellPadding;
|
||||
|
||||
@@ -40,15 +40,14 @@
|
||||
}
|
||||
|
||||
NSImage *image = (_down) ? _PSMTabBarOverflowDownPopUpImage : _PSMTabBarOverflowPopUpImage;
|
||||
NSSize imageSize = [image size];
|
||||
rect.origin.x = NSMidX(rect) - (imageSize.width * 0.5);
|
||||
rect.origin.y = NSMidY(rect) - (imageSize.height * 0.5);
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
|
||||
[image drawInRect:rect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
|
||||
#else
|
||||
[image setFlipped:YES];
|
||||
[image drawAtPoint:rect.origin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
|
||||
#endif
|
||||
NSSize imageSize = [image size];
|
||||
NSRect bounds = [self bounds];
|
||||
NSPoint drawPoint = NSMakePoint(NSMidX(bounds) - (imageSize.width * 0.5f),
|
||||
NSMidY(bounds) - (imageSize.height * 0.5f));
|
||||
[image drawAtPoint:drawPoint
|
||||
fromRect:NSZeroRect
|
||||
operation:NSCompositeSourceOver
|
||||
fraction:1.0f];
|
||||
}
|
||||
|
||||
- (void)mouseDown:(NSEvent *)event
|
||||
|
||||
@@ -12,26 +12,18 @@
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
#ifndef NSINTEGER_DEFINED
|
||||
// NSInteger was introduced in 10.5
|
||||
# if __LP64__ || NS_BUILD_32_LIKE_64
|
||||
typedef long NSInteger;
|
||||
typedef unsigned long NSUInteger;
|
||||
# else
|
||||
typedef int NSInteger;
|
||||
typedef unsigned int NSUInteger;
|
||||
# endif
|
||||
# define NSINTEGER_DEFINED 1
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
|
||||
# define kPSMTabBarControlHeight 25
|
||||
#else
|
||||
# define kPSMTabBarControlHeight 22
|
||||
#endif
|
||||
|
||||
#ifndef MAC_OS_X_VERSION_10_6
|
||||
# define MAC_OS_X_VERSION_10_6 1060
|
||||
#endif
|
||||
|
||||
#define kPSMTabBarControlHeight 22
|
||||
// internal cell border
|
||||
#define MARGIN_X 6
|
||||
#define MARGIN_Y 3
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
|
||||
# define MARGIN_Y 5
|
||||
#else
|
||||
# define MARGIN_Y 3
|
||||
#endif
|
||||
// padding between objects
|
||||
#define kPSMTabBarCellPadding 4
|
||||
// fixed size objects
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#import "PSMTabStyle.h"
|
||||
#import "PSMMetalTabStyle.h"
|
||||
#import "PSMUnifiedTabStyle.h"
|
||||
#import "PSMYosemiteTabStyle.h"
|
||||
#import "PSMTabDragAssistant.h"
|
||||
|
||||
@interface PSMTabBarControl (Private)
|
||||
@@ -254,10 +255,11 @@
|
||||
- (void)setStyleNamed:(NSString *)name
|
||||
{
|
||||
[style release];
|
||||
if ([name isEqualToString:@"Unified"]){
|
||||
style = [[PSMUnifiedTabStyle alloc] init];
|
||||
}
|
||||
else {
|
||||
if([name isEqualToString:@"Unified"]){
|
||||
style = [[PSMUnifiedTabStyle alloc] init];
|
||||
} else if([name isEqualToString:@"Yosemite"]){
|
||||
style = [[PSMYosemiteTabStyle alloc] init];
|
||||
} else {
|
||||
style = [[PSMMetalTabStyle alloc] init];
|
||||
}
|
||||
|
||||
|
||||
@@ -389,13 +389,8 @@
|
||||
if ([cell closeButtonPressed]) closeButton = unifiedCloseButtonDown;
|
||||
|
||||
closeButtonSize = [closeButton size];
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
|
||||
[closeButton drawInRect:closeButtonRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
|
||||
#else
|
||||
[closeButton setFlipped:YES];
|
||||
[closeButton drawAtPoint:closeButtonRect.origin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
|
||||
#endif
|
||||
|
||||
|
||||
// scoot label over
|
||||
labelPosition += closeButtonSize.width + kPSMTabBarCellPadding;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// PSMYosemiteTabStyle.h
|
||||
// PSMTabBarControl
|
||||
//
|
||||
// Created by Christoffer Winterkvist on 25/08/14.
|
||||
//
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PSMTabStyle.h"
|
||||
|
||||
@interface PSMYosemiteTabStyle : NSObject <PSMTabStyle> {
|
||||
NSImage *closeButton;
|
||||
NSImage *closeButtonDown;
|
||||
NSImage *closeButtonOver;
|
||||
NSImage *_addTabButtonImage;
|
||||
NSImage *_addTabButtonPressedImage;
|
||||
NSImage *_addTabButtonRolloverImage;
|
||||
NSMutableParagraphStyle *truncatingTailParagraphStyle;
|
||||
NSMutableParagraphStyle *centeredParagraphStyle;
|
||||
}
|
||||
|
||||
- (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell inView:(NSView*)controlView;
|
||||
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder;
|
||||
- (id)initWithCoder:(NSCoder *)aDecoder;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,498 @@
|
||||
//
|
||||
// PSMYosemiteTabStyle.m
|
||||
// PSMTabBarControl
|
||||
//
|
||||
// Created by Christoffer Winterkvist on 25/08/14.
|
||||
//
|
||||
//
|
||||
|
||||
#import "PSMYosemiteTabStyle.h"
|
||||
|
||||
#define kPSMMetalObjectCounterRadius 7.0
|
||||
#define kPSMMetalCounterMinWidth 20
|
||||
|
||||
void YosemiteNSDrawWindowBackground(NSRect rect, NSColor *color)
|
||||
{
|
||||
[color set];
|
||||
NSRectFill( rect );
|
||||
}
|
||||
|
||||
@implementation PSMYosemiteTabStyle
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[closeButton release];
|
||||
[closeButtonDown release];
|
||||
[closeButtonOver release];
|
||||
[_addTabButtonImage release];
|
||||
[_addTabButtonPressedImage release];
|
||||
[_addTabButtonRolloverImage release];
|
||||
|
||||
[truncatingTailParagraphStyle release];
|
||||
[centeredParagraphStyle release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Initializers
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (!self) return nil;
|
||||
|
||||
closeButton = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabClose_Front"]];
|
||||
//NSLog(@"closeButton=%@ path=%@", metalCloseButton,
|
||||
// [[PSMTabBarControl bundle] pathForImageResource:@"TabClose_Front"]);
|
||||
closeButtonDown = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabClose_Front_Pressed"]];
|
||||
closeButtonOver = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabClose_Front_Rollover"]];
|
||||
|
||||
_addTabButtonImage = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabNewMetal"]];
|
||||
_addTabButtonPressedImage = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabNewMetalPressed"]];
|
||||
_addTabButtonRolloverImage = [[NSImage alloc] initByReferencingFile:[[PSMTabBarControl bundle] pathForImageResource:@"TabNewMetalRollover"]];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString *)name
|
||||
{
|
||||
return @"Yosemite";
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Control Specific
|
||||
|
||||
- (float)leftMarginForTabBarControl
|
||||
{
|
||||
return -1.0f;
|
||||
}
|
||||
|
||||
- (float)rightMarginForTabBarControl
|
||||
{
|
||||
return 24.0f;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Add Tab Button
|
||||
|
||||
- (NSImage *)addTabButtonImage
|
||||
{
|
||||
return _addTabButtonImage;
|
||||
}
|
||||
|
||||
- (NSImage *)addTabButtonPressedImage
|
||||
{
|
||||
return _addTabButtonPressedImage;
|
||||
}
|
||||
|
||||
- (NSImage *)addTabButtonRolloverImage
|
||||
{
|
||||
return _addTabButtonRolloverImage;
|
||||
}
|
||||
|
||||
- (NSColor *)backgroundColor:(BOOL)isKeyWindow
|
||||
{
|
||||
NSColor *backgroundColor;
|
||||
if (isKeyWindow) {
|
||||
backgroundColor = [NSColor colorWithCalibratedHue:0.000 saturation:0.000 brightness:0.875 alpha:1];
|
||||
} else {
|
||||
backgroundColor = [NSColor colorWithCalibratedHue:0.000 saturation:0.000 brightness:0.957 alpha:1];
|
||||
}
|
||||
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
- (NSColor *)borderColor
|
||||
{
|
||||
return [NSColor colorWithCalibratedHue:0.000 saturation:0.000 brightness:0.678 alpha:1];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Cell Specific
|
||||
|
||||
- (NSRect) closeButtonRectForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
|
||||
if ([cell hasCloseButton] == NO) {
|
||||
return NSZeroRect;
|
||||
}
|
||||
|
||||
NSRect result;
|
||||
result.size = [closeButton size];
|
||||
result.origin.x = cellFrame.origin.x + MARGIN_X;
|
||||
result.origin.y = cellFrame.origin.y + MARGIN_Y + 2.0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
- (NSRect)iconRectForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
|
||||
if ([cell hasIcon] == NO) {
|
||||
return NSZeroRect;
|
||||
}
|
||||
|
||||
NSRect result;
|
||||
result.size = NSMakeSize(kPSMTabBarIconWidth, kPSMTabBarIconWidth);
|
||||
result.origin.x = cellFrame.origin.x + MARGIN_X;
|
||||
result.origin.y = cellFrame.origin.y + MARGIN_Y;
|
||||
|
||||
if([cell hasCloseButton] && ![cell isCloseButtonSuppressed])
|
||||
result.origin.x += [closeButton size].width + kPSMTabBarCellPadding;
|
||||
|
||||
if([cell state] == NSOnState){
|
||||
result.origin.y += 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
- (NSRect)indicatorRectForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
|
||||
if ([[cell indicator] isHidden]) {
|
||||
return NSZeroRect;
|
||||
}
|
||||
|
||||
NSRect result;
|
||||
result.size = NSMakeSize(kPSMTabBarIndicatorWidth, kPSMTabBarIndicatorWidth);
|
||||
result.origin.x = cellFrame.origin.x + cellFrame.size.width - MARGIN_X - kPSMTabBarIndicatorWidth;
|
||||
result.origin.y = cellFrame.origin.y + MARGIN_Y;
|
||||
|
||||
if([cell state] == NSOnState){
|
||||
result.origin.y -= 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
- (NSRect)objectCounterRectForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
|
||||
if ([cell count] == 0) {
|
||||
return NSZeroRect;
|
||||
}
|
||||
|
||||
float countWidth = [[self attributedObjectCountValueForTabCell:cell] size].width;
|
||||
countWidth += (2 * kPSMMetalObjectCounterRadius - 6.0);
|
||||
if(countWidth < kPSMMetalCounterMinWidth)
|
||||
countWidth = kPSMMetalCounterMinWidth;
|
||||
|
||||
NSRect result;
|
||||
result.size = NSMakeSize(countWidth, 2 * kPSMMetalObjectCounterRadius); // temp
|
||||
result.origin.x = cellFrame.origin.x + cellFrame.size.width - MARGIN_X - result.size.width;
|
||||
result.origin.y = cellFrame.origin.y + MARGIN_Y + 1.0;
|
||||
|
||||
if(![[cell indicator] isHidden])
|
||||
result.origin.x -= kPSMTabBarIndicatorWidth + kPSMTabBarCellPadding;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
- (float)minimumWidthOfTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
float resultWidth = 0.0;
|
||||
|
||||
// left margin
|
||||
resultWidth = MARGIN_X;
|
||||
|
||||
// close button?
|
||||
if([cell hasCloseButton] && ![cell isCloseButtonSuppressed])
|
||||
resultWidth += [closeButton size].width + kPSMTabBarCellPadding;
|
||||
|
||||
// icon?
|
||||
if([cell hasIcon])
|
||||
resultWidth += kPSMTabBarIconWidth + kPSMTabBarCellPadding;
|
||||
|
||||
// the label
|
||||
resultWidth += kPSMMinimumTitleWidth;
|
||||
|
||||
// object counter?
|
||||
if([cell count] > 0)
|
||||
resultWidth += [self objectCounterRectForTabCell:cell].size.width + kPSMTabBarCellPadding;
|
||||
|
||||
// indicator?
|
||||
if ([[cell indicator] isHidden] == NO)
|
||||
resultWidth += kPSMTabBarCellPadding + kPSMTabBarIndicatorWidth;
|
||||
|
||||
// right margin
|
||||
resultWidth += MARGIN_X;
|
||||
|
||||
return ceil(resultWidth);
|
||||
}
|
||||
|
||||
- (float)desiredWidthOfTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
float resultWidth = 0.0;
|
||||
|
||||
// left margin
|
||||
resultWidth = MARGIN_X;
|
||||
|
||||
// close button?
|
||||
if ([cell hasCloseButton] && ![cell isCloseButtonSuppressed])
|
||||
resultWidth += [closeButton size].width + kPSMTabBarCellPadding;
|
||||
|
||||
// icon?
|
||||
if([cell hasIcon])
|
||||
resultWidth += kPSMTabBarIconWidth + kPSMTabBarCellPadding;
|
||||
|
||||
// the label
|
||||
resultWidth += [[cell attributedStringValue] size].width;
|
||||
|
||||
// object counter?
|
||||
if([cell count] > 0)
|
||||
resultWidth += [self objectCounterRectForTabCell:cell].size.width + kPSMTabBarCellPadding;
|
||||
|
||||
// indicator?
|
||||
if ([[cell indicator] isHidden] == NO)
|
||||
resultWidth += kPSMTabBarCellPadding + kPSMTabBarIndicatorWidth;
|
||||
|
||||
// right margin
|
||||
resultWidth += MARGIN_X;
|
||||
|
||||
return ceil(resultWidth);
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Cell Values
|
||||
|
||||
- (NSAttributedString *)attributedObjectCountValueForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSMutableAttributedString *attrStr;
|
||||
NSFontManager *fm = [NSFontManager sharedFontManager];
|
||||
NSNumberFormatter *nf = [[[NSNumberFormatter alloc] init] autorelease];
|
||||
[nf setLocalizesFormat:YES];
|
||||
[nf setFormat:@"0"];
|
||||
[nf setHasThousandSeparators:YES];
|
||||
NSString *contents = [nf stringFromNumber:[NSNumber numberWithInt:[cell count]]];
|
||||
attrStr = [[[NSMutableAttributedString alloc] initWithString:contents] autorelease];
|
||||
NSRange range = NSMakeRange(0, [contents length]);
|
||||
|
||||
// Add font attribute
|
||||
[attrStr addAttribute:NSFontAttributeName value:[fm convertFont:[NSFont fontWithName:@"Helvetica" size:11.0] toHaveTrait:NSBoldFontMask] range:range];
|
||||
[attrStr addAttribute:NSForegroundColorAttributeName value:[[NSColor whiteColor] colorWithAlphaComponent:0.85] range:range];
|
||||
|
||||
return attrStr;
|
||||
}
|
||||
|
||||
- (NSAttributedString *)attributedStringValueForTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSMutableAttributedString *attrStr;
|
||||
NSString *contents = [cell stringValue];
|
||||
attrStr = [[[NSMutableAttributedString alloc] initWithString:contents] autorelease];
|
||||
NSRange range = NSMakeRange(0, [contents length]);
|
||||
|
||||
// Add font attribute
|
||||
[attrStr addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:11.0] range:range];
|
||||
|
||||
PSMTabBarControl *bar = (PSMTabBarControl *)cell.controlView;
|
||||
BOOL isKeyWindow = [bar.window isKeyWindow];
|
||||
|
||||
CGFloat textAlpha;
|
||||
if ([cell state] == NSOnState) {
|
||||
textAlpha = (isKeyWindow) ? 1.0f : 0.5f;
|
||||
} else {
|
||||
textAlpha = (isKeyWindow) ? 0.5f : 0.25f;
|
||||
}
|
||||
NSColor *textColor = [[NSColor textColor] colorWithAlphaComponent:textAlpha];
|
||||
|
||||
[attrStr addAttribute:NSForegroundColorAttributeName value:textColor range:range];
|
||||
|
||||
// Paragraph Style for Truncating Long Text
|
||||
if (!truncatingTailParagraphStyle) {
|
||||
truncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
|
||||
[truncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingHead];
|
||||
[truncatingTailParagraphStyle setAlignment:NSCenterTextAlignment];
|
||||
}
|
||||
[attrStr addAttribute:NSParagraphStyleAttributeName value:truncatingTailParagraphStyle range:range];
|
||||
|
||||
return attrStr;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark ---- drawing ----
|
||||
|
||||
- (void)drawTabCell:(PSMTabBarCell *)cell
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
NSColor * lineColor = nil;
|
||||
NSBezierPath* bezier = [NSBezierPath bezierPath];
|
||||
lineColor = [self borderColor];
|
||||
|
||||
if ([cell state] == NSOnState) {
|
||||
// selected tab
|
||||
NSRect aRect = NSMakeRect(cellFrame.origin.x, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);
|
||||
|
||||
PSMTabBarControl *bar = (PSMTabBarControl *)cell.controlView;
|
||||
BOOL isKeyWindow = [bar.window isKeyWindow];
|
||||
|
||||
// background
|
||||
YosemiteNSDrawWindowBackground(aRect, [self backgroundColor:isKeyWindow]);
|
||||
|
||||
aRect.size.height -= 1.0f;
|
||||
aRect.origin.y += 0.5f;
|
||||
// frame
|
||||
[lineColor set];
|
||||
[bezier moveToPoint:NSMakePoint(aRect.origin.x, aRect.origin.y)];
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x, aRect.origin.y+aRect.size.height)];
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x+aRect.size.width, aRect.origin.y+aRect.size.height)];
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x+aRect.size.width, aRect.origin.y)];
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x, aRect.origin.y)];
|
||||
[bezier stroke];
|
||||
} else {
|
||||
|
||||
// unselected tab
|
||||
NSRect aRect = NSMakeRect(cellFrame.origin.x, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);
|
||||
|
||||
aRect.origin.x += 0.5;
|
||||
|
||||
[[NSColor colorWithCalibratedWhite:0.0 alpha:0.1] set];
|
||||
NSRectFillUsingOperation(aRect, NSCompositeSourceAtop);
|
||||
|
||||
// frame
|
||||
[lineColor set];
|
||||
[bezier moveToPoint:NSMakePoint(aRect.origin.x, aRect.origin.y)];
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x + aRect.size.width, aRect.origin.y)];
|
||||
if(!([cell tabState] & PSMTab_RightIsSelectedMask)){
|
||||
[bezier lineToPoint:NSMakePoint(aRect.origin.x + aRect.size.width, aRect.origin.y + aRect.size.height)];
|
||||
}
|
||||
[bezier stroke];
|
||||
}
|
||||
|
||||
[self drawInteriorWithTabCell:cell inView:[cell controlView]];
|
||||
}
|
||||
|
||||
|
||||
|
||||
- (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell inView:(NSView*)controlView
|
||||
{
|
||||
NSRect cellFrame = [cell frame];
|
||||
float labelPosition = cellFrame.origin.x + MARGIN_X;
|
||||
|
||||
// close button
|
||||
if ([cell hasCloseButton] && ![cell isCloseButtonSuppressed]) {
|
||||
NSSize closeButtonSize = NSZeroSize;
|
||||
NSRect closeButtonRect = [cell closeButtonRectForFrame:cellFrame];
|
||||
NSImage *button = nil;
|
||||
|
||||
if ([cell closeButtonOver]) button = closeButtonOver;
|
||||
if ([cell closeButtonPressed]) button = closeButtonDown;
|
||||
|
||||
closeButtonSize = [button size];
|
||||
[button drawInRect:closeButtonRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
|
||||
}
|
||||
|
||||
// object counter
|
||||
if([cell count] > 0){
|
||||
[[NSColor colorWithCalibratedWhite:0.3 alpha:0.6] set];
|
||||
NSBezierPath *path = [NSBezierPath bezierPath];
|
||||
NSRect myRect = [self objectCounterRectForTabCell:cell];
|
||||
[path moveToPoint:NSMakePoint(myRect.origin.x + kPSMMetalObjectCounterRadius, myRect.origin.y)];
|
||||
[path lineToPoint:NSMakePoint(myRect.origin.x + myRect.size.width - kPSMMetalObjectCounterRadius, myRect.origin.y)];
|
||||
[path appendBezierPathWithArcWithCenter:NSMakePoint(myRect.origin.x + myRect.size.width - kPSMMetalObjectCounterRadius, myRect.origin.y + kPSMMetalObjectCounterRadius) radius:kPSMMetalObjectCounterRadius startAngle:270.0 endAngle:90.0];
|
||||
[path lineToPoint:NSMakePoint(myRect.origin.x + kPSMMetalObjectCounterRadius, myRect.origin.y + myRect.size.height)];
|
||||
[path appendBezierPathWithArcWithCenter:NSMakePoint(myRect.origin.x + kPSMMetalObjectCounterRadius, myRect.origin.y + kPSMMetalObjectCounterRadius) radius:kPSMMetalObjectCounterRadius startAngle:90.0 endAngle:270.0];
|
||||
[path fill];
|
||||
|
||||
// draw attributed string centered in area
|
||||
NSRect counterStringRect;
|
||||
NSAttributedString *counterString = [self attributedObjectCountValueForTabCell:cell];
|
||||
counterStringRect.size = [counterString size];
|
||||
counterStringRect.origin.x = myRect.origin.x + ((myRect.size.width - counterStringRect.size.width) / 2.0) + 0.25;
|
||||
counterStringRect.origin.y = myRect.origin.y + ((myRect.size.height - counterStringRect.size.height) / 2.0) + 0.5;
|
||||
[counterString drawInRect:counterStringRect];
|
||||
}
|
||||
|
||||
// label rect
|
||||
NSRect labelRect;
|
||||
labelRect.origin.x = labelPosition;
|
||||
labelRect.size.width = cellFrame.size.width - (labelRect.origin.x - cellFrame.origin.x) - kPSMTabBarCellPadding;
|
||||
labelRect.size.height = cellFrame.size.height;
|
||||
labelRect.origin.y = cellFrame.origin.y + MARGIN_Y + 1.0;
|
||||
|
||||
if(![[cell indicator] isHidden])
|
||||
labelRect.size.width -= (kPSMTabBarIndicatorWidth + kPSMTabBarCellPadding);
|
||||
|
||||
if([cell count] > 0)
|
||||
labelRect.size.width -= ([self objectCounterRectForTabCell:cell].size.width + kPSMTabBarCellPadding);
|
||||
|
||||
// label
|
||||
[[cell attributedStringValue] drawInRect:labelRect];
|
||||
}
|
||||
|
||||
- (void)drawTabBar:(PSMTabBarControl *)bar inRect:(NSRect)rect
|
||||
{
|
||||
BOOL isKeyWindow = [bar.window isKeyWindow];
|
||||
YosemiteNSDrawWindowBackground(rect, [self backgroundColor:isKeyWindow]);
|
||||
|
||||
[[NSColor colorWithCalibratedWhite:0.0 alpha:0.0] set];
|
||||
NSRectFillUsingOperation(rect, NSCompositeSourceAtop);
|
||||
[[self borderColor] set];
|
||||
[NSBezierPath strokeLineFromPoint:NSMakePoint(rect.origin.x,rect.origin.y+0.5) toPoint:NSMakePoint(rect.origin.x+rect.size.width,rect.origin.y+0.5)];
|
||||
[NSBezierPath strokeLineFromPoint:NSMakePoint(rect.origin.x,rect.origin.y+rect.size.height-0.5) toPoint:NSMakePoint(rect.origin.x+rect.size.width,rect.origin.y+rect.size.height-0.5)];
|
||||
|
||||
// no tab view == not connected
|
||||
if(![bar tabView]){
|
||||
NSRect labelRect = rect;
|
||||
labelRect.size.height -= 4.0;
|
||||
labelRect.origin.y += 4.0;
|
||||
NSMutableAttributedString *attrStr;
|
||||
NSString *contents = @"PSMTabBarControl";
|
||||
attrStr = [[[NSMutableAttributedString alloc] initWithString:contents] autorelease];
|
||||
NSRange range = NSMakeRange(0, [contents length]);
|
||||
[attrStr addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:11.0] range:range];
|
||||
if (!centeredParagraphStyle) {
|
||||
centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
|
||||
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
|
||||
}
|
||||
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
|
||||
[attrStr drawInRect:labelRect];
|
||||
return;
|
||||
}
|
||||
|
||||
// draw cells
|
||||
NSEnumerator *e = [[bar cells] objectEnumerator];
|
||||
PSMTabBarCell *cell;
|
||||
while(cell = [e nextObject]){
|
||||
if(![cell isInOverflowMenu]){
|
||||
[cell drawWithFrame:[cell frame] inView:bar];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Archiving
|
||||
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder
|
||||
{
|
||||
if ([aCoder allowsKeyedCoding]) {
|
||||
[aCoder encodeObject:closeButton forKey:@"metalCloseButton"];
|
||||
[aCoder encodeObject:closeButtonDown forKey:@"metalCloseButtonDown"];
|
||||
[aCoder encodeObject:closeButtonOver forKey:@"metalCloseButtonOver"];
|
||||
[aCoder encodeObject:_addTabButtonImage forKey:@"addTabButtonImage"];
|
||||
[aCoder encodeObject:_addTabButtonPressedImage forKey:@"addTabButtonPressedImage"];
|
||||
[aCoder encodeObject:_addTabButtonRolloverImage forKey:@"addTabButtonRolloverImage"];
|
||||
}
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(NSCoder *)aDecoder
|
||||
{
|
||||
if ([aDecoder allowsKeyedCoding]) {
|
||||
closeButton = [[aDecoder decodeObjectForKey:@"metalCloseButton"] retain];
|
||||
closeButtonDown = [[aDecoder decodeObjectForKey:@"metalCloseButtonDown"] retain];
|
||||
closeButtonOver = [[aDecoder decodeObjectForKey:@"metalCloseButtonOver"] retain];
|
||||
_addTabButtonImage = [[aDecoder decodeObjectForKey:@"addTabButtonImage"] retain];
|
||||
_addTabButtonPressedImage = [[aDecoder decodeObjectForKey:@"addTabButtonPressedImage"] retain];
|
||||
_addTabButtonRolloverImage = [[aDecoder decodeObjectForKey:@"addTabButtonRolloverImage"] retain];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
+1
@@ -0,0 +1 @@
|
||||
Versions/Current/Modules
|
||||
@@ -0,0 +1 @@
|
||||
Versions/Current/PrivateHeaders
|
||||
@@ -1,13 +0,0 @@
|
||||
//
|
||||
// NSApplication+AppCopies.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface NSApplication (SUAppCopies)
|
||||
- (int)copiesRunning;
|
||||
@end
|
||||
@@ -1,11 +0,0 @@
|
||||
//
|
||||
// NSFileManager+Authentication.m
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/9/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
@interface NSFileManager (SUAuthenticationAdditions)
|
||||
- (BOOL)movePathWithAuthentication:(NSString *)src toPath:(NSString *)dst;
|
||||
@end
|
||||
@@ -1,15 +0,0 @@
|
||||
//
|
||||
// NSFileManager+Verification.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
// For the paranoid folks!
|
||||
@interface NSFileManager (SUVerification)
|
||||
- (BOOL)validatePath:(NSString *)path withMD5Hash:(NSString *)hash;
|
||||
- (BOOL)validatePath:(NSString *)path withEncodedDSASignature:(NSString *)encodedSignature;
|
||||
@end
|
||||
@@ -1,61 +0,0 @@
|
||||
/*
|
||||
|
||||
BSD License
|
||||
|
||||
Copyright (c) 2002, Brent Simmons
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of ranchero.com or Brent Simmons nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
NSString+extras.h
|
||||
NetNewsWire
|
||||
|
||||
Created by Brent Simmons on Fri Jun 14 2002.
|
||||
Copyright (c) 2002 Brent Simmons. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
|
||||
@interface NSString (extras)
|
||||
|
||||
- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set;
|
||||
|
||||
- (NSString *) trimWhiteSpace;
|
||||
|
||||
- (NSString *) stripHTML;
|
||||
|
||||
- (NSString *) ellipsizeAfterNWords: (int) n;
|
||||
|
||||
+ (BOOL) stringIsEmpty: (NSString *) s;
|
||||
|
||||
|
||||
@end
|
||||
@@ -1,98 +0,0 @@
|
||||
/*
|
||||
|
||||
BSD License
|
||||
|
||||
Copyright (c) 2002, Brent Simmons
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of ranchero.com or Brent Simmons nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
RSS.h
|
||||
A class for reading RSS feeds.
|
||||
|
||||
Created by Brent Simmons on Wed Apr 17 2002.
|
||||
Copyright (c) 2002 Brent Simmons. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <CoreFoundation/CoreFoundation.h>
|
||||
#import "NSString+extras.h"
|
||||
|
||||
|
||||
@interface RSS : NSObject {
|
||||
|
||||
NSDictionary *headerItems;
|
||||
NSMutableArray *newsItems;
|
||||
NSString *version;
|
||||
|
||||
BOOL flRdf;
|
||||
BOOL normalize;
|
||||
}
|
||||
|
||||
|
||||
/*Public*/
|
||||
|
||||
- (RSS *) initWithTitle: (NSString *) title andDescription: (NSString *) description;
|
||||
|
||||
- (RSS *) initWithData: (NSData *) rssData normalize: (BOOL) fl;
|
||||
|
||||
- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl;
|
||||
- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl userAgent:(NSString *)userAgent;
|
||||
|
||||
- (NSDictionary *) headerItems;
|
||||
|
||||
- (NSMutableArray *) newsItems;
|
||||
|
||||
- (NSString *) version;
|
||||
|
||||
// AMM's extensions for Sparkle
|
||||
- (NSDictionary *)newestItem;
|
||||
|
||||
|
||||
/*Private*/
|
||||
|
||||
- (void) createheaderdictionary: (CFXMLTreeRef) tree;
|
||||
|
||||
- (void) createitemsarray: (CFXMLTreeRef) tree;
|
||||
|
||||
- (void) setversionstring: (CFXMLTreeRef) tree;
|
||||
|
||||
- (void) flattenimagechildren: (CFXMLTreeRef) tree into: (NSMutableDictionary *) dictionary;
|
||||
|
||||
- (void) flattensourceattributes: (CFXMLNodeRef) node into: (NSMutableDictionary *) dictionary;
|
||||
|
||||
- (CFXMLTreeRef) getchanneltree: (CFXMLTreeRef) tree;
|
||||
|
||||
- (CFXMLTreeRef) getnamedtree: (CFXMLTreeRef) currentTree name: (NSString *) name;
|
||||
|
||||
- (void) normalizeRSSItem: (NSMutableDictionary *) rssItem;
|
||||
|
||||
- (NSString *) getelementvalue: (CFXMLTreeRef) tree;
|
||||
|
||||
@end
|
||||
@@ -6,22 +6,21 @@
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#ifndef SUAPPCAST_H
|
||||
#define SUAPPCAST_H
|
||||
|
||||
@class RSS, SUAppcastItem;
|
||||
@interface SUAppcast : NSObject {
|
||||
NSArray *items;
|
||||
id delegate;
|
||||
}
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SUExport.h"
|
||||
|
||||
- (void)fetchAppcastFromURL:(NSURL *)url;
|
||||
- (void)setDelegate:delegate;
|
||||
@class SUAppcastItem;
|
||||
SU_EXPORT @interface SUAppcast : NSObject<NSURLDownloadDelegate>
|
||||
|
||||
- (SUAppcastItem *)newestItem;
|
||||
- (NSArray *)items;
|
||||
@property (copy) NSString *userAgentString;
|
||||
@property (copy) NSDictionary *httpHeaders;
|
||||
|
||||
- (void)fetchAppcastFromURL:(NSURL *)url completionBlock:(void (^)(NSError *))err;
|
||||
|
||||
@property (readonly, copy) NSArray *items;
|
||||
@end
|
||||
|
||||
@interface NSObject (SUAppcastDelegate)
|
||||
- appcastDidFinishLoading:(SUAppcast *)appcast;
|
||||
@end
|
||||
#endif
|
||||
|
||||
@@ -6,52 +6,39 @@
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#ifndef SUAPPCASTITEM_H
|
||||
#define SUAPPCASTITEM_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SUExport.h"
|
||||
|
||||
@interface SUAppcastItem : NSObject {
|
||||
NSString *title;
|
||||
NSDate *date;
|
||||
NSString *description;
|
||||
|
||||
NSURL *releaseNotesURL;
|
||||
|
||||
NSString *DSASignature;
|
||||
NSString *MD5Sum;
|
||||
|
||||
NSURL *fileURL;
|
||||
NSString *fileVersion;
|
||||
NSString *versionString;
|
||||
}
|
||||
SU_EXPORT @interface SUAppcastItem : NSObject
|
||||
@property (copy, readonly) NSString *title;
|
||||
@property (copy, readonly) NSDate *date;
|
||||
@property (copy, readonly) NSString *itemDescription;
|
||||
@property (strong, readonly) NSURL *releaseNotesURL;
|
||||
@property (copy, readonly) NSString *DSASignature;
|
||||
@property (copy, readonly) NSString *minimumSystemVersion;
|
||||
@property (copy, readonly) NSString *maximumSystemVersion;
|
||||
@property (strong, readonly) NSURL *fileURL;
|
||||
@property (copy, readonly) NSString *versionString;
|
||||
@property (copy, readonly) NSString *displayVersionString;
|
||||
@property (copy, readonly) NSDictionary *deltaUpdates;
|
||||
@property (strong, readonly) NSURL *infoURL;
|
||||
|
||||
// Initializes with data from a dictionary provided by the RSS class.
|
||||
- initWithDictionary:(NSDictionary *)dict;
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)dict;
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;
|
||||
|
||||
- (NSString *)title;
|
||||
- (void)setTitle:(NSString *)aTitle;
|
||||
@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
|
||||
@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
|
||||
@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;
|
||||
|
||||
- (NSDate *)date;
|
||||
- (void)setDate:(NSDate *)aDate;
|
||||
// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
|
||||
@property (readonly, copy) NSDictionary *propertiesDictionary;
|
||||
|
||||
- (NSString *)description;
|
||||
- (void)setDescription:(NSString *)aDescription;
|
||||
|
||||
- (NSURL *)releaseNotesURL;
|
||||
- (void)setReleaseNotesURL:(NSURL *)aReleaseNotesURL;
|
||||
|
||||
- (NSString *)DSASignature;
|
||||
- (void)setDSASignature:(NSString *)aDSASignature;
|
||||
|
||||
- (NSString *)MD5Sum;
|
||||
- (void)setMD5Sum:(NSString *)aMd5Sum;
|
||||
|
||||
- (NSURL *)fileURL;
|
||||
- (void)setFileURL:(NSURL *)aFileURL;
|
||||
|
||||
- (NSString *)fileVersion;
|
||||
- (void)setFileVersion:(NSString *)aFileVersion;
|
||||
|
||||
- (NSString *)versionString;
|
||||
- (void)setVersionString:(NSString *)versionString;
|
||||
- (NSURL *)infoURL;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
//
|
||||
// SUAutomaticUpdateAlert.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/18/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@class SUAppcastItem;
|
||||
@interface SUAutomaticUpdateAlert : NSWindowController {
|
||||
SUAppcastItem *updateItem;
|
||||
}
|
||||
|
||||
- initWithAppcastItem:(SUAppcastItem *)item;
|
||||
|
||||
- (IBAction)relaunchNow:sender;
|
||||
- (IBAction)relaunchLater:sender;
|
||||
|
||||
@end
|
||||
@@ -1,20 +0,0 @@
|
||||
//
|
||||
// SUConstants.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
extern NSString *SUUpdaterWillRestartNotification;
|
||||
|
||||
extern NSString *SUCheckAtStartupKey;
|
||||
extern NSString *SUFeedURLKey;
|
||||
extern NSString *SUShowReleaseNotesKey;
|
||||
extern NSString *SUSkippedVersionKey;
|
||||
extern NSString *SUScheduledCheckIntervalKey;
|
||||
extern NSString *SULastCheckTimeKey;
|
||||
extern NSString *SUExpectsDSASignatureKey;
|
||||
extern NSString *SUPublicDSAKeyKey;
|
||||
extern NSString *SUAutomaticallyUpdateKey;
|
||||
extern NSString *SUAllowsAutomaticUpdatesKey;
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// SUErrors.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by C.W. Betts on 10/13/14.
|
||||
// Copyright (c) 2014 Sparkle Project. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SUERRORS_H
|
||||
#define SUERRORS_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SUExport.h"
|
||||
|
||||
/**
|
||||
* Error domain used by Sparkle
|
||||
*/
|
||||
SU_EXPORT extern NSString *const SUSparkleErrorDomain;
|
||||
|
||||
typedef NS_ENUM(OSStatus, SUError) {
|
||||
// Appcast phase errors.
|
||||
SUAppcastParseError = 1000,
|
||||
SUNoUpdateError = 1001,
|
||||
SUAppcastError = 1002,
|
||||
SURunningFromDiskImageError = 1003,
|
||||
|
||||
// Downlaod phase errors.
|
||||
SUTemporaryDirectoryError = 2000,
|
||||
|
||||
// Extraction phase errors.
|
||||
SUUnarchivingError = 3000,
|
||||
SUSignatureError = 3001,
|
||||
|
||||
// Installation phase errors.
|
||||
SUFileCopyFailure = 4000,
|
||||
SUAuthenticationFailure = 4001,
|
||||
SUMissingUpdateError = 4002,
|
||||
SUMissingInstallerToolError = 4003,
|
||||
SURelaunchError = 4004,
|
||||
SUInstallationError = 4005,
|
||||
SUDowngradeError = 4006,
|
||||
|
||||
// System phase errors
|
||||
SUSystemPowerOffError = 5000
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// SUExport.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Jake Petroules on 2014-08-23.
|
||||
// Copyright (c) 2014 Sparkle Project. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SUEXPORT_H
|
||||
#define SUEXPORT_H
|
||||
|
||||
#ifdef BUILDING_SPARKLE
|
||||
#define SU_EXPORT __attribute__((visibility("default")))
|
||||
#else
|
||||
#define SU_EXPORT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// SUStandardVersionComparator.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 12/21/07.
|
||||
// Copyright 2007 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SUSTANDARDVERSIONCOMPARATOR_H
|
||||
#define SUSTANDARDVERSIONCOMPARATOR_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SUExport.h"
|
||||
#import "SUVersionComparisonProtocol.h"
|
||||
|
||||
/*!
|
||||
Sparkle's default version comparator.
|
||||
|
||||
This comparator is adapted from MacPAD, by Kevin Ballard.
|
||||
It's "dumb" in that it does essentially string comparison,
|
||||
in components split by character type.
|
||||
*/
|
||||
SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
|
||||
|
||||
/*!
|
||||
Returns a singleton instance of the comparator.
|
||||
*/
|
||||
+ (SUStandardVersionComparator *)defaultComparator;
|
||||
|
||||
/*!
|
||||
Compares version strings through textual analysis.
|
||||
|
||||
See the implementation for more details.
|
||||
*/
|
||||
- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -1,26 +0,0 @@
|
||||
//
|
||||
// SUStatusChecker.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Evan Schoenberg on 7/6/06.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <Sparkle/SUUpdater.h>
|
||||
|
||||
@class SUStatusChecker;
|
||||
|
||||
@protocol SUStatusCheckerDelegate <NSObject>
|
||||
//versionString will be nil and isNewVersion will be NO if version checking fails.
|
||||
- (void)statusChecker:(SUStatusChecker *)statusChecker foundVersion:(NSString *)versionString isNewVersion:(BOOL)isNewVersion;
|
||||
@end
|
||||
|
||||
@interface SUStatusChecker : SUUpdater {
|
||||
id<SUStatusCheckerDelegate> scDelegate;
|
||||
}
|
||||
|
||||
// Create a status checker which will notifiy delegate once the appcast version is determined.
|
||||
// Notification occurs via the method defined in the SUStatusCheckerDelegate informal protocol.
|
||||
+ (SUStatusChecker *)statusCheckerForDelegate:(id<SUStatusCheckerDelegate>)delegate;
|
||||
|
||||
@end
|
||||
@@ -1,33 +0,0 @@
|
||||
//
|
||||
// SUStatusController.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/14/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface SUStatusController : NSWindowController {
|
||||
double progressValue, maxProgressValue;
|
||||
NSString *title, *statusText, *buttonTitle;
|
||||
IBOutlet NSButton *actionButton;
|
||||
}
|
||||
|
||||
// Pass 0 for the max progress value to get an indeterminate progress bar.
|
||||
// Pass nil for the status text to not show it.
|
||||
- (void)beginActionWithTitle:(NSString *)title maxProgressValue:(double)maxProgressValue statusText:(NSString *)statusText;
|
||||
|
||||
// If isDefault is YES, the button's key equivalent will be \r.
|
||||
- (void)setButtonTitle:(NSString *)buttonTitle target:target action:(SEL)action isDefault:(BOOL)isDefault;
|
||||
- (void)setButtonEnabled:(BOOL)enabled;
|
||||
|
||||
- (double)progressValue;
|
||||
- (void)setProgressValue:(double)value;
|
||||
- (double)maxProgressValue;
|
||||
- (void)setMaxProgressValue:(double)value;
|
||||
|
||||
- (void)setStatusText:(NSString *)statusText;
|
||||
|
||||
@end
|
||||
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// SUUnarchiver.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface SUUnarchiver : NSObject {
|
||||
id delegate;
|
||||
}
|
||||
|
||||
- (void)unarchivePath:(NSString *)path;
|
||||
- (void)setDelegate:delegate;
|
||||
|
||||
@end
|
||||
|
||||
@interface NSObject (SUUnarchiverDelegate)
|
||||
- (void)unarchiver:(SUUnarchiver *)unarchiver extractedLength:(long)length;
|
||||
- (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver;
|
||||
- (void)unarchiverDidFail:(SUUnarchiver *)unarchiver;
|
||||
@end
|
||||
@@ -1,40 +0,0 @@
|
||||
//
|
||||
// SUUpdateAlert.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/12/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SUInstallUpdateChoice,
|
||||
SURemindMeLaterChoice,
|
||||
SUSkipThisVersionChoice
|
||||
} SUUpdateAlertChoice;
|
||||
|
||||
@class WebView, SUAppcastItem;
|
||||
@interface SUUpdateAlert : NSWindowController {
|
||||
SUAppcastItem *updateItem;
|
||||
id delegate;
|
||||
|
||||
IBOutlet WebView *releaseNotesView;
|
||||
IBOutlet NSTextField *description;
|
||||
NSProgressIndicator *releaseNotesSpinner;
|
||||
BOOL webViewFinishedLoading;
|
||||
}
|
||||
|
||||
- initWithAppcastItem:(SUAppcastItem *)item;
|
||||
- (void)setDelegate:delegate;
|
||||
|
||||
- (IBAction)installUpdate:sender;
|
||||
- (IBAction)skipThisVersion:sender;
|
||||
- (IBAction)remindMeLater:sender;
|
||||
|
||||
@end
|
||||
|
||||
@interface NSObject (SUUpdateAlertDelegate)
|
||||
- (void)updateAlert:(SUUpdateAlert *)updateAlert finishedWithChoice:(SUUpdateAlertChoice)updateChoice;
|
||||
@end
|
||||
@@ -6,50 +6,359 @@
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#ifndef SUUPDATER_H
|
||||
#define SUUPDATER_H
|
||||
|
||||
// Before you use Sparkle in your app, you must set SUFeedURL in Info.plist to the
|
||||
// address of the appcast on your webserver. If you don't already have an
|
||||
// appcast, please see the Sparkle documentation to learn about how to set one up.
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "SUExport.h"
|
||||
#import "SUVersionComparisonProtocol.h"
|
||||
#import "SUVersionDisplayProtocol.h"
|
||||
|
||||
// .zip, .dmg, .tar, .tbz, .tgz archives are supported at this time.
|
||||
@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast;
|
||||
|
||||
// By default, Sparkle offers to show the user the release notes of the build they'll be
|
||||
// getting, which it assumes are in the description (or body) field of the relevant RSS item.
|
||||
// Set SUShowReleaseNotes to <false/> in Info.plist to hide the button.
|
||||
@protocol SUUpdaterDelegate;
|
||||
|
||||
@class SUAppcastItem, SUUpdateAlert, SUStatusController;
|
||||
@interface SUUpdater : NSObject {
|
||||
SUAppcastItem *updateItem;
|
||||
|
||||
SUStatusController *statusController;
|
||||
SUUpdateAlert *updateAlert;
|
||||
|
||||
NSURLDownload *downloader;
|
||||
NSString *downloadPath;
|
||||
|
||||
NSTimer *checkTimer;
|
||||
NSTimeInterval checkInterval;
|
||||
|
||||
BOOL verbose;
|
||||
BOOL updateInProgress;
|
||||
}
|
||||
/*!
|
||||
The main API in Sparkle for controlling the update mechanism.
|
||||
|
||||
// This IBAction is meant for a main menu item. Hook up any menu item to this action,
|
||||
// and Sparkle will check for updates and report back its findings verbosely.
|
||||
- (IBAction)checkForUpdates:sender;
|
||||
This class is used to configure the update paramters as well as manually
|
||||
and automatically schedule and control checks for updates.
|
||||
*/
|
||||
SU_EXPORT @interface SUUpdater : NSObject
|
||||
|
||||
// This method is similar to the above, but it's intended for updates initiated by
|
||||
// the computer instead of by the user. It does not alert the user when he is up to date,
|
||||
// and it remains silent about network errors in fetching the feed. This is what you
|
||||
// want to call to update programmatically; only use checkForUpdates: with buttons and menu items.
|
||||
@property (unsafe_unretained) IBOutlet id<SUUpdaterDelegate> delegate;
|
||||
|
||||
+ (SUUpdater *)sharedUpdater;
|
||||
+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
|
||||
- (instancetype)initForBundle:(NSBundle *)bundle;
|
||||
|
||||
@property (readonly, strong) NSBundle *hostBundle;
|
||||
@property (strong, readonly) NSBundle *sparkleBundle;
|
||||
|
||||
@property BOOL automaticallyChecksForUpdates;
|
||||
|
||||
@property NSTimeInterval updateCheckInterval;
|
||||
|
||||
/*!
|
||||
* The URL of the appcast used to download update information.
|
||||
*
|
||||
* This property must be called on the main thread.
|
||||
*/
|
||||
@property (copy) NSURL *feedURL;
|
||||
|
||||
@property (nonatomic, copy) NSString *userAgentString;
|
||||
|
||||
@property (copy) NSDictionary *httpHeaders;
|
||||
|
||||
@property BOOL sendsSystemProfile;
|
||||
|
||||
@property BOOL automaticallyDownloadsUpdates;
|
||||
|
||||
/*!
|
||||
Explicitly checks for updates and displays a progress dialog while doing so.
|
||||
|
||||
This method is meant for a main menu item.
|
||||
Connect any menu item to this action in Interface Builder,
|
||||
and Sparkle will check for updates and report back its findings verbosely
|
||||
when it is invoked.
|
||||
*/
|
||||
- (IBAction)checkForUpdates:(id)sender;
|
||||
|
||||
/*!
|
||||
Checks for updates, but does not display any UI unless an update is found.
|
||||
|
||||
This is meant for programmatically initating a check for updates. That is,
|
||||
it will display no UI unless it actually finds an update, in which case it
|
||||
proceeds as usual.
|
||||
|
||||
If the fully automated updating is turned on, however, this will invoke that
|
||||
behavior, and if an update is found, it will be downloaded and prepped for
|
||||
installation.
|
||||
*/
|
||||
- (void)checkForUpdatesInBackground;
|
||||
|
||||
// This method allows you to schedule a check to run every time interval. You can
|
||||
// pass 0 to this method to cancel a previously scheduled timer. You probably don't want
|
||||
// to call this directly: if you set a SUScheduledCheckInterval key in Info.plist or
|
||||
// the user defaults, Sparkle will set this up for you automatically on startup. You might
|
||||
// just want to call this every time the user changes the setting in the preferences.
|
||||
- (void)scheduleCheckWithInterval:(NSTimeInterval)interval;
|
||||
/*!
|
||||
Checks for updates and, if available, immediately downloads and installs them.
|
||||
A progress dialog is shown but the user will never be prompted to read the
|
||||
release notes.
|
||||
|
||||
You may want to respond to the userDidCancelDownload delegate method in case
|
||||
the user clicks the "Cancel" button while the update is downloading.
|
||||
*/
|
||||
- (void)installUpdatesIfAvailable;
|
||||
|
||||
@end
|
||||
/*!
|
||||
Returns the date of last update check.
|
||||
|
||||
\returns \c nil if no check has been performed.
|
||||
*/
|
||||
@property (readonly, copy) NSDate *lastUpdateCheckDate;
|
||||
|
||||
/*!
|
||||
Begins a "probing" check for updates which will not actually offer to
|
||||
update to that version.
|
||||
|
||||
However, the delegate methods
|
||||
SUUpdaterDelegate::updater:didFindValidUpdate: and
|
||||
SUUpdaterDelegate::updaterDidNotFindUpdate: will be called,
|
||||
so you can use that information in your UI.
|
||||
*/
|
||||
- (void)checkForUpdateInformation;
|
||||
|
||||
/*!
|
||||
Appropriately schedules or cancels the update checking timer according to
|
||||
the preferences for time interval and automatic checks.
|
||||
|
||||
This call does not change the date of the next check,
|
||||
but only the internal NSTimer.
|
||||
*/
|
||||
- (void)resetUpdateCycle;
|
||||
|
||||
@property (readonly) BOOL updateInProgress;
|
||||
|
||||
@end
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// SUUpdater Notifications for events that might be interesting to more than just the delegate
|
||||
// The updater will be the notification object
|
||||
// -----------------------------------------------------------------------------
|
||||
SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
|
||||
SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
|
||||
SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
|
||||
SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
|
||||
#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
|
||||
#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
|
||||
|
||||
// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
|
||||
SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
|
||||
// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
|
||||
SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// SUUpdater Delegate:
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
/*!
|
||||
Provides methods to control the behavior of an SUUpdater object.
|
||||
*/
|
||||
@protocol SUUpdaterDelegate <NSObject>
|
||||
@optional
|
||||
|
||||
/*!
|
||||
Returns whether to allow Sparkle to pop up.
|
||||
|
||||
For example, this may be used to prevent Sparkle from interrupting a setup assistant.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Returns additional parameters to append to the appcast URL's query string.
|
||||
|
||||
This is potentially based on whether or not Sparkle will also be sending along the system profile.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param sendingProfile Whether the system profile will also be sent.
|
||||
|
||||
\return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
|
||||
*/
|
||||
- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
|
||||
|
||||
/*!
|
||||
Returns a custom appcast URL.
|
||||
|
||||
Override this to dynamically specify the entire URL.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Returns whether Sparkle should prompt the user about automatic update checks.
|
||||
|
||||
Use this to override the default behavior.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called after Sparkle has downloaded the appcast from the remote server.
|
||||
|
||||
Implement this if you want to do some special handling with the appcast once it finishes loading.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param appcast The appcast that was downloaded from the remote server.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
|
||||
|
||||
/*!
|
||||
Returns the item in the appcast corresponding to the update that should be installed.
|
||||
|
||||
If you're using special logic or extensions in your appcast,
|
||||
implement this to use your own logic for finding a valid update, if any,
|
||||
in the given appcast.
|
||||
|
||||
\param appcast The appcast that was downloaded from the remote server.
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called when a valid update is found by the update driver.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that is proposed to be installed.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
|
||||
|
||||
/*!
|
||||
Called when a valid update is not found.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called immediately before downloading the specified update.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that is proposed to be downloaded.
|
||||
\param request The mutable URL request that will be used to download the update.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
|
||||
|
||||
/*!
|
||||
Called after the specified update failed to download.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that failed to download.
|
||||
\param error The error generated by the failed download.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
|
||||
|
||||
/*!
|
||||
Called when the user clicks the cancel button while and update is being downloaded.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (void)userDidCancelDownload:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called immediately before installing the specified update.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that is proposed to be installed.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
|
||||
|
||||
/*!
|
||||
Returns whether the relaunch should be delayed in order to perform other tasks.
|
||||
|
||||
This is not called if the user didn't relaunch on the previous update,
|
||||
in that case it will immediately restart.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that is proposed to be installed.
|
||||
\param invocation The invocation that must be completed before continuing with the relaunch.
|
||||
|
||||
\return \c YES to delay the relaunch until \p invocation is invoked.
|
||||
*/
|
||||
- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
|
||||
|
||||
/*!
|
||||
Returns whether the application should be relaunched at all.
|
||||
|
||||
Some apps \b cannot be relaunched under certain circumstances.
|
||||
This method can be used to explicitly prevent a relaunch.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called immediately before relaunching.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Returns an object that compares version numbers to determine their arithmetic relation to each other.
|
||||
|
||||
This method allows you to provide a custom version comparator.
|
||||
If you don't implement this method or return \c nil,
|
||||
the standard version comparator will be used.
|
||||
|
||||
\sa SUStandardVersionComparator
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Returns an object that formats version numbers for display to the user.
|
||||
|
||||
If you don't implement this method or return \c nil,
|
||||
the standard version formatter will be used.
|
||||
|
||||
\sa SUUpdateAlert
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (id<SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Returns the path which is used to relaunch the client after the update is installed.
|
||||
|
||||
The default is the path of the host bundle.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called before an updater shows a modal alert window,
|
||||
to give the host the opportunity to hide attached windows that may get in the way.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (void)updaterWillShowModalAlert:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called after an updater shows a modal alert window,
|
||||
to give the host the opportunity to hide attached windows that may get in the way.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
*/
|
||||
- (void)updaterDidShowModalAlert:(SUUpdater *)updater;
|
||||
|
||||
/*!
|
||||
Called when an update is scheduled to be silently installed on quit.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that is proposed to be installed.
|
||||
\param invocation Can be used to trigger an immediate silent install and relaunch.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
|
||||
|
||||
/*!
|
||||
Calls after an update that was scheduled to be silently installed on quit has been canceled.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param item The appcast item corresponding to the update that was proposed to be installed.
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item;
|
||||
|
||||
/*!
|
||||
Called after an update is aborted due to an error.
|
||||
|
||||
\param updater The SUUpdater instance.
|
||||
\param error The error that caused the abort
|
||||
*/
|
||||
- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
//
|
||||
// SUUtilities.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/12/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
id SUInfoValueForKey(NSString *key);
|
||||
NSString *SUHostAppName();
|
||||
NSString *SUHostAppDisplayName();
|
||||
NSString *SUHostAppVersion();
|
||||
NSString *SUHostAppVersionString();
|
||||
|
||||
NSComparisonResult SUStandardVersionComparison(NSString * versionA, NSString * versionB);
|
||||
|
||||
// If running make localizable-strings for genstrings, ignore the error on this line.
|
||||
NSString *SULocalizedString(NSString *key, NSString *comment);
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// SUVersionComparisonProtocol.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 12/21/07.
|
||||
// Copyright 2007 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SUVERSIONCOMPARISONPROTOCOL_H
|
||||
#define SUVERSIONCOMPARISONPROTOCOL_H
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "SUExport.h"
|
||||
|
||||
/*!
|
||||
Provides version comparison facilities for Sparkle.
|
||||
*/
|
||||
@protocol SUVersionComparison
|
||||
|
||||
/*!
|
||||
An abstract method to compare two version strings.
|
||||
|
||||
Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,
|
||||
and NSOrderedSame if they are equivalent.
|
||||
*/
|
||||
- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// SUVersionDisplayProtocol.h
|
||||
// EyeTV
|
||||
//
|
||||
// Created by Uli Kusterer on 08.12.09.
|
||||
// Copyright 2009 Elgato Systems GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "SUExport.h"
|
||||
|
||||
/*!
|
||||
Applies special display formatting to version numbers.
|
||||
*/
|
||||
@protocol SUVersionDisplay
|
||||
|
||||
/*!
|
||||
Formats two version strings.
|
||||
|
||||
Both versions are provided so that important distinguishing information
|
||||
can be displayed while also leaving out unnecessary/confusing parts.
|
||||
*/
|
||||
- (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB;
|
||||
|
||||
@end
|
||||
@@ -2,21 +2,24 @@
|
||||
// Sparkle.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SUUpdater.h"
|
||||
#import "SUUtilities.h"
|
||||
#import "SUConstants.h"
|
||||
#ifndef SPARKLE_H
|
||||
#define SPARKLE_H
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
|
||||
// there are name-space collisions) so we can list all of them to start with:
|
||||
|
||||
#import "SUAppcast.h"
|
||||
#import "SUAppcastItem.h"
|
||||
#import "SUUpdateAlert.h"
|
||||
#import "SUAutomaticUpdateAlert.h"
|
||||
#import "SUStatusController.h"
|
||||
#import "SUUnarchiver.h"
|
||||
#import "SUStatusChecker.h"
|
||||
#import "SUStandardVersionComparator.h"
|
||||
#import "SUUpdater.h"
|
||||
#import "SUVersionComparisonProtocol.h"
|
||||
#import "SUVersionDisplayProtocol.h"
|
||||
#import "SUErrors.h"
|
||||
|
||||
#import "NSApplication+AppCopies.h"
|
||||
#import "NSFileManager+Authentication.h"
|
||||
#import "NSFileManager+Verification.h"
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module Sparkle {
|
||||
umbrella header "Sparkle.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// SUUnarchiver.h
|
||||
// Sparkle
|
||||
//
|
||||
// Created by Andy Matuschak on 3/16/06.
|
||||
// Copyright 2006 Andy Matuschak. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SUUNARCHIVER_H
|
||||
#define SUUNARCHIVER_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class SUHost;
|
||||
@protocol SUUnarchiverDelegate;
|
||||
|
||||
@interface SUUnarchiver : NSObject
|
||||
|
||||
@property (copy, readonly) NSString *archivePath;
|
||||
@property (copy, readonly) NSString *updateHostBundlePath;
|
||||
@property (weak) id<SUUnarchiverDelegate> delegate;
|
||||
|
||||
+ (SUUnarchiver *)unarchiverForPath:(NSString *)path updatingHostBundlePath:(NSString *)host;
|
||||
|
||||
- (void)start;
|
||||
@end
|
||||
|
||||
@protocol SUUnarchiverDelegate <NSObject>
|
||||
- (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver;
|
||||
- (void)unarchiverDidFail:(SUUnarchiver *)unarchiver;
|
||||
@optional
|
||||
- (void)unarchiver:(SUUnarchiver *)unarchiver extractedProgress:(double)progress;
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>15C50</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Autoupdate</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkle-project.Sparkle.Autoupdate</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.13.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.13.0</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>7C68</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>15C43</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.11</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0720</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>7C68</string>
|
||||
<key>LSBackgroundOnly</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.7</string>
|
||||
<key>LSUIElement</key>
|
||||
<string>1</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Executable
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
||||
APPL????
|
||||
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user