Compare commits

..

1 Commits

Author SHA1 Message Date
Kazuki Sakamoto 5bf1f8e73d iTerm2 PSMTabBarControl
https://github.com/gnachman/iTerm2/tree/master/ThirdParty/PSMTabBarControl
2016-10-01 23:48:20 -07:00
156 changed files with 5615 additions and 8952 deletions
+1 -5
View File
@@ -1,6 +1,6 @@
" Vim autoload file for editing compressed files.
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Sep 28
" Last Change: 2014 Nov 05
" These functions are used by the gzip plugin.
@@ -63,9 +63,6 @@ fun gzip#read(cmd)
" set 'modifiable'
let ma_save = &ma
setlocal ma
" set 'write'
let write_save = &write
set write
" Reset 'foldenable', otherwise line numbers get adjusted.
if has("folding")
let fen_save = &fen
@@ -130,7 +127,6 @@ fun gzip#read(cmd)
let &pm = pm_save
let &cpo = cpo_save
let &l:ma = ma_save
let &write = write_save
if has("folding")
let &l:fen = fen_save
endif
+5 -14
View File
@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.0. Last change: 2016 Sep 27
*autocmd.txt* For Vim version 8.0. Last change: 2016 Sep 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -79,15 +79,11 @@ exception is that "<sfile>" is expanded when the autocmd is defined. Example:
Here Vim expands <sfile> to the name of the file containing this line.
`:autocmd` adds to the list of autocommands regardless of whether they are
already present. When your .vimrc file is sourced twice, the autocommands
will appear twice. To avoid this, define your autocommands in a group, so
that you can easily clear them: >
When your .vimrc file is sourced twice, the autocommands will appear twice.
To avoid this, put this command in your .vimrc file, before defining
autocommands: >
augroup vimrc
autocmd! " Remove all vimrc autocommands
au BufNewFile,BufRead *.html so <sfile>:h/html.vim
augroup END
:autocmd! " Remove ALL autocommands for the current group.
If you don't want to remove all autocommands, you can instead use a variable
to ensure that Vim includes the autocommands only once: >
@@ -134,13 +130,8 @@ prompt. When one command outputs two messages this can happen anyway.
:au[tocmd]! [group] {event}
Remove ALL autocommands for {event}.
Warning: You should not do this without a group for
|BufRead| and other common events, it can break
plugins, syntax highlighting, etc.
:au[tocmd]! [group] Remove ALL autocommands.
Warning: You should normally not do this without a
group, it breaks plugins, syntax highlighting, etc.
When the [group] argument is not given, Vim uses the current group (as defined
with ":augroup"); otherwise, Vim uses the group defined with [group].
+3 -2
View File
@@ -1,4 +1,4 @@
*change.txt* For Vim version 8.0. Last change: 2016 Oct 02
*change.txt* For Vim version 8.0. Last change: 2016 Sep 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -913,7 +913,8 @@ Exceptions:
Substitute with an expression *sub-replace-expression*
*sub-replace-\=* *s/\=*
When the substitute string starts with "\=" the remainder is interpreted as an
expression.
expression. This does not work recursively: a |substitute()| function inside
the expression cannot use "\=" for the substitute string.
The special meaning for characters as mentioned at |sub-replace-special| does
not apply except for "<CR>". A <NL> character is used as a line break, you
+2 -7
View File
@@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.0. Last change: 2016 Sep 29
*channel.txt* For Vim version 8.0. Last change: 2016 Sep 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -465,11 +465,6 @@ it like this: >
Without the handler you need to read the output with |ch_read()| or
|ch_readraw()|. You can do this in the close callback, see |read-in-close-cb|.
Note that if the job exits before you read the output, the output may be lost.
This depends on the system (on Unix this happens because closing the write end
of a pipe causes the read end to get EOF). To avoid this make the job sleep
for a short while before it exits.
The handler defined for "out_cb" will not receive stderr. If you want to
handle that separately, add an "err_cb" handler: >
let job = job_start(command, {"out_cb": "MyHandler",
@@ -521,7 +516,7 @@ If the job can take some time and you don't need intermediate results, you can
add a close callback and read the output there: >
func! CloseHandler(channel)
while ch_status(a:channel, {'part': 'out'}) == 'buffered'
while ch_status(a:channel) == 'buffered'
echomsg ch_read(a:channel)
endwhile
endfunc
+3 -4
View File
@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.0. Last change: 2016 Sep 27
*cmdline.txt* For Vim version 8.0. Last change: 2016 Aug 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -229,10 +229,9 @@ CTRL-Y When there is a modeless selection, copy the selection into
the clipboard. |modeless-selection|
If there is no selection CTRL-Y is inserted as a character.
CTRL-M or CTRL-J *c_CTRL-M* *c_CTRL-J* *c_<NL>* *c_<CR>* *c_CR*
CTRL-J *c_CTRL-J* *c_<NL>* *c_<CR>* *c_CR*
<CR> or <NL> start entered command
CTRL-[ *c_CTRL-[* *c_<Esc>* *c_Esc*
*c_<Esc>* *c_Esc*
<Esc> When typed and 'x' not present in 'cpoptions', quit
Command-line mode without executing. In macros or when 'x'
present in 'cpoptions', start entered command.
+2 -3
View File
@@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.0. Last change: 2016 Sep 27
*editing.txt* For Vim version 8.0. Last change: 2016 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -181,8 +181,7 @@ start editing another file, Vim will refuse this. In order to overrule this
protection, add a '!' to the command. The changes will then be lost. For
example: ":q" will not work if the buffer was changed, but ":q!" will. To see
whether the buffer was changed use the "CTRL-G" command. The message includes
the string "[Modified]" if the buffer has been changed, or "+" if the 'm' flag
is in 'shortmess'.
the string "[Modified]" if the buffer has been changed.
If you want to automatically save the changes without asking, switch on the
'autowriteall' option. 'autowrite' is the associated Vi-compatible option
+7 -10
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.0. Last change: 2016 Oct 02
*eval.txt* For Vim version 8.0. Last change: 2016 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3072,7 +3072,7 @@ ch_log({msg} [, {handle}]) *ch_log()*
When {handle} is passed the channel number is used for the
message.
{handle} can be Channel or a Job that has a Channel. The
Channel must be open for the channel number to be used.
Channel must open.
ch_logfile({fname} [, {mode}]) *ch_logfile()*
Start logging channel activity to {fname}.
@@ -3738,7 +3738,7 @@ filter({expr1}, {expr2}) *filter()*
call filter(myList, {idx, val -> idx * val <= 42})
< If you do not use "val" you can leave it out: >
call filter(myList, {idx -> idx % 2 == 1})
<
The operation is done in-place. If you want a |List| or
|Dictionary| to remain unmodified make a copy first: >
:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
@@ -4369,7 +4369,7 @@ getfperm({fname}) *getfperm()*
< This will hopefully (from a security point of view) display
the string "rw-r--r--" or even "rw-------".
For setting permissions use |setfperm()|.
For setting permissins use |setfperm()|.
getftime({fname}) *getftime()*
The result is a Number, which is the last modification time of
@@ -6168,9 +6168,9 @@ range({expr} [, {max} [, {stride}]]) *range()*
*readfile()*
readfile({fname} [, {binary} [, {max}]])
Read file {fname} and return a |List|, each line of the file
as an item. Lines are broken at NL characters. Macintosh
files separated with CR will result in a single long line
(unless a NL appears somewhere).
as an item. Lines broken at NL characters. Macintosh files
separated with CR will result in a single long line (unless a
NL appears somewhere).
All NUL characters are replaced with a NL character.
When {binary} contains "b" binary mode is used:
- When the last line ends in a NL an extra empty list item is
@@ -7390,9 +7390,6 @@ submatch({nr}[, {list}]) *submatch()* *E935*
|substitute()| this list will always contain one or zero
items, since there are no real line breaks.
When substitute() is used recursively only the submatches in
the current (deepest) call can be obtained.
Example: >
:s/\d\+/\=submatch(0) + 1/
< This finds the first number in the line and adds one to it.
+7 -5
View File
@@ -207,19 +207,21 @@ MS-Windows ~
You need to install the right version of Ruby for this to work. You can find
the package to download from:
http://rubyinstaller.org/downloads/
Currently that is rubyinstaller-2.2.5.exe
http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
Currently that is ruby-1.9.2-p136-i386-mswin32.zip
To use the Ruby interface the Ruby DLL must be in your search path. In a
console window type "path" to see what directories are used. The 'rubydll'
option can be also used to specify the Ruby DLL.
The name of the DLL must match the Ruby version Vim was compiled with.
Currently the name is "msvcrt-ruby220.dll". That is for Ruby 2.2.X. To know
Currently the name is "msvcrt-ruby191.dll". That is for Ruby 1.9.1. To know
for sure edit "gvim.exe" and search for "ruby\d*.dll\c".
If you want to build Vim with RubyInstaller 1.9 or 2.X using MSVC, you need
some tricks. See the src/INSTALLpc.txt for detail.
If you want to build Vim with Ruby 1.9.1, you need to edit the config.h file
and comment-out the check for _MSC_VER.
You may also need to rename the include directory name to match the version,
strangely for Ruby 1.9.3 the directory is called 1.9.1.
Unix ~
+3 -3
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 8.0. Last change: 2016 Sep 27
*index.txt* For Vim version 8.0. Last change: 2016 Aug 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1002,7 +1002,7 @@ tag command action in Command-line editing mode ~
|c_CTRL-L| CTRL-L do completion on the pattern in front of the
cursor and insert the longest common part
|c_<CR>| <CR> execute entered command
|c_CTRL-M| CTRL-M same as <CR>
|c_<CR>| CTRL-M same as <CR>
|c_CTRL-N| CTRL-N after using 'wildchar' with multiple matches:
go to next match, otherwise: same as <Down>
CTRL-O not used
@@ -1026,7 +1026,7 @@ tag command action in Command-line editing mode ~
CTRL-Y copy (yank) modeless selection
CTRL-Z not used (reserved for suspend)
|c_<Esc>| <Esc> abandon command-line without executing it
|c_CTRL-[| CTRL-[ same as <Esc>
|c_<Esc>| CTRL-[ same as <Esc>
|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode, abandon command-line
|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode',
abandon command-line
+5 -6
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2016 Oct 01
*options.txt* For Vim version 8.0. Last change: 2016 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -10,7 +10,7 @@ Options *options*
2. Automatically setting options |auto-setting|
3. Options summary |option-summary|
For an overview of options see quickref.txt |option-list|.
For an overview of options see help.txt |option-list|.
Vim has a number of internal variables and switches which can be set to
achieve special effects. These options come in three forms:
@@ -1747,12 +1747,12 @@ A jump table for the options with a short description can be found at |Q_op|.
option + set value effect ~
'allowrevins' off no CTRL-_ command
'backupcopy' Unix: "yes" backup file is a copy
others: "auto" copy or rename backup file
'backspace' "" normal backspace
'backupcopy' Unix: "yes" backup file is a copy
else: "auto" copy or rename backup file
'backup' off no backup file
'cedit' + "" no key to open the |cmdwin|
'cindent' off no C code indentation
'cedit' + "" no key to open the |cmdwin|
'cpoptions' + (all flags) Vi-compatible flags
'cscopetag' off don't use cscope for ":tag"
'cscopetagorder' 0 see |cscopetagorder|
@@ -1794,7 +1794,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'textwidth' 0 no automatic line wrap
'tildeop' off tilde is not an operator
'ttimeout' off no terminal timeout
'viminfo' + {unchanged} no viminfo file
'whichwrap' + "" left-right movements don't wrap
'wildchar' + CTRL-E only when the current value is <Tab>
use CTRL-E for cmdline completion
+2 -9
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.0. Last change: 2016 Sep 29
*syntax.txt* For Vim version 8.0. Last change: 2016 Sep 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3580,11 +3580,7 @@ DEFINING KEYWORDS *:syn-keyword*
DEFINING MATCHES *:syn-match*
:sy[ntax] match {group-name} [{options}]
[excludenl]
[keepend]
{pattern}
[{options}]
:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}]
This defines one match.
@@ -3593,9 +3589,6 @@ DEFINING MATCHES *:syn-match*
[excludenl] Don't make a pattern with the end-of-line "$"
extend a containing match or region. Must be
given before the pattern. |:syn-excludenl|
keepend Don't allow contained matches to go past a
match with the end pattern. See
|:syn-keepend|.
{pattern} The search pattern that defines the match.
See |:syn-pattern| below.
Note that the pattern may match more than one
-2
View File
@@ -5238,7 +5238,6 @@ c_CTRL-I cmdline.txt /*c_CTRL-I*
c_CTRL-J cmdline.txt /*c_CTRL-J*
c_CTRL-K cmdline.txt /*c_CTRL-K*
c_CTRL-L cmdline.txt /*c_CTRL-L*
c_CTRL-M cmdline.txt /*c_CTRL-M*
c_CTRL-N cmdline.txt /*c_CTRL-N*
c_CTRL-P cmdline.txt /*c_CTRL-P*
c_CTRL-Q cmdline.txt /*c_CTRL-Q*
@@ -5255,7 +5254,6 @@ c_CTRL-U cmdline.txt /*c_CTRL-U*
c_CTRL-V cmdline.txt /*c_CTRL-V*
c_CTRL-W cmdline.txt /*c_CTRL-W*
c_CTRL-Y cmdline.txt /*c_CTRL-Y*
c_CTRL-[ cmdline.txt /*c_CTRL-[*
c_CTRL-\_CTRL-G intro.txt /*c_CTRL-\\_CTRL-G*
c_CTRL-\_CTRL-N intro.txt /*c_CTRL-\\_CTRL-N*
c_CTRL-\_e cmdline.txt /*c_CTRL-\\_e*
+280 -22
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2016 Oct 01
*todo.txt* For Vim version 8.0. Last change: 2016 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,11 +34,27 @@ not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Move test71 tests to test_crypt.
Idea from Sven: record sequence of keys. Useful to show others what they are
doing (look over the shoulder), and also to see what happened.
Probably list of keystrokes, with some annotations for mode changes.
Could store in logfile to be able to analyise it with an external command.
E.g. to see when's the last time a plugin command was used.
Patch for typos. (Matthew Brener, 2016 Sep 16, #1088)
Lots of its to it's.
After 8.0 is released:
- Drop support for older MS-Windows systems, before XP.
Patch from Ken Takata, updated 2016 Sep 12.
+channel:
- channel_wait() may return an error while there is still something to read.
Perhaps try to read once more?
Possibly reproduced by Santiago Alejandro Agüero, 2016 Sep 12, 13.
Apparently select() returns an error while reading could work.
Another example from Daniel Hahler, Sep 24.
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
- Add 'cwd' argument to start_job(): directory to change to in the child.
check for valid directory before forking.
@@ -102,6 +118,11 @@ Regexp problems:
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
had_endbrace[] is set but not initialized or used.
Strang syntax highlighting problem. (Brett Stahlman, 2016 Sep 17)
Patch to convert test_command_count into new style. (Naruhiko Nishino, 2016
Sep 17)
json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?
@@ -110,8 +131,6 @@ Or avoid recursiveness.
Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
Patch to recognize tmux. (Michael Henry, 2016 Sep 29)
Once .exe with updated installer is available: Add remark to download page
about /S and /D options (Ken Takata, 2016 Apr 13)
Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases
@@ -128,9 +147,6 @@ Problem passing non-UTF-8 strings to Python 3. (Björn Linse, 2016 Sep 11,
Use ADDR_OTHER instead of ADDR_LINES for many more commands.
Add tests for using number larger than number of lines in buffer.
Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27)
Is there another solution?
Invalid behavior with NULL list. (Nikolai Pavlov, #768)
E.g. deepcopy(test_null_list())
@@ -147,17 +163,6 @@ Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)
sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
4#1038)
Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140)
Patch for systemlist(), add empty item. (thinca, Sep 30, #1135)
Adjust the documentation instead? Do include the test.
Idea from Sven: record sequence of keys. Useful to show others what they are
doing (look over the shoulder), and also to see what happened.
Probably list of keystrokes, with some annotations for mode changes.
Could store in logfile to be able to analyise it with an external command.
E.g. to see when's the last time a plugin command was used.
cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
Patch to change order of compiler flags. (Yousong Zhou, 2016 Sep 19, #1100)
@@ -195,9 +200,6 @@ Also for ":@.".
Repeating 'opfunc' in a function only works once. (Tarmean, 2016 Jul 15, #925)
Have a way to get the call stack, in a function and from an exception.
#1125
Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
@@ -228,6 +230,9 @@ the last change in any buffer? Can we use ', (, is next to .)?
Ramel Eshed: system() is much slower than job_start(), why? (Aug 26)
Patch for Python: #622. (Roland Puntaier, 2016 Feb 2)
What does it change?
Patch to make gd and gD work better for non-K&R code and with comments.
(Anton Lindqvist, 2016 Aug 29)
@@ -245,6 +250,11 @@ Patch to support strikethrough next to bold and italic. (Christian Brabandt,
Update mentioned by Christian, 2016 Apr 25.
Update from Ken Takata, 2016 Jul 17.
Patch to improve cscope. (Adrian Kocis, #843)
Patch for groovy multi-line comment highlighting. (Justin M. Keyes, 2016 May
20 #644)
When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
Because of using the initial buffer? (Dun Peal, 2016 May 12)
@@ -319,6 +329,9 @@ 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 test popupmenu. Fails, possibly due to a bug.
(Christian Brabandt, 2016 Jul 23)
Patch to introduce 'cmdencoding'. (Ken Takata, Aug 18?)
Better help Aug 19.
Problem: applies to too many commands, such as :cbuffer.
@@ -331,6 +344,9 @@ Patch to have text objects defined by arbitrary single characters. (Daniel
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
Added tests (James McCoy, 2016 Aug 3). Still needs more work.
Patch to add CTRL-N / CTRL-P while searching. (Christian Brabandt, 2016 Aug
3) Problem: two matches in one line and using CTRL-P does not move back.
Access to uninitialized memory in match_backref() regexp_nda.c:4882
(Dominique Pelle, 2015 Nov 6)
@@ -411,6 +427,8 @@ Add "===" to have a strict comparison (type and value match).
Add "==*" (?) to have a value match, but no automatic conversion, and v:true
equals 1 and 1.0, v:false equals 0 and 0.0.?
Plugin to use Vim in MANPAGER. Konfekt, PR #491
Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
MS-Windows: When editing a file with a leading space, writing it uses the
@@ -435,6 +453,9 @@ I can't recommend it though.
Build with Python on Mac does not always use the right library.
(Kazunobu Kuriyama, 2015 Mar 28)
Need a Vim equivalent of Python's None and a way to test for it.
Use v:none. var == v:none
Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan
24) Also need a way to get the global arg list? Update later on Jan 24
Update Mar 5. Update Apr 7. Update Jun 5.
@@ -477,6 +498,10 @@ the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
Sep 10)
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
Needs a different check for CLEARTYPE_QUALITY.
Problem mentioned by Christian Brabandt, 2016 Jan 4.
Example in editing.txt uses $HOME with the expectation that it ends in a
slash. For me it does, but perhaps not for everybody. Add a function that
inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
@@ -518,6 +543,9 @@ Breaks test_eval. Inefficient, can we only compute y_width when needed?
Patch to use different terminal mode settings for system(). (Hayaki Saito)
Does this work for everybody?
Patch to add wordcount(). Same info as g CTRL-G. (Christian Brabandt, 2015
Nov 17)
Patch for man.vim. (SungHyun Nam, 2015 May 20)
Doesn't work completely (Dominique Orban)
@@ -539,6 +567,9 @@ Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
When 'balloonexpr' returns a list the result has a trailing newline.
Just remove one trailing newline. (lcd, 2014 Oct 17)
When two SIGWINCH arrive very quickly, the second one may be lost.
(Josh Triplett, 2015 Sep 17)
@@ -642,7 +673,7 @@ right-mouse-drag on the status line to move a window up/down without changing
its height? It's like dragging the status bar above it at the same time.
Can we make ":unlet $VAR" use unsetenv() to delete the env var?
What for systems that don't have unsetenv()? (Issue #1116)
What for systems that don't have unsetenv()?
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
@@ -697,6 +728,9 @@ Out of scope:
Setting the spell file in a session only reads the local additions, not the
normal spell file. (Enno Nagel, 2014 Mar 29)
CTRL-] in Visual mode uses the selected text as a tag. This does not work
when preceded with CTRL-W. (Patrick Hemmer, 2014 Jun 28)
When typing the first character of a command, e.g. "f", then using a menu, the
menu item doesn't work. Clear typeahead when using a menu?
@@ -738,6 +772,9 @@ Patch to right-align signs. (James Kolb (email james), 2013 Sep 23)
Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12)
With "$" in 'cpoptions' the popup menu isn't fully drawn. (Matti Niemenmaa,
2013 Sep 5)
Patch to add "ntab" item in 'listchars' to repeat first character. (Nathaniel
Braun, pragm, 2013 Oct 13) A better solution 2014 Mar 5.
@@ -802,6 +839,10 @@ Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}.
Exception caused by argument of return is not caught by try/catch.
(David Barnett, 2013 Nov 19)
8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when
defined.
Issue 28.
Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt,
2013 Mar 19, later message)
@@ -846,6 +887,8 @@ How to test that it works well for all Vim users?
Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
Issue 54: document behavior of -complete, also expands arg.
- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
the two into a regex for searching. (Ned Konz)
Patch by Christian Brabandt, 2013 Apr 20, unfinished.
@@ -856,11 +899,20 @@ In the ATTENTION message about an existing swap file, mention the name of the
process that is running. It might actually be some other program, e.g. after
a reboot.
Patch to select the next or previous text object if there isn't one under the
cursor. (Daniel Thau, 2013 Nov 20)
patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6)
Bug caused by patch 7.3.1288? Issue 183.
I can't reproduce it.
Syntax update problem in one buffer opened in two windows, bottom window is
not correctly updated. (Paul Harris, 2012 Feb 27)
Patch to add assignments in cscope. (Uli Meis, Estabrooks, 2012 Sep 1)
Alternate patch by Gary Johnson, Sep 4.
Patch to add getsid(). (Tyru, 2011 Oct 2) Do we want this? Update Oct 4.
Or use expand('<sid>')?
@@ -898,6 +950,10 @@ Szamotulski, 2012 Nov 8)
Session file creation: 'autochdir' causes trouble. Keep it off until after
loading all files.
Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
line are opened again, but from the wrong directory. Apply 'autochdir' only
after starting up?
8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
Patch by Christian Wellenbrock, 2013 Jul 5.
@@ -915,6 +971,9 @@ of many matches. (Cody Cutler, 2013 Mar 28)
Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22.
Help for 'b:undo_indent'. (Thilo Six, 2012 May 28)
Also question if examples are correct.
The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O.
Suggestion for another map. (Philip Mat, 2012 Jun 18)
But use "gi" instead of "a". Or use CTRL-\ CTRL-O.
@@ -991,6 +1050,8 @@ Only for MS-Windows. No documentation. Do we want this?
Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27)
Issue 64: when 'incsearch' is on can't paste LF on command line.
On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz,
2012 Jun 19)
@@ -1042,6 +1103,10 @@ When using a Vim server, a # in the path causes an error message.
Setting $HOME on MS-Windows is not very well documented. Suggestion by Ben
Fritz (2011 Oct 27).
Bug: Windows 7 64 bit system freezes when 'clipboard' set to "unnamed" and
doing ":g/test/d". Putting every delete on the clipboard? (Robert Chan, 2011
Jun 17)
When there is a ">" in a line that "gq" wraps to the start of the next line,
then the following line will pick it up as a leader. Should get the leader
from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27)
@@ -1121,6 +1186,12 @@ Is this needed? CTRL-O and CTRL-I do the same, just more difficult to use.
8 Add a command to jump to the next character highlighted with "Error".
Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9.
8 Add an event like CursorHold that is triggered repeatedly, not just once
after typing something.
Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
function that resets did_cursorhold.
Patch by Christian Brabandt, 2011 May 6.
Add event for when the text scrolls. A bit like CursorMoved. Also a similar
one for insert mode. Use the event in matchparen to update the highlight if
the match scrolls into view.
@@ -1257,6 +1328,9 @@ setwinvar().
Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
When writing a file > 2Gbyte, the reported number of bytes is negative.
(Antonio Colombo, 2010 Dec 18)
When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
instead of one. (Constantin Pan, 2010 Sep 10)
@@ -1419,6 +1493,8 @@ Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9)
Motif: Build on Ubuntu can't enter any text in dialog text fields.
When 'ft' changes redraw custom status line.
":tab split fname" doesn't set the alternate file in the original window,
because win_valid() always returns FALSE. Below win_new_tabpage() in
ex_docmd.c.
@@ -1466,6 +1542,10 @@ perhaps. And undo CTRL-W. CTRL-G l would redo.
Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
Support a 'systemencoding' option (for Unix). It specifies the encoding of
file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian
system when 'encoding' is "utf-8".
Win32 GUI: last message from startup doesn't show up when there is an echoerr
command. (Cyril Slobin, 2009 Mar 13)
@@ -1510,6 +1590,9 @@ Sergey Khorev)
Consider making YankRing or something else that keeps a list of yanked text
part of standard Vim. The "1 to "9 registers are not sufficient.
netrw: dragging status line causes selection of entry. Should check row
number to be below last visible line.
After doing "su" $HOME can be the old user's home, thus ~root/file is not
correct. Don't use it in the swap file.
@@ -1580,6 +1663,8 @@ doesn't. (John Little, 2008 Nov 9)
Shell expansion returns unexpanded string?
Don't use shell when "~" is not at the start?
":unlet $VAR" doesn't work.
When using ":e ++enc=foo file" and the file is already loaded with
'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the
fileencoding differs. Reload the buffer in this situation? Need to check for
@@ -1614,6 +1699,9 @@ command is not executed. Fix by Ian Kelling?
":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
Chase) Fix by Ian Kelling, 2008 Jul 14.
Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009
Apr 6) Or use "\u(123456)", similar to Perl.
When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
either. Matt Wozniski: nv_at() calls do_execreg() which uses
put_in_typebuf(). Char mapped twice?
@@ -1670,6 +1758,8 @@ Works OK when 'cmdheight' is 2.
that the context can be taken into account. (Robert Webb)
Patch by Christian Brabandt, 2013 May 31.
Test54 should not use shell commands. Make it portable.
The utf class table is missing some entries:
0x2212, minus sign
0x2217, star
@@ -1878,6 +1968,8 @@ patches by Mathias, see mail Feb 22)
Win32: compiling with normal features and OLE fails. Patch by Mathias
Michaelis, 2006 Jun 4.
Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22)
Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
2007 Feb 18)
Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems.
@@ -1915,6 +2007,9 @@ F1 - F4 in an xterm produce a different escape sequence when used with a
modifier key. Need to catch three different sequences. Use K_ZF1, like
K_ZHOME? (Dickey, 2007 Dec 2)
UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear
to work. (Tony Mechelynck, 2007 March 2)
In debug mode, using CTRL-R = to evaluate a function causes stepping through
the function. (Hari Krishna Dara, 2006 Jun 28)
@@ -2019,6 +2114,15 @@ When showing a diff between a non-existent file and an existing one, with the
cursor in the empty buffer, the other buffer only shows the last line. Change
the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
Add autocommand for when a tabpage is being closed. Also for when a tab page
has been created.
Using ":make" blocks Vim. Allow running one make in the background (if the
shell supports it), catch errors in a file and update the error list on the
fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake",
background make. ":bgcancel" interrupts it.
A.Politz may work on this.
These two abbreviations don't give the same result:
let asdfasdf = "xyz\<Left>"
cabbr XXX <C-R>=asdfasdf<CR>
@@ -2031,6 +2135,9 @@ In FileChangedShell command it's no longer allowed to switch to another
buffer. But the changed buffer may differ from the current buffer, how to
reload it then?
New syntax files for fstab and resolv from Radu Dineiu, David Necas did
previous version.
For Aap: include a config.arg.example file with hints how to use config.arg.
Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
@@ -2060,6 +2167,11 @@ start of the path is shown in the menu. Should move the menu to the right to
show more text of the completions. Shorten the items that don't fit in the
middle?
When running inside screen it's possible to kill the X server and restart it
(using pty's the program can keep on running). Vim dies because it loses the
connection to the X server. Can Vim simply quit using the X server instead of
dying? Also relevant when running in a console.
Accessing file#var in a function should not need the g: prepended.
When exiting detects a modified buffer, instead of opening the buffer in the
@@ -2094,6 +2206,10 @@ the cursor line. It works OK after some other commands.
Win32: Is it possible to have both postscript and Win32 printing?
Check: Running Vim in a console and still having connect to the X server for
copy/paste: is stopping the X server handled gracefully? Should catch the X
error and stop using the connection to the server.
Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
Jul 26, Gary Johnson)
@@ -2130,11 +2246,30 @@ differently and unexpectedly. Caused by patch 7.2.398?
The magic clipboard format "VimClipboard2" appears in several places. Should
be only one.
"vim -C" often has 'nocompatible', because it's set somewhere in a startup
script. Do "set compatible" after startup?
It's difficult to debug numbered functions (function in a Dictionary). Print
the function name before resolving it to a number?
let d = {}
fun! d.foo()
echo "here"
endfun
call d.foo(9)
Add a mark for the other end of the Visual area (VIsual pos). '< and '> are
only set after Visual moded is ended.
Also add a variable for the Visual mode. So that this mode and '< '> can be
used to set what "gv" selects. (Ben Schmidt)
Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
"auto" should detect this situation and work like 'backupcopy' is "yes". File
name is something like "c:\path\foo.txt:bar", includes a colon. (Alex
Jakushev, 2008 Feb 1)
printf() uses the field width in bytes. Can it be made character width,
perhaps with a modifier? What does Posix say?
Small problem displaying diff filler line when opening windows with a script.
(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 )
@@ -2155,6 +2290,8 @@ When completing from another file that uses a different encoding completion
text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is
latin1. Example from Gombault Damien, 2007 Mar 24.
Is it possible to use "foo#var" instead of "g:foo#var" inside a function?
Syntax HL: When using "nextgroup" and the group has an empty match, there is
no search at that position for another match. (Lukas Mai, 2008 April 11)
@@ -2215,6 +2352,8 @@ More patches:
- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
Needs a few tests.
- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
- Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct
21)
- Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs
patch May 10)
- Extra argument to strtrans() to translate special keys to their name (Eric
@@ -2239,6 +2378,8 @@ More patches:
Schmidt, 2008 Jul 22.
- testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008
Sep 13)
- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29,
Docs patch Oct 30, update David Burgin (glts) 2013 Aug 24, 2014 Oct 10)
- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by
Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts
more friendly for the Vim distribution.
@@ -2261,6 +2402,8 @@ Awaiting updated patches:
9 HTML indenting can be slow. Caused by using searchpair(). Can search()
be used instead? A.Politz is looking into a solution.
8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
Aric Blumer has a patch for this. He will update the patch for 6.3.
7 Completion of network shares, patch by Yasuhiro Matsumoto.
Update 2004 Sep 6.
How does this work? Missing comments.
@@ -2361,6 +2504,8 @@ Vi incompatibility:
the ":map" when it's used without arguments?
7 CTRL-L is not the end of a section? It is for Posix! Make it an option.
7 Implement 'prompt' option. Init to off when stdin is not a tty.
7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a
flag in 'cpoptions' for this.
7 Add a way to send an email for a crashed edit session. Create a file when
making changes (containing name of the swap file), delete it when writing
the file. Supply a program that can check for crashed sessions (either
@@ -2423,6 +2568,9 @@ Win32 GUI known bugs:
7 When font smoothing is enabled, redrawing can become very slow. The reason
appears to be drawing with a transparent background. Would it be possible
to use an opaque background in most places?
8 Use another default for 'termencoding': the active codepage. Means that
when 'encoding' is changed typing characters still works properly.
Alternative: use the Unicode functions to obtain typed characters.
7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan,
2004 May 9)
8 Win32: When clicking on the gvim title bar, which gives it focus, produces
@@ -2635,6 +2783,14 @@ Win32 console:
backslashes. (Ronald Hoellwarth)
Windows 95:
8 Editing a file by its short file name and writing it, makes the long file
name disappear. Setting 'backupcopy' helps.
Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly).
8 Doing wildcard expansion, will match the short filename, but result in the
long filename (both DJGPP and Win32).
Win32 console:
9 When editing a file by its short file name, it should be expanded into its
long file name, to avoid problems like these: (Mccollister)
@@ -2658,6 +2814,9 @@ Win32 console:
a Netware network drive. Use same function as for Win32 GUI?
8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
is not defined. Shouldn't that be the other way around?
7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
Avoids that input and output work differently. Need to be restored when
exiting.
Amiga:
@@ -2760,6 +2919,9 @@ Macintosh:
is currently fixed to use ".,:;!". Add an option to make this
configurable?
8 'hkmap' should probably be global-local.
9 When "$" is in 'cpoptions' and folding is active, a "C" command changes
the folds and resets w_lines_valid. The display updating doesn't work
then. (Pritesh Mistry)
8 Using ":s" in a function changes the previous replacement string. Save
"old_sub" in save_search_patterns()?
8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
@@ -2803,6 +2965,11 @@ Macintosh:
- Be able to print a window in diff mode.
- Be able to specify a colorscheme to use for printing. And a separate
one for B&W printing (if that can be detected).
8 In Visual block mode with 'lbr' set, a change command doesn't insert the
text in following lines where the linebreak changes.
9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on
Windows NT. How to install a .inf file on Windows NT and how to detect
that Windows NT is being used?
8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
block of one double-wide character, then "d" deletes only half of it.
8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert
@@ -2859,6 +3026,8 @@ Macintosh:
(e.g., ":w").
8 CTRL-A can't handle big "long" numbers, they become negative. Check for
"-" character, if not present, use unsigned long.
8 Make it possible to disable the special meaning of "#" in the first column
for ">>".
8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long
script in do_cmdline().
8 When using 'hidden', many swap files will be open. When Vim runs into the
@@ -2980,6 +3149,11 @@ Problems that will (probably) not be solved:
- Amiga: The ":cq" command does not always abort the Manx compiler. Why?
- Linux: A file with protection r--rw-rw- is seen readonly for others. The
access() function in GNU libc is probably wrong.
- MSDOS: When using smartdrive with write-back buffering, writing to a
readonly floppy will cause problems. How to test for a writable floppy
first?
- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for
names that start with a dot. These used to be illegal file names.
- When doing a CTRL-Z and typing a command for the shell, while Vim is busy
(e.g. writing a file), the command for the shell is sometimes eaten by Vim,
because the terminal mode is changed from RAW to CBREAK.
@@ -3090,6 +3264,7 @@ Documentation:
8 List of options should mention whether environment variables are expanded
or not.
8 Extend usr_27.txt a bit. (Adam Seyfarth)
7 Add a section on debugging scripts in the user manual.
9 Make the Reference Manual more precise. For each command mention:
- change to cursor position and curswant
- if it can be undone (u/CTRL-R) and redone (.)
@@ -3115,6 +3290,7 @@ Help:
- When a help item has multiple matches make it possible to use ":tn" to go
to the other matches.
- Support a way to view (and edit) .info files.
- Default mapping for help files: <Tab> to position cursor on next |:tag|.
- Implement a "sticky" help window, some help text lines that are always
displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file,
user can edit it to insert his favorite commands, new account can contain a
@@ -3138,12 +3314,20 @@ User Friendlier:
$HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
- Add a way to save local settings and mappings into a new plugin file.
":mkplugin <file>"?
8 Add ":plugininstall" command. Can be used to install a plugin file that
includes documentation. Let the user select a directory from
'runtimepath'.
" Vim plugin
<main plugin code>
" >>> plugin help start <<<
<plugin docs>
- Add mappings local to a window: ":map <window> ..."?
9 Add buffer-local menu. Should offer a choice between removing the menu or
disabling it. Be careful that tear-offs don't disappear (keep one empty
item?).
Alternative: use BufEnter and BufLeave autocommands.
8 make a vimtutor script for Amiga and other systems.
7 Add the arguments for configure to the ":version" output?
7 When Vim detects a file is being edited elsewhere and it's a gvim session
of the same user it should offer a "Raise" button, so that the other gvim
window can be displayed. (Eduard)
@@ -3162,6 +3346,7 @@ Tab pages:
7 :tabdup duplicate the tab with all its windows.
7 Option to put tab line at the left or right? Need an option to specify
its width. It's like a separate window with ":tabs" output.
7 Add local variables for each tab page?
8 Add local options for each tab page? E.g., 'diffopt' could differ between
tab pages.
7 Add local highlighting for each tab page?
@@ -3265,8 +3450,15 @@ Diff mode:
9 Instead invoking an external diff program, use builtin code. One can be
found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
It's quite big and badly documented though.
8 Also show difference with the file when editing started? Should show what
8 Use diff mode to show the changes made in a buffer (compared to the file).
Use an unnamed buffer, like doing:
new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Also show difference with the file when editing started? Should show what
can be undone. (Tom Popovich)
7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also
move it in other diff'ed buffers, so that CTRL-W commands go to the same
location.
Folding:
(commands still available: zI zJ zK zp zP zq zQ zV zy zY;
@@ -3274,6 +3466,8 @@ Folding:
8 Vertical folds: looks like vertically split windows, but the cursor moves
through the vertical separator, separator moves when scrolling.
8 Add "z/" and "z?" for searching in not folded text only.
9 Add search pattern item to only match in closed or open fold and/or fold
with certain level. Allows doing ":g/pat/cmd" to work on closed folds.
8 When a closed fold is displayed open because of 'foldminlines', the
behavior of commands is still like the fold is closed. How to make the
user aware of this?
@@ -3304,6 +3498,9 @@ Folding:
- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or
match.
- Apply a new foldlevel to a range of lines. (Steve Litt)
8 Have some way to restrict commands to not folded text. Also commands like
searches.
Multi-byte characters:
- When editing a file with both utf-8 and latin1 text Vim always falls back
@@ -3495,6 +3692,9 @@ Syntax highlighting:
8 When using a regexp for "contains=", should delay matching with it until
redrawing happens. Set a flag when a group is added, check this flag when
highlighting starts.
8 Some terminals can display colors like the GUI. Add some setting to use
GUI colors for the terminal? With something to define the escape
sequence.
7 It's possible for an item to be transparent, so that the colors of an item
lower on the stack is used. Also do this with highlighting, so that the
user can set transparent highlighting? E.g. a number in a C comment would
@@ -3700,6 +3900,9 @@ Performance:
so that we don't need to make a copy? Or avoid invoking ml_updatechunk(),
that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7)
With a patch, but does it work?
8 Instead of loading rgb.txt every time a color wasn't recognized load it
once and keep it in memory. Move the code to a common place to avoid
repeating it in various system files.
8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
9 Loading menu.vim still takes quite a bit of time. How to make it faster?
8 in_id_list() takes much time for syntax highlighting. Cache the result?
@@ -3724,6 +3927,7 @@ Performance:
http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
7 Check how performance of loading the wordlist can be improved (adding a
lot of abbreviations).
7 MS-DOS console: Add t_DL support, to make scrolling faster.
7 Compile Ex commands to byte codes. Store byte codes in a vim script file
at the end, after "compiled:. Make it look like a single comment line
for old Vim versions. Insert first line "Vim script compiled <timestamp>.
@@ -3848,6 +4052,8 @@ Screen updating:
8 Add a ":refresh [winnr]" command, to force updating a window. Useful from
an event handler where ":normal" can't be used. Also useful when
'lazyredraw' is set in a mapping.
7 Make 'list' and 'linebreak' work together.
Scrolling:
8 Add "zy" command: scroll horizontally to put the cursor in the middle.
@@ -4031,6 +4237,8 @@ GUI:
use them again? Otherwise, allow disabling allocating the default colors.
Or allocate an own colormap (check UAE). With an option to use it. For
the commandline, "-install" is mostly used for X11 programs.
7 Add command line argument for "gvim" not to start the GUI. Sort of the
inverse of "vim -g". (Vikas)
7 Should support multi-column menus.
- Should add option for where to put the "Help" menu: like Motif at the far
right, or with the other menus (but still at the right).
@@ -4331,6 +4539,7 @@ Insert mode:
7 Use CTRL-G <count> to repeat what follows. Useful for inserting a
character multiple times or repeating CTRL-Y.
- Make 'revins' work in Replace mode.
9 Can't use multi-byte characters for 'matchpairs'.
7 Use 'matchpairs' for 'showmatch': When inserting a character check if it
appears in the rhs of 'matchpairs'.
- In Insert mode (and command line editing?): Allow undo of the last typed
@@ -4472,6 +4681,8 @@ Text objects:
use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like
'matchpairs'?
8 Add text object for any kind of parens, also multi-byte ones.
7 Add text object for current search pattern: "a/" and "i/". Makes it
possible to turn text highlighted for 'hlsearch' into a Visual area.
8 Add a way to make an ":omap" for a user-defined text object. Requires
changing the starting position in oap->start.
8 Add "gp" and "gP" commands: insert text and make sure there is a single
@@ -4528,6 +4739,8 @@ Visual mode:
receive dropped text from another program. (Ben Godfrey)
7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
a <CR>. The entered lines are repeated over the Visual area.
7 CTRL-V :s should substitute only in the block, not to whole lines. (David
Young is working on this)
7 Filtering a block should only apply to the block, not to the whole lines.
When the number of lines is increased, add lines. When decreased, pad with
spaces or delete? Use ":`<,`>" on the command line.
@@ -4557,6 +4770,8 @@ Visual mode:
More advanced repeating commands:
- Add "." command for visual mode: redo last visual command (e.g. ":fmt").
7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember
the command line so that it can be repeated?
- Add command to repeat last movement. Including count.
- Add "." command after operator: repeat last command of same operator. E.g.
"c." will repeat last change, also when "x" used since then (Webb).
@@ -4585,6 +4800,9 @@ Mappings and Abbreviations:
not the <Space>.
8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
(?) work.
8 Add a way to save a current mapping and restore it later. Use a function
that returns the mapping command to restore it: mapcmd()? mapcheck() is
not fool proof. How to handle ambiguous mappings?
7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
7 When someone tries to unmap with a trailing space, and it fails, try
unmapping without the trailing space. Helps for ":unmap xx | unmap yy".
@@ -4637,6 +4855,8 @@ Incsearch:
cases, saves a lot of time in big files. (Slootman wants to work on this?)
When not using special characters, can continue search from the last match
(or not at all, when there was no match). See oldmail/webb/in.872.
- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
key to copy matched word to search pattern (Alexander Schmid).
Searching:
@@ -4660,6 +4880,9 @@ Searching:
8 Show the progress every second. Could use the code that checks for CTRL-C
to find out how much time has passed. Or use SIGALRM. Where to show the
number?
8 When using an expression for ":s", set the match position in a v:
variable. So that you can do ":%s/^/\=v:lnum/" to put a line number
before each line.
7 Support for approximate-regexps to find similar words (agrep
http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
8 Add an item for a big character range, so that one can search for a
@@ -4668,6 +4891,8 @@ Searching:
the stack if previous atom matched". Other side is "match with top of
stack, pop it when it matches". Use "\@pX" and "\@m"?
Example: \((\@p).\{-}\@m\)*
7 Add an option to accept a match at the cursor position. Also for
search(). (Brett)
7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping
when a search fails. Could be "/pat/E" (e is already used for end offset).
7 Add pattern item to use properties of Unicode characters. In Perl it's
@@ -4771,6 +4996,9 @@ Undo:
when tests fail after making changes and you forgot in which files.
9 After undo/redo, in the message show whether the buffer is modified or
not.
8 Use timestamps for undo, so that a version a certain time ago can be found
and info before some time/date can be flushed. 'undopersist' gives maximum
time to keep undo: "3h", "1d", "2w", "1y", etc.
8 Search for pattern in undo tree, showing when it happened and the text
state, so that you can jump to it.
8 Undo tree: visually show the tree somehow (Damian Conway)
@@ -4778,6 +5006,13 @@ Undo:
timestamp?
Put branch with most recent change on the left, older changes get more
indent?
8 See ":e" as a change operation, find the changes and add them to the
undo info. Also be able to undo the "Reload file" choice for when a file
was changed outside of Vim.
Would require doing a diff between the buffer text and the file and
storing the differences.
Alternative: before reloading a buffer, store it somewhere. Keep a list
of about 10 last reloaded buffers.
- Make it possible to undo all the commands from a mapping, including a
trailing unfinished command, e.g. for ":map K iX^[r".
- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
@@ -4829,6 +5064,8 @@ Buffer list:
7 Add expansion of buffer names, so that "*.c" is expanded to all buffer
names. Needed for ":bdel *.c", ":bunload *.c", etc.
8 Support for <afile> where a buffer name is expected.
8 Some commands don't use line numbers, but buffer numbers. '$'
should then mean the number of the last buffer. E.g.: "4,$bdel".
7 Add an option to mostly use slashes in file names. Separately for
internal use and for when executing an external program?
8 Some file systems are case-sensitive, some are not. Besides
@@ -5148,6 +5385,11 @@ Various improvements:
7 Allow a window not to have a statusline. Makes it possible to use a
window as a buffer-tab selection.
8 Allow non-active windows to have a different statusline. (Yakov Lerner)
7 Support using ":vert" with User commands. Add expandable items <vert>.
Do the same for ":browse" and ":confirm"?
For ":silent" and ":debug" apply to the whole user command.
More general: need a way to access command modifiers in a user command.
Assign them to a v: variable?
7 Add an invisible buffer which can be edited. For use in scripts that want
to manipulate text without changing the window layout.
8 Add a command to revert to the saved version of file; undo or redo until
@@ -5197,6 +5439,10 @@ Various improvements:
non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef
CONF_XXX in feature.h? Then what should min-features and max-features do?
8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
6 Add ":timer" command, to set a command to be executed at a certain
interval, or once after some time has elapsed. (Aaron)
Perhaps an autocommand event like CursorHold is better?
Patch to add async functionality. (Geoff Greer, 2013 Sep 1 and later)
8 Add ":confirm" handling in open_exfile(), for when file already exists.
8 When quitting with changed files, make the dialog list the changed file
and allow "write all", "discard all", "write some". The last one would
@@ -5432,6 +5678,7 @@ Various improvements:
gives read errors. Check protection before opening.
- When writing check for file exists but no permission, "Permission denied".
- If file does not exist, check if directory exists.
- MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
commands.
- ":set -w all": list one option per line.
@@ -5466,7 +5713,10 @@ Various improvements:
instead of CTRL-R to make repeating possible. (Marinichev)
- Add "^Vb" on the command line, replace with word before or under the
cursor?
- Option to make a .swp file only when a change is made (Templeton).
- Support mapping for replace mode and "r" command (Vi doesn't do this)?
5 Add 'ignorefilecase' option: Ignore case when expanding file names.
":e ma<Tab>" would also find "Makefile" on Unix.
8 Sorting of filenames for completion is wrong on systems that ignore
case of filenames. Add 'ignorefncase' option. When set, case in
filenames is ignored for sorting them. Patch by Mike Williams:
@@ -5535,6 +5785,11 @@ Far future and "big" extensions:
- Add open mode, use it when terminal has no cursor positioning.
- Special "drawing mode": a line is drawn where the cursor is moved to.
Backspace deletes along the line (from jvim).
- Implement ":Bset", set option in all buffers. Also ":Wset", set in all
windows, ":Aset, set in all arguments and ":Tset", set in all files
mentioned in the tags file.
Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."?
- Support for underlining (underscore-BS-char), bold (char-BS-char) and other
standout modes switched on/off with , 'overstrike' option (Reiter).
- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
@@ -5550,5 +5805,8 @@ Far future and "big" extensions:
are reflected in each Vim immediately. Could work with local files but
also over the internet. See http://www.codingmonkeys.de/subethaedit/.
When using "do" or ":diffget" in a buffer with changes in every line an extra
empty line would appear.
vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
vim: set fo+=n :
+5 -59
View File
@@ -1,8 +1,7 @@
" Vim filetype plugin file
" Language: METAFONT
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2016 Oct 1
" Language: MetaFont
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
if exists("b:did_ftplugin")
finish
@@ -12,62 +11,9 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms< fo< sua< inc< def< ofu<"
\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=cjroql2
setlocal suffixesadd=.mf
let &l:include = '\<input\>'
let &l:define = '\<\%(let\|newinternal\|interim\|def\|vardef\)\>\|\<\%(primary\|secondary\|tertiary\)def\>\s*[^ .]\+'
setlocal omnifunc=syntaxcomplete#Complete
let g:omni_syntax_group_include_mf = 'mf\w\+'
let g:omni_syntax_group_exclude_mf = 'mfTodoComment'
let s:mp_regex = {
\ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|beginchar\|beginlogochar\)\>',
\ 'endsection' : '^\s*\%(enddef\|endchar\|endlogochar\)\>',
\ 'beginblock' : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
\ 'endblock' : '^\s*\%(endgroup\|fi\|endfor\)\>'
\ }
function! s:move_around(count, what, flags, visual)
if a:visual
exe "normal! gv"
endif
call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
for i in range(2, a:count)
call search(s:mp_regex[a:what], a:flags)
endfor
endfunction
" Move around macros.
nnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:false) <CR>
vnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:true) <CR>
nnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W", v:false) <CR>
vnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W", v:true) <CR>
nnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection", "bW", v:false) <CR>
vnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection", "bW", v:true) <CR>
nnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection", "W", v:false) <CR>
vnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection", "W", v:true) <CR>
nnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock", "bW", v:false) <CR>
vnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock", "bW", v:true) <CR>
nnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock", "W", v:false) <CR>
vnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock", "W", v:true) <CR>
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words =
\ '\<if\>:\<else\%[if]\>:\<fi\>,' .
\ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' .
\ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
\ '\<begingroup\>:\<endgroup\>,' .
\ '\<beginchar\>:\<endchar\>' .
\ '\<beginlogochar\>:\<endlogochar\>'
" Ignore comments and strings
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
\ =~# "mf\\(Comment\\|String\\)$"'
endif
setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=croql
let &cpo = s:cpo_save
unlet s:cpo_save
+5 -62
View File
@@ -1,8 +1,7 @@
" Vim filetype plugin file
" Language: MetaPost
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2016 Oct 1
" Language: MetaPost
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
if exists("b:did_ftplugin")
finish
@@ -12,16 +11,9 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms< fo< sua< inc< def< ofu<"
\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
let b:undo_ftplugin = "setl com< cms< fo<"
setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=cjroql2
setlocal suffixesadd=.mp,.mpiv
let &l:include = '\<\%(input\|loadmodule\)\>' " loadmodule is in MetaFun
let &l:define = '\<\%(let\|newinternal\|interim\|def\|vardef\)\>\|\<\%(primary\|secondary\|tertiary\)def\>\s*[^ .]\+'
setlocal omnifunc=syntaxcomplete#Complete
let g:omni_syntax_group_include_mp = 'mf\w\+,mp\w\+'
let g:omni_syntax_group_exclude_mp = 'mfTodoComment'
setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=croql
if exists(":FixBeginfigs") != 2
command -nargs=0 FixBeginfigs call s:fix_beginfigs()
@@ -32,54 +24,5 @@ if exists(":FixBeginfigs") != 2
endfunction
endif
let s:mp_regex = {
\ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|begin\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
\ 'endsection' : '^\s*\%(enddef\|end\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
\ 'beginblock' : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
\ 'endblock' : '^\s*\%(endgroup\|fi\|endfor\)\>'
\ }
function! s:move_around(count, what, flags, visual)
if a:visual
exe "normal! gv"
endif
call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
for i in range(2, a:count)
call search(s:mp_regex[a:what], a:flags)
endfor
endfunction
" Move around macros.
nnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:false) <CR>
vnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:true) <CR>
nnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W", v:false) <CR>
vnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W", v:true) <CR>
nnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection", "bW", v:false) <CR>
vnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection", "bW", v:true) <CR>
nnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection", "W", v:false) <CR>
vnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection", "W", v:true) <CR>
nnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock", "bW", v:false) <CR>
vnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock", "bW", v:true) <CR>
nnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock", "W", v:false) <CR>
vnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock", "W", v:true) <CR>
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words =
\ '\<if\>:\<else\%[if]\>:\<fi\>,' .
\ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' .
\ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
\ '\<beginfig\>:\<endfig\>,' .
\ '\<begingroup\>:\<endgroup\>,' .
\ '\<beginchar\>:\<endchar\>' .
\ '\<beginlogochar\>:\<endlogochar\>' .
\ '\<beginglyph\>:\<endglyph\>' .
\ '\<begingraph\>:\<endgraph\>'
" Ignore comments and strings
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
\ =~# "^mf\\%(Comment\\|String\\|\\)$\\|^mpTeXinsert$"'
endif
let &cpo = s:cpo_save
unlet s:cpo_save
+5 -7
View File
@@ -1,12 +1,11 @@
" Vim indent file
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
" Version: 0.46
" Last Change: 2016 Sep. 27
" Version: 0.45
" Last Change: 2016 Aug. 29
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
" Usage: For instructions, do :help fortran-indent from Vim
" Credits:
" Useful suggestions were made, in chronological order, by:
" Albert Oliver Serra, Takuya Fujiwara and Philipp Edelmann.
" Useful suggestions were made by: Albert Oliver Serra and Takuya Fujiwara.
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -122,8 +121,7 @@ function FortranGetIndent(lnum)
let prefix='\(\(pure\|impure\|elemental\|recursive\)\s\+\)\{,2}'
let type='\(\(integer\|real\|double\s\+precision\|complex\|logical'
\.'\|character\|type\|class\)\s*\S*\s\+\)\='
if prevstat =~? '^\s*\(contains\|submodule\|program\)\>'
\ ||prevstat =~? '^\s*'.'module\>\(\s*\procedure\)\@!'
if prevstat =~? '^\s*\(module\|contains\/submodule\|program\)\>'
\ ||prevstat =~? '^\s*'.prefix.'subroutine\>'
\ ||prevstat =~? '^\s*'.prefix.type.'function\>'
\ ||prevstat =~? '^\s*'.type.prefix.'function\>'
@@ -131,7 +129,7 @@ function FortranGetIndent(lnum)
endif
if getline(v:lnum) =~? '^\s*contains\>'
\ ||getline(v:lnum)=~? '^\s*end\s*'
\ .'\(function\|subroutine\|module\|submodule\|program\)\>'
\ .'\(function\|subroutine\|module\/submodule\|program\)\>'
let ind = ind - shiftwidth()
endif
endif
-6
View File
@@ -1,6 +0,0 @@
" METAFONT indent file
" Language: METAFONT
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Last Change: 2016 Oct 1
runtime! indent/mp.vim
+173 -317
View File
@@ -1,19 +1,56 @@
" MetaPost indent file
" Language: MetaPost
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
" Last Change: 2016 Oct 01
" Version: 0.2
" Language: MetaPost
" Maintainer: Eugene Minkovskii <emin@mccme.ru>
" Last Change: 2012 May 18
" Version: 0.1
" ==========================================================================
" Identation Rules: {{{1
" First of all, MetaPost language don't expect any identation rules.
" This screept need for you only if you (not MetaPost) need to do
" exactly code. If you don't need to use indentation, see
" :help filetype-indent-off
"
" Note: Every rules of identation in MetaPost or TeX languages (and in some
" other of course) is very subjective. I can release only my vision of this
" promlem.
"
" ..........................................................................
" Example of correct (by me) identation {{{2
" shiftwidth=4
" ==========================================================================
" for i=0 upto 99:
" z[i] = (0,1u) rotated (i*360/100);
" endfor
" draw z0 -- z10 -- z20
" withpen ... % <- 2sw because breaked line
" withcolor ...; % <- same as previous
" draw z0 for i=1 upto 99:
" -- z[i] % <- 1sw from left end of 'for' satement
" endfor withpen ... % <- 0sw from left end of 'for' satement
" withcolor ...; % <- 2sw because breaked line
" draw if One: % <- This is internal if (like 'for' above)
" one
" elsif Other:
" other
" fi withpen ...;
" if one: % <- This is external if
" draw one;
" elseif other:
" draw other;
" fi
" draw z0; draw z1;
" }}}
" }}}
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetMetaPostIndent()
setlocal indentkeys+==end,=else,=fi,=fill,0),0]
let b:undo_indent = "setl indentkeys< indentexpr<"
setlocal indentkeys+=;,<:>,=if,=for,=def,=end,=else,=fi
" Only define the function once.
if exists("*GetMetaPostIndent")
@@ -22,332 +59,151 @@ endif
let s:keepcpo= &cpo
set cpo&vim
function GetMetaPostIndent()
let ignorecase_save = &ignorecase
try
let &ignorecase = 0
return GetMetaPostIndentIntern()
finally
let &ignorecase = ignorecase_save
endtry
endfunc
" Regexps {{{
" Note: the next three variables are made global so that a user may add
" further keywords.
"
" Example:
"
" Put these in ~/.vim/after/indent/mp.vim
"
" let g:mp_open_tag .= '\|\<begintest\>'
" let g:mp_close_tag .= '\|\<endtest\>'
" Expressions starting indented blocks
let g:mp_open_tag = ''
\ . '\<if\>'
\ . '\|\<else\%[if]\>'
\ . '\|\<for\%(\|ever\|suffixes\)\>'
\ . '\|\<begingroup\>'
\ . '\|\<\%(\|var\|primary\|secondary\|tertiary\)def\>'
\ . '\|^\s*\<begin\%(fig\|graph\|glyph\|char\|logochar\)\>'
\ . '\|[([{]'
" Expressions ending indented blocks
let g:mp_close_tag = ''
\ . '\<fi\>'
\ . '\|\<else\%[if]\>'
\ . '\|\<end\%(\|for\|group\|def\|fig\|char\|logochar\|glyph\|graph\)\>'
\ . '\|[)\]}]'
" Statements that may span multiple lines and are ended by a semicolon. To
" keep this list short, statements that are unlikely to be very long or are
" not very common (e.g., keywords like `interim` or `showtoken`) are not
" included.
"
" The regex for assignments and equations (the last branch) is tricky, because
" it must not match things like `for i :=`, `if a=b`, `def...=`, etc... It is
" not perfect, but it works reasonably well.
let g:mp_statement = ''
\ . '\<\%(\|un\|cut\)draw\>'
\ . '\|\<\%(\|un\)fill\%[draw]\>'
\ . '\|\<draw\%(dbl\)\=arrow\>'
\ . '\|\<clip\>'
\ . '\|\<addto\>'
\ . '\|\<save\>'
\ . '\|\<setbounds\>'
\ . '\|\<message\>'
\ . '\|\<errmessage\>'
\ . '\|\<errhelp\>'
\ . '\|\<fontmapline\>'
\ . '\|\<pickup\>'
\ . '\|\<show\>'
\ . '\|\<special\>'
\ . '\|\<write\>'
\ . '\|\%(^\|;\)\%([^;=]*\%('.g:mp_open_tag.'\)\)\@!.\{-}:\=='
" A line ends with zero or more spaces, possibly followed by a comment.
let s:eol = '\s*\%($\|%\)'
" }}}
" Auxiliary functions {{{
" Returns 1 if (0-based) position immediately preceding `pos` in `line` is
" inside a string or a comment; returns 0 otherwise.
" This is the function that is called more often when indenting, so it is
" critical that it is efficient. The method we use is significantly faster
" than using syntax attributes, and more general (it does not require
" syntax_items). It is also faster than using a single regex matching an even
" number of quotes. It helps that MetaPost strings cannot span more than one
" line and cannot contain escaped quotes.
function! s:CommentOrString(line, pos)
let in_string = 0
let q = stridx(a:line, '"')
let c = stridx(a:line, '%')
while q >= 0 && q < a:pos
if c >= 0 && c < q
if in_string " Find next percent symbol
let c = stridx(a:line, '%', q + 1)
else " Inside comment
return 1
endif
endif
let in_string = 1 - in_string
let q = stridx(a:line, '"', q + 1) " Find next quote
" Auxiliary Definitions: {{{1
function! MetaNextNonblankNoncomment(pos)
" Like nextnonblank() but ignore comment lines
let tmp = nextnonblank(a:pos)
while tmp && getline(tmp) =~ '^\s*%'
let tmp = nextnonblank(tmp+1)
endwhile
return in_string || (c >= 0 && c <= a:pos)
return tmp
endfunction
" Find the first non-comment non-blank line before the current line. Skip also
" verbatimtex/btex... etex blocks.
function! s:PrevNonBlankNonComment(lnum)
let l:lnum = prevnonblank(a:lnum - 1)
while getline(l:lnum) =~# '^\s*%' ||
\ synIDattr(synID(a:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
let l:lnum = prevnonblank(l:lnum - 1)
function! MetaPrevNonblankNoncomment(pos)
" Like prevnonblank() but ignore comment lines
let tmp = prevnonblank(a:pos)
while tmp && getline(tmp) =~ '^\s*%'
let tmp = prevnonblank(tmp-1)
endwhile
return l:lnum
return tmp
endfunction
" Returns true if the last tag appearing in the line is an open tag; returns
" false otherwise.
function! s:LastTagIsOpen(line)
let o = s:LastValidMatchEnd(a:line, g:mp_open_tag, 0)
if o == - 1 | return v:false | endif
return s:LastValidMatchEnd(a:line, g:mp_close_tag, o) < 0
endfunction
" A simple, efficient and quite effective heuristics is used to test whether
" a line should cause the next line to be indented: count the "opening tags"
" (if, for, def, ...) in the line, count the "closing tags" (endif, endfor,
" ...) in the line, and compute the difference. We call the result the
" "weight" of the line. If the weight is positive, then the next line should
" most likely be indented. Note that `else` and `elseif` are both opening and
" closing tags, so they "cancel out" in almost all cases, the only exception
" being a leading `else[if]`, which is counted as an opening tag, but not as
" a closing tag (so that, for instance, a line containing a single `else:`
" will have weight equal to one, not zero). We do not treat a trailing
" `else[if]` in any special way, because lines ending with an open tag are
" dealt with separately before this function is called (see
" GetMetaPostIndentIntern()).
"
" Example:
"
" forsuffixes $=a,b: if x.$ = y.$ : draw else: fill fi
" % This line will be indented because |{forsuffixes,if,else}| > |{else,fi}| (3 > 2)
" endfor
function! s:Weight(line)
let [o, i] = [0, s:ValidMatchEnd(a:line, g:mp_open_tag, 0)]
while i > 0
let o += 1
let i = s:ValidMatchEnd(a:line, g:mp_open_tag, i)
endwhile
let [c, i] = [0, matchend(a:line, '^\s*\<else\%[if]\>')] " Skip a leading else[if]
let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i)
while i > 0
let c += 1
let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i)
endwhile
return o - c
endfunction
" Similar to matchend(), but skips strings and comments.
" line: a String
function! s:ValidMatchEnd(line, pat, start)
let i = matchend(a:line, a:pat, a:start)
while i > 0 && s:CommentOrString(a:line, i)
let i = matchend(a:line, a:pat, i)
endwhile
return i
endfunction
" Like s:ValidMatchEnd(), but returns the end position of the last (i.e.,
" rightmost) match.
function! s:LastValidMatchEnd(line, pat, start)
let last_found = -1
let i = matchend(a:line, a:pat, a:start)
while i > 0
if !s:CommentOrString(a:line, i)
let last_found = i
endif
let i = matchend(a:line, a:pat, i)
endwhile
return last_found
endfunction
function! s:DecreaseIndentOnClosingTag(curr_indent)
let cur_text = getline(v:lnum)
if cur_text =~# '^\s*\%('.g:mp_close_tag.'\)'
return max([a:curr_indent - shiftwidth(), 0])
function! MetaSearchNoncomment(pattern, ...)
" Like search() but ignore commented areas
if a:0
let flags = a:1
elseif &wrapscan
let flags = "w"
else
let flags = "W"
endif
return a:curr_indent
let cl = line(".")
let cc = col(".")
let tmp = search(a:pattern, flags)
while tmp && synIDattr(synID(line("."), col("."), 1), "name") =~
\ 'm[fp]\(Comment\|TeXinsert\|String\)'
let tmp = search(a:pattern, flags)
endwhile
if !tmp
call cursor(cl,cc)
endif
return tmp
endfunction
" }}}
" Main function {{{
"
" Note: Every rule of indentation in MetaPost is very subjective. We might get
" creative, but things get murky very soon (there are too many corner cases).
" So, we provide a means for the user to decide what to do when this script
" doesn't get it. We use a simple idea: use '%>', '%<' and '%=' to explicitly
" control indentation. The '<' and '>' symbols may be repeated many times
" (e.g., '%>>' will cause the next line to be indented twice).
"
" By using '%>...', '%<...' and '%=', the indentation the user wants is
" preserved by commands like gg=G, even if it does not follow the rules of
" this script.
"
" Example:
"
" shiftwidth=4
" def foo =
" makepen(subpath(T-n,t) of r %>
" shifted .5down %>
" --subpath(t,T) of r shifted .5up -- cycle) %<<
" withcolor black
" enddef
"
" The default indentation of the previous example would be:
"
" def foo =
" makepen(subpath(T-n,t) of r
" shifted .5down
" --subpath(t,T) of r shifted .5up -- cycle)
" withcolor black
" enddef
"
" Personally, I prefer the latter, but anyway...
function! GetMetaPostIndentIntern()
" This is the reference line relative to which the current line is indented
" (but see below).
let lnum = s:PrevNonBlankNonComment(v:lnum)
" At the start of the file use zero indent.
if lnum == 0
function! GetMetaPostIndent()
" not indent in comment ???
if synIDattr(synID(line("."), col("."), 1), "name") =~
\ 'm[fp]\(Comment\|TeXinsert\|String\)'
return -1
endif
" Some RegExps: {{{1
" end_of_item: all of end by ';'
" + all of end by :endfor, :enddef, :endfig, :endgroup, :fi
" + all of start by :beginfig(num), :begingroup
" + all of start by :for, :if, :else, :elseif and end by ':'
" + all of start by :def, :vardef and end by '='
let end_of_item = '\(' .
\ ';\|' .
\ '\<\(end\(for\|def\|fig\|group\)\|fi\)\>\|' .
\ '\<begin\(group\>\|fig\s*(\s*\d\+\s*)\)\|' .
\ '\<\(for\|if\|else\(if\)\=\)\>.\+:\|' .
\ '\<\(var\)\=def\>.\+=' . '\)'
" }}}
" Save: current position {{{1
let cl = line (".")
let cc = col (".")
let cs = getline(".")
" if it is :beginfig or :endfig use zero indent
if cs =~ '^\s*\(begin\|end\)fig\>'
return 0
endif
let prev_text = getline(lnum)
" User-defined overrides take precedence over anything else.
" See above for an example.
let j = match(prev_text, '%[<>=]')
if j > 0
let i = strlen(matchstr(prev_text, '%>\+', j)) - 1
if i > 0
return indent(lnum) + i * shiftwidth()
endif
let i = strlen(matchstr(prev_text, '%<\+', j)) - 1
if i > 0
return max([indent(lnum) - i * shiftwidth(), 0])
endif
if match(prev_text, '%=', j)
return indent(lnum)
endif
" }}}
" Initialise: ind variable {{{1
" search previous item not in current line
let p_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
while p_semicol_l == cl
let p_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
endwhile
" if this is first item in program use zero indent
if !p_semicol_l
return 0
endif
" If the reference line ends with an open tag, indent.
"
" Example:
"
" if c:
" 0
" else:
" 1
" fi if c2: % Note that this line has weight equal to zero.
" ... % This line will be indented
if s:LastTagIsOpen(prev_text)
return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
endif
" Lines with a positive weight are unbalanced and should likely be indented.
"
" Example:
"
" def f = enddef for i = 1 upto 5: if x[i] > 0: 1 else: 2 fi
" ... % This line will be indented (because of the unterminated `for`)
if s:Weight(prev_text) > 0
return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
endif
" Unterminated statements cause indentation to kick in.
"
" Example:
"
" draw unitsquare
" withcolor black; % This line is indented because of `draw`.
" x := a + b + c
" + d + e; % This line is indented because of `:=`.
"
let i = s:LastValidMatchEnd(prev_text, g:mp_statement, 0)
if i >= 0 " Does the line contain a statement?
if s:ValidMatchEnd(prev_text, ';', i) < 0 " Is the statement unterminated?
return indent(lnum) + shiftwidth()
else
return s:DecreaseIndentOnClosingTag(indent(lnum))
endif
endif
" Deal with the special case of a statement spanning multiple lines. If the
" current reference line L ends with a semicolon, search backwards for
" another semicolon or a statement keyword. If the latter is found first,
" its line is used as the reference line for indenting the current line
" instead of L.
"
" Example:
"
" if cond:
" draw if a: z0 else: z1 fi
" shifted S
" scaled T; % L
"
" for i = 1 upto 3: % <-- Current line: this gets the same indent as `draw ...`
"
" NOTE: we get here if and only if L does not contain a statement (among
" those listed in g:mp_statement).
if s:ValidMatchEnd(prev_text, ';'.s:eol, 0) >= 0 " L ends with a semicolon
let stm_lnum = s:PrevNonBlankNonComment(lnum)
while stm_lnum > 0
let prev_text = getline(stm_lnum)
let sc_pos = s:LastValidMatchEnd(prev_text, ';', 0)
let stm_pos = s:ValidMatchEnd(prev_text, g:mp_statement, sc_pos)
if stm_pos > sc_pos
let lnum = stm_lnum
break
elseif sc_pos > stm_pos
break
endif
let stm_lnum = s:PrevNonBlankNonComment(stm_lnum)
" if this is multiline item, remember first indent
if MetaNextNonblankNoncomment(p_semicol_l+1) < cl
let ind = indent(MetaNextNonblankNoncomment(p_semicol_l+1))
" else --- search pre-previous item for search first line in previous item
else
" search pre-previous item not in current line
let pp_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
while pp_semicol_l == p_semicol_l
let pp_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
endwhile
" if we find pre-previous item, remember indent of previous item
" else --- remember zero
if pp_semicol_l
let ind = indent(MetaNextNonblankNoncomment(line(".")+1))
else
let ind = 0
endif
endif
" }}}
" Increase Indent: {{{1
" if it is an internal/external :for or :if statements {{{2
let pnn_s = getline(MetaPrevNonblankNoncomment(cl-1))
if pnn_s =~ '\<\(for\|if\)\>.\+:\s*\($\|%\)'
let ind = match(pnn_s, '\<\(for\|if\)\>.\+:\s*\($\|%\)') + &sw
" }}}
" if it is a :def, :vardef, :beginfig, :begingroup, :else, :elseif {{{2
elseif pnn_s =~ '^\s*\(' .
\ '\(var\)\=def\|' .
\ 'begin\(group\|fig\s*(\s*\d\+\s*)\)\|' .
\ 'else\(if\)\=' . '\)\>'
let ind = ind + &sw
" }}}
" if it is a broken line {{{2
elseif pnn_s !~ end_of_item.'\s*\($\|%\)'
let ind = ind + (2 * &sw)
endif
" }}}
" }}}
" Decrease Indent: {{{1
" if this is :endfor or :enddef statements {{{2
" this is correct because :def cannot be inside :for
if cs =~ '\<end\(for\|def\)\=\>'
call MetaSearchNoncomment('\<for\>.\+:\s*\($\|%\)' . '\|' .
\ '^\s*\(var\)\=def\>',"bW")
if col(".") > 1
let ind = col(".") - 1
else
let ind = indent(".")
endif
" }}}
" if this is :fi, :else, :elseif statements {{{2
elseif cs =~ '\<\(else\(if\)\=\|fi\)\>'
call MetaSearchNoncomment('\<if\>.\+:\s*\($\|%\)',"bW")
let ind = col(".") - 1
" }}}
" if this is :endgroup statement {{{2
elseif cs =~ '^\s*endgroup\>'
let ind = ind - &sw
endif
" }}}
" }}}
return s:DecreaseIndentOnClosingTag(indent(lnum))
return ind
endfunction
" }}}
"
let &cpo = s:keepcpo
unlet s:keepcpo
+2 -2
View File
@@ -2,7 +2,7 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2016 Sep 27
" Last Change: 2016 Aug 30
" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debsources.vim
" Standard syntax initialization
@@ -39,7 +39,7 @@ let s:unsupported = [
let &cpo=s:cpo
" Match uri's
syn match debsourcesUri +\(https\?://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
exe 'syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\('. join(s:supported, '\|'). '\)\([-[:alnum:]_./]*\)+'
exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\('. join(s:unsupported, '\|') .'\)\([-[:alnum:]_./]*\)+'
+130 -241
View File
@@ -1,295 +1,184 @@
" Vim syntax file
" Language: METAFONT
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
" Last Change: 2016 Oct 1
" Language: Metafont
" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
" Last Change: April 25, 2001
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn iskeyword @,_
" METAFONT 'primitives' as defined in chapter 25 of 'The METAFONTbook'
" Metafont 'primitives' as defined in chapter 25 of 'The METAFONTbook'
" Page 210: 'boolean expressions'
syn keyword mfBoolExp and charexists false known not odd or true unknown
syn keyword mfBoolExp true false known unknown odd charexists not and or
" Page 210: 'numeric expression'
syn keyword mfNumExp ASCII angle cosd directiontime floor hex length
syn keyword mfNumExp mexp mlog normaldeviate oct sind sqrt totalweight
syn keyword mfNumExp turningnumber uniformdeviate xpart xxpart xypart
syn keyword mfNumExp ypart yxpart yypart
syn keyword mfNumExp normaldeviate length ASCII oct hex angle turningnumber
syn keyword mfNumExp totalweight directiontime xpart ypart xxpart xypart
syn keyword mfNumExp yxpart yypart sqrt sind cosd mlog mexp floor
syn keyword mfNumExp uniformdeviate
" Page 211: 'internal quantities'
syn keyword mfInternal autorounding boundarychar charcode chardp chardx
syn keyword mfInternal chardy charext charht charic charwd day designsize
syn keyword mfInternal fillin fontmaking granularity hppp jobname month
syn keyword mfInternal pausing proofing showstopping smoothing time
syn keyword mfInternal tracingcapsules tracingchoices tracingcommands
syn keyword mfInternal tracingedges tracingequations tracingmacros
syn keyword mfInternal tracingonline tracingoutput tracingpens
syn keyword mfInternal tracingrestores tracingspecs tracingstats
syn keyword mfInternal tracingtitles turningcheck vppp warningcheck
syn keyword mfInternal xoffset year yoffset
syn keyword mfInternal tracingtitles tracingequations tracingcapsules
syn keyword mfInternal tracingchoices tracingspecs tracingpens
syn keyword mfInternal tracingcommands tracingrestores tracingmacros
syn keyword mfInternal tracingedges tracingoutput tracingonline tracingstats
syn keyword mfInternal pausing showstopping fontmaking proofing
syn keyword mfInternal turningcheck warningcheck smoothing autorounding
syn keyword mfInternal granularity fillin year month day time
syn keyword mfInternal charcode charext charwd charht chardp charic
syn keyword mfInternal chardx chardy designsize hppp vppp xoffset yoffset
syn keyword mfInternal boundarychar
" Page 212: 'pair expressions'
syn keyword mfPairExp of penoffset point postcontrol precontrol rotated
syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled
syn keyword mfPairExp zscaled
syn keyword mfPairExp point of precontrol postcontrol penoffset rotated
syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled
syn keyword mfPairExp zscaled
" Page 213: 'path expressions'
syn keyword mfPathExp atleast controls curl cycle makepath reverse
syn keyword mfPathExp subpath tension
syn keyword mfPathExp makepath reverse subpath curl tension atleast
syn keyword mfPathExp controls cycle
" Page 214: 'pen expressions'
syn keyword mfPenExp makepen nullpen pencircle
syn keyword mfPenExp nullpen pencircle makepen
" Page 214: 'picture expressions'
syn keyword mfPicExp nullpicture
" Page 214: 'picutre expressions'
syn keyword mfPicExp nullpicture
" Page 214: 'string expressions'
syn keyword mfStringExp char decimal readstring str substring
syn keyword mfStringExp jobname readstring str char decimal substring
" Page 217: 'commands and statements'
syn keyword mfCommand addto also at batchmode contour cull delimiters
syn keyword mfCommand display doublepath dropping dump end errhelp
syn keyword mfCommand errmessage errorstopmode everyjob from interim
syn keyword mfCommand inwindow keeping let message newinternal
syn keyword mfCommand nonstopmode numspecial openwindow outer randomseed
syn keyword mfCommand save scrollmode shipout show showdependencies
syn keyword mfCommand showstats showtoken showvariable special to withpen
syn keyword mfCommand withweight
syn keyword mfCommand end dump save interim newinternal randomseed let
syn keyword mfCommand delimiters outer everyjob show showvariable showtoken
syn keyword mfCommand showdependencies showstats message errmessage errhelp
syn keyword mfCommand batchmode nonstopmode scrollmode errorstopmode
syn keyword mfCommand addto also contour doublepath withpen withweight cull
syn keyword mfCommand keeping dropping display inwindow openwindow at from to
syn keyword mfCommand shipout special numspecial
" Page 56: 'types'
syn keyword mfType boolean numeric pair path pen picture string
syn keyword mfType transform
syn keyword mfType boolean numeric pair path pen picture string transform
" Page 155: 'grouping'
syn keyword mfStatement begingroup endgroup
syn keyword mfStatement begingroup endgroup
" Page 165: 'definitions'
syn keyword mfDefinition def enddef expr primary primarydef secondary
syn keyword mfDefinition secondarydef suffix tertiary tertiarydef text
syn keyword mfDefinition vardef
syn keyword mfDefinition enddef def expr suffix text primary secondary
syn keyword mfDefinition tertiary vardef primarydef secondarydef tertiarydef
" Page 169: 'conditions and loops'
syn keyword mfCondition else elseif endfor exitif fi for forever
syn keyword mfCondition forsuffixes if step until
syn keyword mfCondition if fi else elseif endfor for forsuffixes forever
syn keyword mfCondition step until exitif
" Other primitives listed in the index
syn keyword mfPrimitive charlist endinput expandafter extensible fontdimen
syn keyword mfPrimitive headerbyte inner input intersectiontimes kern
syn keyword mfPrimitive ligtable quote scantokens skipto
" Implicit suffix parameters
syn match mfSuffixParam "@#\|#@\|@"
" These are just tags, but given their special status, we
" highlight them as variables
syn keyword mfVariable x y
syn keyword mfPrimitive charlist endinput expandafter extensible
syn keyword mfPrimitive fontdimen headerbyte inner input intersectiontimes
syn keyword mfPrimitive kern ligtable quote scantokens skipto
" Keywords defined by plain.mf (defined on pp.262-278)
if get(g:, "plain_mf_macros", 1)
syn keyword mfDef addto_currentpicture beginchar capsule_def
syn keyword mfDef change_width clear_pen_memory clearit clearpen
syn keyword mfDef clearxy culldraw cullit cutdraw
syn keyword mfDef define_blacker_pixels define_corrected_pixels
syn keyword mfDef define_good_x_pixels define_good_y_pixels
syn keyword mfDef define_horizontal_corrected_pixels define_pixels
syn keyword mfDef define_whole_blacker_pixels define_whole_pixels
syn keyword mfDef define_whole_vertical_blacker_pixels
syn keyword mfDef define_whole_vertical_pixels downto draw drawdot
syn keyword mfDef endchar erase exitunless fill filldraw fix_units
syn keyword mfDef flex font_coding_scheme font_extra_space
syn keyword mfDef font_identifier font_normal_shrink
syn keyword mfDef font_normal_space font_normal_stretch font_quad
syn keyword mfDef font_size font_slant font_x_height gfcorners gobble
syn keyword mfDef hide imagerules interact italcorr killtext
syn keyword mfDef loggingall lowres_fix makebox makegrid maketicks
syn keyword mfDef mode_def mode_setup nodisplays notransforms numtok
syn keyword mfDef openit penrazor pensquare penstroke pickup
syn keyword mfDef proofoffset proofrule range reflectedabout
syn keyword mfDef rotatedaround screenchars screenrule screenstrokes
syn keyword mfDef shipit showit smode stop superellipse takepower
syn keyword mfDef tracingall tracingnone undraw undrawdot unfill
syn keyword mfDef unfilldraw upto z
syn match mfDef "???"
syn keyword mfVardef bot byte ceiling counterclockwise cutoff decr dir
syn keyword mfVardef direction directionpoint grayfont hround incr
syn keyword mfVardef interpath inverse labelfont labels lft magstep
" Note: nodot is not a vardef, it is used as in makelabel.lft.nodot("5",z5)
" (METAFONT only)
syn keyword mfVardef makelabel max min nodot penlabels penpos
syn keyword mfVardef proofrulethickness round rt savepen slantfont solve
syn keyword mfVardef tensepath titlefont top unitvector vround whatever
syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
syn keyword mfPrimaryDef div dotprod gobbled mod
syn keyword mfSecondaryDef intersectionpoint
syn keyword mfTertiaryDef softjoin thru
syn keyword mfNewInternal blacker currentwindow displaying eps epsilon
syn keyword mfNewInternal infinity join_radius number_of_modes o_correction
syn keyword mfNewInternal pen_bot pen_lft pen_rt pen_top pixels_per_inch
syn keyword mfNewInternal screen_cols screen_rows tolerance
" Predefined constants
syn keyword mfConstant base_name base_version blankpicture ditto down
syn keyword mfConstant fullcircle halfcircle identity left lowres origin
syn keyword mfConstant penspeck proof quartercircle right rulepen smoke
syn keyword mfConstant unitpixel unitsquare up
" Other predefined variables
syn keyword mfVariable aspect_ratio currentpen extra_beginchar
syn keyword mfVariable extra_endchar currentpen_path currentpicture
syn keyword mfVariable currenttransform d extra_setup h localfont mag mode
syn keyword mfVariable mode_name w
" let statements:
syn keyword mfnumExp abs
syn keyword mfPairExp rotatedabout
syn keyword mfCommand bye relax
if !exists("plain_mf_macros")
let plain_mf_macros = 1 " Set this to '0' if your source gets too colourful
" metapost.vim does so to turn off Metafont macros
endif
" By default, METAFONT loads modes.mf, too
if get(g:, "plain_mf_modes", 1)
syn keyword mfConstant APSSixMed AgfaFourZeroZero AgfaThreeFourZeroZero
syn keyword mfConstant AtariNineFive AtariNineSix AtariSLMEightZeroFour
syn keyword mfConstant AtariSMOneTwoFour CItohEightFiveOneZero
syn keyword mfConstant CItohThreeOneZero CanonBJCSixZeroZero CanonCX
syn keyword mfConstant CanonEX CanonLBPLX CanonLBPTen CanonSX ChelgraphIBX
syn keyword mfConstant CompugraphicEightSixZeroZero
syn keyword mfConstant CompugraphicNineSixZeroZero DD DEClarge DECsmall
syn keyword mfConstant DataDiscNew EightThree EpsonAction
syn keyword mfConstant EpsonLQFiveZeroZeroLo EpsonLQFiveZeroZeroMed
syn keyword mfConstant EpsonMXFX EpsonSQEightSevenZero EpsonStylusPro
syn keyword mfConstant EpsonStylusProHigh EpsonStylusProLow
syn keyword mfConstant EpsonStylusProMed FourFour GThreefax HPDeskJet
syn keyword mfConstant HPLaserJetIIISi IBMFourTwoFiveZero IBMFourTwoOneSix
syn keyword mfConstant IBMFourTwoThreeZero IBMFourZeroOneNine
syn keyword mfConstant IBMFourZeroThreeNine IBMFourZeroTwoNine
syn keyword mfConstant IBMProPrinter IBMSixOneFiveFour IBMSixSixSevenZero
syn keyword mfConstant IBMThreeEightOneTwo IBMThreeEightTwoZero
syn keyword mfConstant IBMThreeOneNineThree IBMThreeOneSevenNine
syn keyword mfConstant IBMUlfHolleberg LASevenFive LNOthreR LNOthree
syn keyword mfConstant LNZeroOne LNZeroThree LPSFourZero LPSTwoZero
syn keyword mfConstant LexmarkFourZeroThreeNine LexmarkOptraR
syn keyword mfConstant LexmarkOptraS LinotypeLThreeThreeZero
syn keyword mfConstant LinotypeOneZeroZero LinotypeOneZeroZeroLo
syn keyword mfConstant LinotypeThreeZeroZeroHi MacTrueSize NeXTprinter
syn keyword mfConstant NeXTscreen NecTwoZeroOne Newgen NineOne
syn keyword mfConstant OCESixSevenFiveZeroPS OneTwoZero OneZeroZero
syn keyword mfConstant PrintwareSevenTwoZeroIQ Prism QMSOneSevenTwoFive
syn keyword mfConstant QMSOneSevenZeroZero QMSTwoFourTwoFive RicohA
syn keyword mfConstant RicohFortyEighty RicohFourZeroEightZero RicohLP
syn keyword mfConstant SparcPrinter StarNLOneZero VAXstation VTSix
syn keyword mfConstant VarityperFiveZeroSixZeroW
syn keyword mfConstant VarityperFourThreeZeroZeroHi
syn keyword mfConstant VarityperFourThreeZeroZeroLo
syn keyword mfConstant VarityperFourTwoZeroZero VarityperSixZeroZero
syn keyword mfConstant XeroxDocutech XeroxEightSevenNineZero
syn keyword mfConstant XeroxFourZeroFiveZero XeroxNineSevenZeroZero
syn keyword mfConstant XeroxPhaserSixTwoZeroZeroDP XeroxThreeSevenZeroZero
syn keyword mfConstant Xerox_world agfafzz agfatfzz amiga aps apssixhi
syn keyword mfConstant aselect atariezf atarinf atarins atariotf bitgraph
syn keyword mfConstant bjtenex bjtzzex bjtzzl bjtzzs boise canonbjc
syn keyword mfConstant canonex canonlbp cg cgl cgnszz citohtoz corona crs
syn keyword mfConstant cthreeten cx datadisc declarge decsmall deskjet
syn keyword mfConstant docutech dover dp dpdfezzz eighthre elvira epscszz
syn keyword mfConstant epsdraft epsdrft epsdrftl epsfast epsfastl epshi
syn keyword mfConstant epslo epsmed epsmedl epson epsonact epsonfx epsonl
syn keyword mfConstant epsonlo epsonlol epsonlq epsonsq epstylus epstylwr
syn keyword mfConstant epstyplo epstypmd epstypml epstypro epswlo epswlol
syn keyword mfConstant esphi fourfour gpx gtfax gtfaxhi gtfaxl gtfaxlo
syn keyword mfConstant gtfaxlol help hifax highfax hplaser hprugged ibm_a
syn keyword mfConstant ibmd ibmega ibmegal ibmfzon ibmfztn ibmpp ibmppl
syn keyword mfConstant ibmsoff ibmteot ibmtetz ibmtont ibmtosn ibmtosnl
syn keyword mfConstant ibmvga ibx imagen imagewriter itoh itohl itohtoz
syn keyword mfConstant itohtozl iw jetiiisi kyocera laserjet laserjetfive
syn keyword mfConstant laserjetfivemp laserjetfour laserjetfourthousand
syn keyword mfConstant laserjetfourzerozerozero laserjethi laserjetlo
syn keyword mfConstant laserjettwoonezerozero
syn keyword mfConstant laserjettwoonezerozerofastres lasermaster
syn keyword mfConstant laserwriter lasf lexmarkr lexmarks lexmarku
syn keyword mfConstant linohalf linohi linolo linolttz linoone linosuper
syn keyword mfConstant linothree linothreelo linotzzh ljfive ljfivemp
syn keyword mfConstant ljfour ljfzzz ljfzzzfr ljlo ljtozz ljtozzfr lmaster
syn keyword mfConstant lnotr lnzo lps lpstz lqhires lqlores lqmed lqmedl
syn keyword mfConstant lqmedres lview lviewl lwpro macmag mactrue modes_mf
syn keyword mfConstant ncd nec nechi neclm nectzo newdd newddl nexthi
syn keyword mfConstant nextscreen nextscrn nineone nullmode ocessfz
syn keyword mfConstant okidata okidatal okifourten okifte okihi onetz
syn keyword mfConstant onezz pcprevw pcscreen phaser phaserfs phasertf
syn keyword mfConstant phasertfl phasertl pixpt printware prntware
syn keyword mfConstant proprinter qms qmsesz qmsostf qmsoszz qmstftf ricoh
syn keyword mfConstant ricoha ricohlp ricohsp sherpa sparcptr starnlt
syn keyword mfConstant starnltl styletwo stylewr stylewri stylewriter sun
syn keyword mfConstant supre swtwo toshiba ultre varityper vs vtftzz
syn keyword mfConstant vtftzzhi vtftzzlo vtfzszw vtszz xpstzz xpstzzl
syn keyword mfConstant xrxesnz xrxfzfz xrxnszz xrxtszz
syn keyword mfDef BCPL_string coding_scheme font_face_byte
syn keyword mfDef font_family landscape
syn keyword mfDef mode_extra_info mode_help mode_param
syn keyword mfNewInternal blacker_min
if plain_mf_macros
syn keyword mfMacro abs addto_currentpicture aspect_ratio base_name
syn keyword mfMacro base_version beginchar blacker blankpicture bot bye byte
syn keyword mfMacro capsule_def ceiling change_width clear_pen_memory clearit
syn keyword mfMacro clearpen clearxy counterclockwise culldraw cullit
syn keyword mfMacro currentpen currentpen_path currentpicture
syn keyword mfMacro currenttransform currentwindow cutdraw cutoff d decr
syn keyword mfMacro define_blacker_pixels define_corrected_pixels
syn keyword mfMacro define_good_x_pixels define_good_y_pixels
syn keyword mfMacro define_horizontal_corrected_pixels define_pixels
syn keyword mfMacro define_whole_blacker_pixels define_whole_pixels
syn keyword mfMacro define_whole_vertical_blacker_pixels
syn keyword mfMacro define_whole_vertical_pixels dir direction directionpoint
syn keyword mfMacro displaying ditto div dotprod down downto draw drawdot
syn keyword mfMacro endchar eps epsilon extra_beginchar extra_endchar
syn keyword mfMacro extra_setup erase exitunless fill filldraw fix_units flex
syn keyword mfMacro font_coding_scheme font_extra_space font_identifier
syn keyword mfMacro font_normal_shrink font_normal_space font_normal_stretch
syn keyword mfMacro font_quad font_setup font_size font_slant font_x_height
syn keyword mfMacro fullcircle generate gfcorners gobble gobbled grayfont h
syn keyword mfMacro halfcircle hide hround identity image_rules incr infinity
syn keyword mfMacro interact interpath intersectionpoint inverse italcorr
syn keyword mfMacro join_radius killtext labelfont labels left lft localfont
syn keyword mfMacro loggingall lowres lowres_fix mag magstep makebox makegrid
syn keyword mfMacro makelabel maketicks max min mod mode mode_def mode_name
syn keyword mfMacro mode_setup nodisplays notransforms number_of_modes numtok
syn keyword mfMacro o_correction openit origin pen_bot pen_lft pen_rt pen_top
syn keyword mfMacro penlabels penpos penrazor penspeck pensquare penstroke
syn keyword mfMacro pickup pixels_per_inch proof proofoffset proofrule
syn keyword mfMacro proofrulethickness quartercircle range reflectedabout
syn keyword mfMacro relax right rotatedabout rotatedaround round rt rulepen
syn keyword mfMacro savepen screenchars screen_rows screen_cols screenrule
syn keyword mfMacro screenstrokes shipit showit slantfont smode smoke softjoin
syn keyword mfMacro solve stop superellipse takepower tensepath titlefont
syn keyword mfMacro tolerance top tracingall tracingnone undraw undrawdot
syn keyword mfMacro unfill unfilldraw unitpixel unitsquare unitvector up upto
syn keyword mfMacro vround w whatever
endif
" Some other basic macro names, e.g., from cmbase, logo, etc.
if get(g:, "other_mf_macros", 1)
syn keyword mfDef beginlogochar
syn keyword mfDef font_setup
syn keyword mfPrimitive generate
if !exists("other_mf_macros")
let other_mf_macros = 1 " Set this to '0' if your code gets too colourful
" metapost.vim does so to turn off Metafont macros
endif
if other_mf_macros
syn keyword mfMacro beginlogochar
endif
" Numeric tokens
syn match mfNumeric "[-]\=\d\+"
syn match mfNumeric "[-]\=\.\d\+"
syn match mfNumeric "[-]\=\d\+\.\d\+"
syn match mfNumeric "[-]\=\d\+"
syn match mfNumeric "[-]\=\.\d\+"
syn match mfNumeric "[-]\=\d\+\.\d\+"
" METAFONT lengths
syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
syn match mfLength "[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
syn match mfLength "[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
syn match mfLength "[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
" Metafont lengths
syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
syn match mfLength "\<[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
syn match mfLength "\<[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
syn match mfLength "\<[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
" Metafont coordinates and points
syn match mfCoord "\<[xy]\d\+\>"
syn match mfPoint "\<z\d\+\>"
" String constants
syn match mfOpenString /"[^"]*/
syn region mfString oneline keepend start=+"+ end=+"+
syn region mfString start=+"+ end=+"+
" Comments:
syn keyword mfTodoComment contained TODO FIXME XXX DEBUG NOTE
syn match mfComment "%.*$" contains=mfTodoComment,@Spell
syn match mfComment "%.*$"
" synchronizing
syn sync maxlines=50
" Define the default highlighting
hi def link mfBoolExp Statement
hi def link mfNumExp Statement
hi def link mfPairExp Statement
hi def link mfPathExp Statement
hi def link mfPenExp Statement
hi def link mfPicExp Statement
hi def link mfStringExp Statement
hi def link mfInternal Identifier
hi def link mfCommand Statement
hi def link mfType Type
hi def link mfStatement Statement
hi def link mfDefinition Statement
hi def link mfCondition Conditional
hi def link mfPrimitive Statement
hi def link mfDef Function
hi def link mfVardef mfDef
hi def link mfPrimaryDef mfDef
hi def link mfSecondaryDef mfDef
hi def link mfTertiaryDef mfDef
hi def link mfCoord Identifier
hi def link mfPoint Identifier
hi def link mfNumeric Number
hi def link mfLength Number
hi def link mfComment Comment
hi def link mfString String
hi def link mfOpenString Todo
hi def link mfSuffixParam Label
hi def link mfNewInternal mfInternal
hi def link mfVariable Identifier
hi def link mfConstant Constant
hi def link mfTodoComment Todo
" Only when an item doesn't have highlighting yet
hi def link mfBoolExp Statement
hi def link mfNumExp Statement
hi def link mfInternal Identifier
hi def link mfPairExp Statement
hi def link mfPathExp Statement
hi def link mfPenExp Statement
hi def link mfPicExp Statement
hi def link mfStringExp Statement
hi def link mfCommand Statement
hi def link mfType Type
hi def link mfStatement Statement
hi def link mfDefinition Statement
hi def link mfCondition Conditional
hi def link mfPrimitive Statement
hi def link mfMacro Macro
hi def link mfCoord Identifier
hi def link mfPoint Identifier
hi def link mfNumeric Number
hi def link mfLength Number
hi def link mfComment Comment
hi def link mfString String
let b:current_syntax = "mf"
" vim:sw=2
" vim: ts=8
+90 -740
View File
@@ -1,765 +1,115 @@
" Vim syntax file
" Language: MetaPost
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
" Last Change: 2016 Oct 01
" Language: MetaPost
" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
" Last Change: April 30, 2001
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
let s:cpo_sav = &cpo
set cpo&vim
let plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost
let other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither
if exists("g:plain_mf_macros")
let s:plain_mf_macros = g:plain_mf_macros
endif
if exists("g:plain_mf_modes")
let s:plain_mf_modes = g:plain_mf_modes
endif
if exists("g:other_mf_macros")
let s:other_mf_macros = g:other_mf_macros
endif
let g:plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost
let g:plain_mf_modes = 0 " No METAFONT modes
let g:other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither
" Read the METAFONT syntax to start with
" Read the Metafont syntax to start with
runtime! syntax/mf.vim
unlet b:current_syntax " Necessary for syn include below
" Restore the value of existing global variables
if exists("s:plain_mf_macros")
let g:plain_mf_macros = s:plain_mf_macros
else
unlet g:plain_mf_macros
endif
if exists("s:plain_mf_modes")
let g:plain_mf_modes = s:plain_mf_modes
else
unlet g:plain_mf_modes
endif
if exists("s:other_mf_macros")
let g:other_mf_macros = s:other_mf_macros
else
unlet g:other_mf_macros
endif
" MetaPost has TeX inserts for typeset labels
" verbatimtex, btex, and etex will be treated as keywords
syn match mpTeXbegin "\(verbatimtex\|btex\)"
syn match mpTeXend "etex"
syn region mpTeXinsert start="\(verbatimtex\|btex\)"hs=e+1 end="etex"he=s-1 contains=mpTeXbegin,mpTeXend keepend
" Use TeX highlighting inside verbatimtex/btex... etex
syn include @MPTeX syntax/tex.vim
unlet b:current_syntax
" These are defined as keywords rather than using matchgroup
" in order to make them available to syntaxcomplete.
syn keyword mpTeXdelim btex etex verbatimtex contained
syn region mpTeXinsert
\ start=/\<verbatimtex\>\|\<btex\>/rs=e+1
\ end=/\<etex\>/re=s-1 keepend
\ contains=@MPTeX,mpTeXdelim
" MetaPost primitives not found in Metafont
syn keyword mpInternal bluepart clip color dashed fontsize greenpart infont
syn keyword mpInternal linecap linejoin llcorner lrcorner miterlimit mpxbreak
syn keyword mpInternal prologues redpart setbounds tracinglostchars
syn keyword mpInternal truecorners ulcorner urcorner withcolor
" iskeyword must be set after the syn include above, because tex.vim sets `syn
" iskeyword`. Note that keywords do not contain numbers (numbers are
" subscripts)
syntax iskeyword @,_
" MetaPost primitives not found in METAFONT
syn keyword mpBoolExp bounded clipped filled stroked textual arclength
syn keyword mpNumExp arctime blackpart bluepart colormodel cyanpart
syn keyword mpNumExp fontsize greenpart greypart magentapart redpart
syn keyword mpPairExp yellowpart llcorner lrcorner ulcorner urcorner
" envelope is seemingly undocumented, but it exists since mpost 1.003.
" The syntax is: envelope <polygonal pen> of <path primary>. For example,
" path p;
" p := envelope pensquare of (up--left);
" (Thanks to Daniel H. Luecking for the example!)
syn keyword mpPathExp envelope pathpart
syn keyword mpPenExp penpart
syn keyword mpPicExp dashpart glyph infont
syn keyword mpStringExp fontpart readfrom textpart
syn keyword mpType cmykcolor color rgbcolor
" Other MetaPost primitives listed in the manual
syn keyword mpPrimitive mpxbreak within
" Internal quantities not found in METAFONT
" (Table 6 in MetaPost: A User's Manual)
syn keyword mpInternal defaultcolormodel hour minute linecap linejoin
syn keyword mpInternal miterlimit mpprocset mpversion numberprecision
syn keyword mpInternal numbersystem outputfilename outputformat
syn keyword mpInternal outputformatoptions outputtemplate prologues
syn keyword mpInternal restoreclipcolor tracinglostchars troffmode
syn keyword mpInternal truecorners
" List of commands not found in METAFONT (from MetaPost: A User's Manual)
syn keyword mpCommand clip closefrom dashed filenametemplate fontmapfile
syn keyword mpCommand fontmapline setbounds withcmykcolor withcolor
syn keyword mpCommand withgreyscale withoutcolor withpostscript
syn keyword mpCommand withprescript withrgbcolor write
" METAFONT internal variables not found in MetaPost
syn keyword notDefined autorounding chardx chardy fillin granularity
syn keyword notDefined proofing smoothing tracingedges tracingpens
syn keyword notDefined turningcheck xoffset yoffset
" Suffix defined only in METAFONT:
syn keyword notDefined nodot
" Other not implemented primitives (see MetaPost: A User's Manual, §C.1)
syn keyword notDefined cull display openwindow numspecial totalweight
syn keyword notDefined withweight
" Metafont primitives not found in MetaPost
syn keyword notDefined autorounding chardx chardy fillin granularity hppp
syn keyword notDefined proofing smoothing tracingedges tracingpens
syn keyword notDefined turningcheck vppp xoffset yoffset
" Keywords defined by plain.mp
if get(g:, "plain_mp_macros", 1) || get(g:, "mp_metafun_macros", 0)
syn keyword mpDef beginfig clear_pen_memory clearit clearpen clearpen
syn keyword mpDef clearxy colorpart cutdraw downto draw drawarrow
syn keyword mpDef drawdblarrow drawdot drawoptions endfig erase
syn keyword mpDef exitunless fill filldraw flex gobble hide interact
syn keyword mpDef label loggingall makelabel numtok penstroke pickup
syn keyword mpDef range reflectedabout rotatedaround shipit
syn keyword mpDef stop superellipse takepower tracingall tracingnone
syn keyword mpDef undraw undrawdot unfill unfilldraw upto
syn match mpDef "???"
syn keyword mpVardef arrowhead bbox bot buildcycle byte ceiling center
syn keyword mpVardef counterclockwise decr dir direction directionpoint
syn keyword mpVardef dotlabel dotlabels image incr interpath inverse
syn keyword mpVardef labels lft magstep max min penlabels penpos round
syn keyword mpVardef rt savepen solve tensepath thelabel top unitvector
syn keyword mpVardef whatever z
syn keyword mpPrimaryDef div dotprod gobbled mod
syn keyword mpSecondaryDef intersectionpoint
syn keyword mpTertiaryDef cutafter cutbefore softjoin thru
syn keyword mpNewInternal ahangle ahlength bboxmargin beveled butt defaultpen
syn keyword mpNewInternal defaultscale dotlabeldiam eps epsilon infinity
syn keyword mpNewInternal join_radius labeloffset mitered pen_bot pen_lft
syn keyword mpNewInternal pen_rt pen_top rounded squared tolerance
" Predefined constants
syn keyword mpConstant EOF background base_name base_version black
syn keyword mpConstant blankpicture blue ditto down evenly fullcircle
syn keyword mpConstant green halfcircle identity left origin penrazor
syn keyword mpConstant penspeck pensquare quartercircle red right
syn keyword mpConstant unitsquare up white withdots
" Other predefined variables
syn keyword mpVariable currentpen currentpen_path currentpicture cuttings
syn keyword mpVariable defaultfont extra_beginfig extra_endfig
syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\>/
syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\.\%(lft\|rt\|bot\|top\|ulft\|urt\|llft\|lrt\)\>/
" let statements:
syn keyword mpnumExp abs
syn keyword mpDef rotatedabout
syn keyword mpCommand bye relax
" on and off are not technically keywords, but it is nice to highlight them
" inside dashpattern().
syn keyword mpOnOff off on contained
syn keyword mpDash dashpattern contained
syn region mpDashPattern
\ start="dashpattern\s*"
\ end=")"he=e-1
\ contains=mfNumeric,mfLength,mpOnOff,mpDash
if !exists("plain_mp_macros")
let plain_mp_macros = 1 " Set this to '0' if your source gets too colourful
endif
if plain_mp_macros
syn keyword mpMacro ahangle ahlength background bbox bboxmargin beginfig
syn keyword mpMacro beveled black blue buildcycle butt center cutafter
syn keyword mpMacro cutbefore cuttings dashpattern defaultfont defaultpen
syn keyword mpMacro defaultscale dotlabel dotlabels drawarrow drawdblarrow
syn keyword mpMacro drawoptions endfig evenly extra_beginfig extra_endfig
syn keyword mpMacro green label labeloffset mitered red rounded squared
syn keyword mpMacro thelabel white base_name base_version
syn keyword mpMacro upto downto exitunless relax gobble gobbled
syn keyword mpMacro interact loggingall tracingall tracingnone
syn keyword mpMacro eps epsilon infinity right left up down origin
syn keyword mpMacro quartercircle halfcircle fullcircle unitsquare identity
syn keyword mpMacro blankpicture withdots ditto EOF pensquare penrazor
syn keyword mpMacro penspeck whatever abs round ceiling byte dir unitvector
syn keyword mpMacro inverse counterclockwise tensepath mod div dotprod
syn keyword mpMacro takepower direction directionpoint intersectionpoint
syn keyword mpMacro softjoin incr decr reflectedabout rotatedaround
syn keyword mpMacro rotatedabout min max flex superellipse interpath
syn keyword mpMacro magstep currentpen currentpen_path currentpicture
syn keyword mpMacro fill draw filldraw drawdot unfill undraw unfilldraw
syn keyword mpMacro undrawdot erase cutdraw image pickup numeric_pickup
syn keyword mpMacro pen_lft pen_rt pen_top pen_bot savepen clearpen
syn keyword mpMacro clear_pen_memory lft rt top bot ulft urt llft lrt
syn keyword mpMacro penpos penstroke arrowhead makelabel labels penlabel
syn keyword mpMacro range numtok thru clearxy clearit clearpen pickup
syn keyword mpMacro shipit bye hide stop solve
endif
" Keywords defined by mfplain.mp
if get(g:, "mfplain_mp_macros", 0)
syn keyword mpDef beginchar capsule_def change_width
syn keyword mpDef define_blacker_pixels define_corrected_pixels
syn keyword mpDef define_good_x_pixels define_good_y_pixels
syn keyword mpDef define_horizontal_corrected_pixels define_pixels
syn keyword mpDef define_whole_blacker_pixels define_whole_pixels
syn keyword mpDef define_whole_vertical_blacker_pixels
syn keyword mpDef define_whole_vertical_pixels endchar
syn keyword mpDef font_coding_scheme font_extra_space font_identifier
syn keyword mpDef font_normal_shrink font_normal_space
syn keyword mpDef font_normal_stretch font_quad font_size font_slant
syn keyword mpDef font_x_height italcorr labelfont lowres_fix makebox
syn keyword mpDef makegrid maketicks mode_def mode_setup proofrule
syn keyword mpDef smode
syn keyword mpVardef hround proofrulethickness vround
syn keyword mpNewInternal blacker o_correction
syn keyword mpVariable extra_beginchar extra_endchar extra_setup rulepen
if !exists("mfplain_mp_macros")
let mfplain_mp_macros = 0 " Set this to '1' to include these macro names
endif
if mfplain_mp_macros
syn keyword mpMacro beginchar blacker capsule_def change_width
syn keyword mpMacro define_blacker_pixels define_corrected_pixels
syn keyword mpMacro define_good_x_pixels define_good_y_pixels
syn keyword mpMacro define_horizontal_corrected_pixels
syn keyword mpMacro define_pixels define_whole_blacker_pixels
syn keyword mpMacro define_whole_vertical_blacker_pixels
syn keyword mpMacro define_whole_vertical_pixels endchar
syn keyword mpMacro extra_beginchar extra_endchar extra_setup
syn keyword mpMacro font_coding_scheme font_extra_space font_identifier
syn keyword mpMacro font_normal_shrink font_normal_space
syn keyword mpMacro font_normal_stretch font_quad font_size
syn keyword mpMacro font_slant font_x_height italcorr labelfont
syn keyword mpMacro makebox makegrid maketicks mode_def mode_setup
syn keyword mpMacro o_correction proofrule proofrulethickness rulepen smode
" plus some no-ops, also from mfplain.mp
syn keyword mpDef cull cullit gfcorners imagerules nodisplays
syn keyword mpDef notransforms openit proofoffset screenchars
syn keyword mpDef screenrule screenstrokes showit
syn keyword mpVardef grayfont slantfont titlefont
syn keyword mpVariable currenttransform
syn keyword mpConstant unitpixel
" These are not listed in the MetaPost manual, and some are ignored by
" MetaPost, but are nonetheless defined in mfplain.mp
syn keyword mpDef killtext
syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
syn keyword mpVariable aspect_ratio localfont mag mode mode_name
syn keyword mpVariable proofcolor
syn keyword mpConstant lowres proof smoke
syn keyword mpNewInternal autorounding bp_per_pixel granularity
syn keyword mpNewInternal number_of_modes proofing smoothing turningcheck
syn keyword mpMacro cullit currenttransform gfcorners grayfont hround
syn keyword mpMacro imagerules lowres_fix nodisplays notransforms openit
syn keyword mpMacro proofoffset screenchars screenrule screenstrokes
syn keyword mpMacro showit slantfont titlefont unitpixel vround
endif
" Keywords defined by all base macro packages:
" - (r)boxes.mp
" - format.mp
" - graph.mp
" - marith.mp
" - sarith.mp
" - string.mp
" - TEX.mp
if get(g:, "other_mp_macros", 1)
" boxes and rboxes
syn keyword mpDef boxjoin drawboxed drawboxes drawunboxed
syn keyword mpNewInternal circmargin defaultdx defaultdy rbox_radius
syn keyword mpVardef boxit bpath circleit fixpos fixsize generic_declare
syn keyword mpVardef generic_redeclare generisize pic rboxit str_prefix
" format
syn keyword mpVardef Mformat format init_numbers roundd
syn keyword mpVariable Fe_base Fe_plus
syn keyword mpConstant Ten_to
" graph
syn keyword mpDef Gfor Gxyscale OUT auto begingraph endgraph gdata
syn keyword mpDef gdraw gdrawarrow gdrawdblarrow gfill plot
syn keyword mpVardef augment autogrid frame gdotlabel glabel grid itick
syn keyword mpVardef otick
syn keyword mpVardef Mreadpath setcoords setrange
syn keyword mpNewInternal Gmarks Gminlog Gpaths linear log
syn keyword mpVariable Autoform Gemarks Glmarks Gumarks
syn keyword mpConstant Gtemplate
syn match mpVariable /Gmargin\.\%(low\|high\)/
" marith
syn keyword mpVardef Mabs Meform Mexp Mexp_str Mlog Mlog_Str Mlog_str
syn keyword mpPrimaryDef Mdiv Mmul
syn keyword mpSecondaryDef Madd Msub
syn keyword mpTertiaryDef Mleq
syn keyword mpNewInternal Mten Mzero
" sarith
syn keyword mpVardef Sabs Scvnum
syn keyword mpPrimaryDef Sdiv Smul
syn keyword mpSecondaryDef Sadd Ssub
syn keyword mpTertiaryDef Sleq Sneq
" string
syn keyword mpVardef cspan isdigit loptok
" TEX
syn keyword mpVardef TEX TEXPOST TEXPRE
" Keywords defined by other macro packages, e.g., boxes.mp
if !exists("other_mp_macros")
let other_mp_macros = 1 " Set this to '0' if your source gets too colourful
endif
if other_mp_macros
syn keyword mpMacro circmargin defaultdx defaultdy
syn keyword mpMacro boxit boxjoin bpath circleit drawboxed drawboxes
syn keyword mpMacro drawunboxed fixpos fixsize pic
endif
" Up to date as of 23-Sep-2016.
if get(g:, "mp_metafun_macros", 0)
" These keywords have been added manually.
syn keyword mpPrimitive runscript
" The following MetaFun keywords have been extracted automatically from
" ConTeXt source code. They include all "public" macros (where a macro is
" considered public if and only if it does not start with _, mfun_, mlib_, or
" do_, and it does not end with _), all "public" unsaved variables, and all
" `let` statements.
" mp-abck.mpiv
syn keyword mpDef abck_grid_line anchor_box box_found boxfilloptions
syn keyword mpDef boxgridoptions boxlineoptions draw_multi_pars
syn keyword mpDef draw_multi_side draw_multi_side_path freeze_box
syn keyword mpDef initialize_box initialize_box_pos
syn keyword mpDef multi_side_draw_options show_multi_kind
syn keyword mpDef show_multi_pars
syn keyword mpVardef abck_baseline_grid abck_draw_path abck_graphic_grid
syn keyword mpVariable boxdashtype boxfilloffset boxfilltype
syn keyword mpVariable boxgriddirection boxgriddistance boxgridshift
syn keyword mpVariable boxgridtype boxgridwidth boxlineoffset
syn keyword mpVariable boxlineradius boxlinetype boxlinewidth multikind
syn keyword mpConstant context_abck
" mp-apos.mpiv
syn keyword mpDef anch_sidebars_draw boxfilloptions boxlineoptions
syn keyword mpDef connect_positions
syn keyword mpConstant context_apos
" mp-asnc.mpiv
syn keyword mpDef FlushSyncTasks ProcessSyncTask ResetSyncTasks
syn keyword mpDef SetSyncColor SetSyncThreshold SyncTask
syn keyword mpVardef PrepareSyncTasks SyncBox TheSyncColor
syn keyword mpVardef TheSyncThreshold
syn keyword mpVariable CurrentSyncClass NOfSyncPaths SyncColor
syn keyword mpVariable SyncLeftOffset SyncPaths SyncTasks SyncThreshold
syn keyword mpVariable SyncThresholdMethod SyncWidth
syn keyword mpConstant context_asnc
" mp-back.mpiv
syn keyword mpDef some_double_back some_hash
syn keyword mpVariable back_nillcolor
syn keyword mpConstant context_back
" mp-bare.mpiv
syn keyword mpVardef colordecimals rawtextext
syn keyword mpPrimaryDef infont
syn keyword mpConstant context_bare
" mp-base.mpiv
" This is essentially plain.mp with only a few keywords added
syn keyword mpNumExp graypart
syn keyword mpType graycolor greycolor
syn keyword mpConstant cyan magenta yellow
" mp-butt.mpiv
syn keyword mpDef predefinedbutton some_button
syn keyword mpConstant context_butt
" mp-char.mpiv
syn keyword mpDef flow_begin_chart flow_begin_sub_chart
syn keyword mpDef flow_chart_draw_comment flow_chart_draw_exit
syn keyword mpDef flow_chart_draw_label flow_chart_draw_text
syn keyword mpDef flow_clip_chart flow_collapse_points
syn keyword mpDef flow_connect_bottom_bottom flow_connect_bottom_left
syn keyword mpDef flow_connect_bottom_right flow_connect_bottom_top
syn keyword mpDef flow_connect_left_bottom flow_connect_left_left
syn keyword mpDef flow_connect_left_right flow_connect_left_top
syn keyword mpDef flow_connect_right_bottom flow_connect_right_left
syn keyword mpDef flow_connect_right_right flow_connect_right_top
syn keyword mpDef flow_connect_top_bottom flow_connect_top_left
syn keyword mpDef flow_connect_top_right flow_connect_top_top
syn keyword mpDef flow_draw_connection flow_draw_connection_point
syn keyword mpDef flow_draw_midpoint flow_draw_shape
syn keyword mpDef flow_draw_test_area flow_draw_test_shape
syn keyword mpDef flow_draw_test_shapes flow_end_chart
syn keyword mpDef flow_end_sub_chart flow_flush_connections
syn keyword mpDef flow_flush_picture flow_flush_pictures
syn keyword mpDef flow_flush_shape flow_flush_shapes
syn keyword mpDef flow_initialize_grid flow_new_chart flow_new_shape
syn keyword mpDef flow_scaled_to_grid flow_show_connection
syn keyword mpDef flow_show_connections flow_show_shapes
syn keyword mpDef flow_xy_offset flow_y_pos
syn keyword mpVardef flow_connection_path flow_down_on_grid
syn keyword mpVardef flow_down_to_grid flow_i_point flow_left_on_grid
syn keyword mpVardef flow_left_to_grid flow_offset
syn keyword mpVardef flow_points_initialized flow_right_on_grid
syn keyword mpVardef flow_right_to_grid flow_smooth_connection
syn keyword mpVardef flow_trim_points flow_trimmed flow_up_on_grid
syn keyword mpVardef flow_up_to_grid flow_valid_connection
syn keyword mpVardef flow_x_on_grid flow_xy_bottom flow_xy_left
syn keyword mpVardef flow_xy_on_grid flow_xy_right flow_xy_top
syn keyword mpVardef flow_y_on_grid
syn keyword mpVariable flow_arrowtip flow_chart_background_color
syn keyword mpVariable flow_chart_offset flow_comment_offset
syn keyword mpVariable flow_connection_arrow_size
syn keyword mpVariable flow_connection_dash_size
syn keyword mpVariable flow_connection_line_color
syn keyword mpVariable flow_connection_line_width
syn keyword mpVariable flow_connection_smooth_size flow_connections
syn keyword mpVariable flow_cpath flow_dash_pattern flow_dashline
syn keyword mpVariable flow_exit_offset flow_forcevalid flow_grid_height
syn keyword mpVariable flow_grid_width flow_label_offset flow_max_x
syn keyword mpVariable flow_max_y flow_peepshape flow_reverse_connection
syn keyword mpVariable flow_reverse_y flow_shape_action flow_shape_archive
syn keyword mpVariable flow_shape_decision flow_shape_down
syn keyword mpVariable flow_shape_fill_color flow_shape_height
syn keyword mpVariable flow_shape_left flow_shape_line_color
syn keyword mpVariable flow_shape_line_width flow_shape_loop
syn keyword mpVariable flow_shape_multidocument flow_shape_node
syn keyword mpVariable flow_shape_procedure flow_shape_product
syn keyword mpVariable flow_shape_right flow_shape_singledocument
syn keyword mpVariable flow_shape_subprocedure flow_shape_up
syn keyword mpVariable flow_shape_wait flow_shape_width
syn keyword mpVariable flow_show_all_points flow_show_con_points
syn keyword mpVariable flow_show_mid_points flow_showcrossing flow_smooth
syn keyword mpVariable flow_touchshape flow_xypoint flow_zfactor
syn keyword mpConstant context_flow
" mp-chem.mpiv
syn keyword mpDef chem_init_all chem_reset chem_start_structure
syn keyword mpDef chem_transformed
syn keyword mpVardef chem_ad chem_adj chem_align chem_arrow chem_au
syn keyword mpVardef chem_b chem_bb chem_bd chem_bw chem_c chem_cc
syn keyword mpVardef chem_ccd chem_cd chem_crz chem_cz chem_dash chem_db
syn keyword mpVardef chem_diff chem_dir chem_do chem_dr chem_draw
syn keyword mpVardef chem_drawarrow chem_eb chem_ed chem_ep chem_er
syn keyword mpVardef chem_es chem_et chem_fill chem_hb chem_init_some
syn keyword mpVardef chem_label chem_ldb chem_ldd chem_line chem_lr
syn keyword mpVardef chem_lrb chem_lrbd chem_lrd chem_lrh chem_lrn
syn keyword mpVardef chem_lrt chem_lrz chem_lsr chem_lsub chem_mark
syn keyword mpVardef chem_marked chem_mid chem_mids chem_midz chem_mir
syn keyword mpVardef chem_mov chem_move chem_number chem_oe chem_off
syn keyword mpVardef chem_pb chem_pe chem_r chem_r_fragment chem_rb
syn keyword mpVardef chem_rbd chem_rd chem_rdb chem_rdd chem_restore
syn keyword mpVardef chem_rh chem_rm chem_rn chem_rot chem_rr chem_rrb
syn keyword mpVardef chem_rrbd chem_rrd chem_rrh chem_rrn chem_rrt
syn keyword mpVardef chem_rrz chem_rsr chem_rsub chem_rt chem_rz chem_s
syn keyword mpVardef chem_save chem_sb chem_sd chem_set chem_sr chem_ss
syn keyword mpVardef chem_start_component chem_stop_component
syn keyword mpVardef chem_stop_structure chem_sub chem_symbol chem_tb
syn keyword mpVardef chem_text chem_z chem_zln chem_zlt chem_zn chem_zrn
syn keyword mpVardef chem_zrt chem_zt
syn keyword mpVariable chem_mark_pair chem_stack_mirror chem_stack_origin
syn keyword mpVariable chem_stack_p chem_stack_previous
syn keyword mpVariable chem_stack_rotation chem_trace_boundingbox
syn keyword mpVariable chem_trace_nesting chem_trace_text
syn keyword mpConstant context_chem
" mp-core.mpiv
syn keyword mpDef FlushSyncTasks ProcessSyncTask
syn keyword mpDef RegisterLocalTextArea RegisterPlainTextArea
syn keyword mpDef RegisterRegionTextArea RegisterTextArea
syn keyword mpDef ResetLocalTextArea ResetSyncTasks ResetTextAreas
syn keyword mpDef SaveTextAreas SetSyncColor SetSyncThreshold
syn keyword mpDef SyncTask anchor_box box_found boxfilloptions
syn keyword mpDef boxgridoptions boxlineoptions collapse_multi_pars
syn keyword mpDef draw_box draw_multi_pars draw_par freeze_box
syn keyword mpDef initialize_area initialize_area_par initialize_box
syn keyword mpDef initialize_box_pos initialize_par
syn keyword mpDef prepare_multi_pars relocate_multipars save_multipar
syn keyword mpDef set_par_line_height show_multi_pars show_par
syn keyword mpDef simplify_multi_pars sort_multi_pars
syn keyword mpVardef InsideSavedTextArea InsideSomeSavedTextArea
syn keyword mpVardef InsideSomeTextArea InsideTextArea PrepareSyncTasks
syn keyword mpVardef SyncBox TextAreaH TextAreaW TextAreaWH TextAreaX
syn keyword mpVardef TextAreaXY TextAreaY TheSyncColor TheSyncThreshold
syn keyword mpVardef baseline_grid graphic_grid multi_par_at_top
syn keyword mpVariable CurrentSyncClass NOfSavedTextAreas
syn keyword mpVariable NOfSavedTextColumns NOfSyncPaths NOfTextAreas
syn keyword mpVariable NOfTextColumns PlainTextArea RegionTextArea
syn keyword mpVariable SavedTextColumns SyncColor SyncLeftOffset SyncPaths
syn keyword mpVariable SyncTasks SyncThreshold SyncThresholdMethod
syn keyword mpVariable SyncWidth TextAreas TextColumns
syn keyword mpVariable auto_multi_par_hsize boxdashtype boxfilloffset
syn keyword mpVariable boxfilltype boxgriddirection boxgriddistance
syn keyword mpVariable boxgridshift boxgridtype boxgridwidth boxlineradius
syn keyword mpVariable boxlinetype boxlinewidth check_multi_par_chain
syn keyword mpVariable compensate_multi_par_topskip
syn keyword mpVariable enable_multi_par_fallback force_multi_par_chain
syn keyword mpVariable ignore_multi_par_page last_multi_par_shift lefthang
syn keyword mpVariable local_multi_par_area multi_column_first_page_hack
syn keyword mpVariable multi_par_pages multiloc multilocs multipar
syn keyword mpVariable multipars multiref multirefs nofmultipars
syn keyword mpVariable obey_multi_par_hang obey_multi_par_more
syn keyword mpVariable one_piece_multi_par par_hang_after par_hang_indent
syn keyword mpVariable par_indent par_left_skip par_line_height
syn keyword mpVariable par_right_skip par_start_pos par_stop_pos
syn keyword mpVariable par_strut_depth par_strut_height ppos righthang
syn keyword mpVariable snap_multi_par_tops somehang span_multi_column_pars
syn keyword mpVariable use_multi_par_region
syn keyword mpConstant context_core
syn keyword LET anchor_area anchor_par draw_area
" mp-cows.mpiv
syn keyword mpConstant context_cows cow
" mp-crop.mpiv
syn keyword mpDef page_marks_add_color page_marks_add_lines
syn keyword mpDef page_marks_add_marking page_marks_add_number
syn keyword mpVardef crop_color crop_gray crop_marks_cmyk
syn keyword mpVardef crop_marks_cmykrgb crop_marks_gray crop_marks_lines
syn keyword mpVariable crop_colors more page
syn keyword mpConstant context_crop
" mp-figs.mpiv
syn keyword mpDef naturalfigure registerfigure
syn keyword mpVardef figuredimensions figureheight figuresize
syn keyword mpVardef figurewidth
syn keyword mpConstant context_figs
" mp-fobg.mpiv
syn keyword mpDef DrawFoFrame
syn keyword mpVardef equalpaths
syn keyword mpPrimaryDef inset outset
syn keyword mpVariable FoBackground FoBackgroundColor FoFrame FoLineColor
syn keyword mpVariable FoLineStyle FoLineWidth FoSplit
syn keyword mpConstant FoAll FoBottom FoDash FoDotted FoDouble FoGroove
syn keyword mpConstant FoHidden FoInset FoLeft FoMedium FoNoColor FoNone
syn keyword mpConstant FoOutset FoRidge FoRight FoSolid FoThick FoThin
syn keyword mpConstant FoTop context_fobg
" mp-form.mpiv
syn keyword mpConstant context_form
" mp-func.mpiv
syn keyword mpDef constructedfunction constructedpairs
syn keyword mpDef constructedpath curvedfunction curvedpairs
syn keyword mpDef curvedpath function pathconnectors straightfunction
syn keyword mpDef straightpairs straightpath
syn keyword mpConstant context_func
" mp-grap.mpiv
syn keyword mpDef Gfor OUT auto begingraph circles crosses diamonds
syn keyword mpDef downtriangles endgraph gdata gdraw gdrawarrow
syn keyword mpDef gdrawdblarrow gfill graph_addto
syn keyword mpDef graph_addto_currentpicture graph_comma
syn keyword mpDef graph_coordinate_multiplication graph_draw
syn keyword mpDef graph_draw_label graph_errorbar_text graph_fill
syn keyword mpDef graph_generate_exponents
syn keyword mpDef graph_generate_label_position
syn keyword mpDef graph_generate_numbers graph_label_location
syn keyword mpDef graph_scan_mark graph_scan_marks graph_setbounds
syn keyword mpDef graph_suffix graph_tick_label
syn keyword mpDef graph_with_pen_and_color graph_withlist
syn keyword mpDef graph_xyscale lefttriangles makefunctionpath plot
syn keyword mpDef plotsymbol points rainbow righttriangles smoothpath
syn keyword mpDef squares stars uptriangles witherrorbars
syn keyword mpVardef addtopath augment autogrid constant_fit
syn keyword mpVardef constant_function det escaped_format exp
syn keyword mpVardef exponential_fit exponential_function format
syn keyword mpVardef formatted frame functionpath gaussian_fit
syn keyword mpVardef gaussian_function gdotlabel glabel graph_Feform
syn keyword mpVardef graph_Meform graph_arrowhead_extent graph_bounds
syn keyword mpVardef graph_clear_bounds
syn keyword mpVardef graph_convert_user_path_to_internal graph_cspan
syn keyword mpVardef graph_draw_arrowhead graph_error graph_errorbars
syn keyword mpVardef graph_exp graph_factor_and_exponent_to_string
syn keyword mpVardef graph_gridline_picture graph_is_null
syn keyword mpVardef graph_label_convert_user_to_internal graph_loptok
syn keyword mpVardef graph_match_exponents graph_mlog
syn keyword mpVardef graph_modified_exponent_ypart graph_pair_adjust
syn keyword mpVardef graph_picture_conversion graph_post_draw
syn keyword mpVardef graph_read_line graph_readpath graph_remap
syn keyword mpVardef graph_scan_path graph_select_exponent_mark
syn keyword mpVardef graph_select_mark graph_set_bounds
syn keyword mpVardef graph_set_default_bounds graph_shapesize
syn keyword mpVardef graph_stash_label graph_tick_mark_spacing
syn keyword mpVardef graph_unknown_pair_bbox grid isdigit itick
syn keyword mpVardef linear_fit linear_function ln logten lorentzian_fit
syn keyword mpVardef lorentzian_function otick polynomial_fit
syn keyword mpVardef polynomial_function power_law_fit
syn keyword mpVardef power_law_function powten setcoords setrange
syn keyword mpVardef sortpath strfmt tick varfmt
syn keyword mpNewInternal Mzero doubleinfinity graph_log_minimum
syn keyword mpNewInternal graph_minimum_number_of_marks largestmantissa
syn keyword mpNewInternal linear lntwo log mlogten singleinfinity
syn keyword mpVariable Autoform determinant fit_chi_squared
syn keyword mpVariable graph_errorbar_picture graph_exp_marks
syn keyword mpVariable graph_frame_pair_a graph_frame_pair_b
syn keyword mpVariable graph_lin_marks graph_log_marks graph_modified_bias
syn keyword mpVariable graph_modified_higher graph_modified_lower
syn keyword mpVariable graph_shape r_s resistance_color resistance_name
syn keyword mpConstant context_grap
" mp-grid.mpiv
syn keyword mpDef hlingrid hloggrid vlingrid vloggrid
syn keyword mpVardef hlinlabel hlintext hlogtext linlin linlinpath
syn keyword mpVardef linlog linlogpath loglin loglinpath loglog
syn keyword mpVardef loglogpath processpath vlinlabel vlintext vlogtext
syn keyword mpVariable fmt_initialize fmt_pictures fmt_precision
syn keyword mpVariable fmt_separator fmt_zerocheck grid_eps
syn keyword mpConstant context_grid
" mp-grph.mpiv
syn keyword mpDef beginfig begingraphictextfig data_mpo_file
syn keyword mpDef data_mpy_file doloadfigure draw endfig
syn keyword mpDef endgraphictextfig fill fixedplace graphictext
syn keyword mpDef loadfigure new_graphictext normalwithshade number
syn keyword mpDef old_graphictext outlinefill protectgraphicmacros
syn keyword mpDef resetfig reversefill withdrawcolor withfillcolor
syn keyword mpDef withshade
syn keyword mpVariable currentgraphictext figureshift
syn keyword mpConstant context_grph
" mp-idea.mpiv
syn keyword mpVardef bcomponent ccomponent gcomponent mcomponent
syn keyword mpVardef rcomponent somecolor ycomponent
" mp-luas.mpiv
syn keyword mpDef luacall message
syn keyword mpVardef MP lua lualist
syn keyword mpConstant context_luas
" mp-mlib.mpiv
syn keyword mpDef autoalign bitmapimage circular_shade cmyk comment
syn keyword mpDef defineshade eofill eofillup externalfigure figure
syn keyword mpDef fillup label linear_shade multitonecolor namedcolor
syn keyword mpDef nofill onlayer passarrayvariable passvariable
syn keyword mpDef plain_label register resolvedcolor scantokens
syn keyword mpDef set_circular_vector set_linear_vector shaded
syn keyword mpDef spotcolor startpassingvariable stoppassingvariable
syn keyword mpDef thelabel transparent[] usemetafunlabels
syn keyword mpDef useplainlabels withcircularshade withlinearshade
syn keyword mpDef withmask withproperties withshadecenter
syn keyword mpDef withshadecolors withshadedirection withshadedomain
syn keyword mpDef withshadefactor withshadefraction withshadeorigin
syn keyword mpDef withshaderadius withshadestep withshadetransform
syn keyword mpDef withshadevector withtransparency
syn keyword mpVardef anchored checkbounds checkedbounds
syn keyword mpVardef define_circular_shade define_linear_shade dotlabel
syn keyword mpVardef escaped_format fmttext fontsize format formatted
syn keyword mpVardef installlabel onetimefmttext onetimetextext
syn keyword mpVardef outlinetext plain_thelabel properties rawfmttext
syn keyword mpVardef rawtexbox rawtextext rule strfmt strut texbox
syn keyword mpVardef textext thefmttext thelabel thetexbox thetextext
syn keyword mpVardef tostring transparency_alternative_to_number
syn keyword mpVardef validtexbox varfmt verbatim
syn keyword mpPrimaryDef asgroup infont normalinfont shadedinto
syn keyword mpPrimaryDef shownshadecenter shownshadedirection
syn keyword mpPrimaryDef shownshadeorigin shownshadevector withshade
syn keyword mpPrimaryDef withshademethod
syn keyword mpNewInternal colorburntransparent colordodgetransparent
syn keyword mpNewInternal colortransparent darkentransparent
syn keyword mpNewInternal differencetransparent exclusiontransparent
syn keyword mpNewInternal hardlighttransparent huetransparent
syn keyword mpNewInternal lightentransparent luminositytransparent
syn keyword mpNewInternal multiplytransparent normaltransparent
syn keyword mpNewInternal overlaytransparent saturationtransparent
syn keyword mpNewInternal screentransparent shadefactor softlighttransparent
syn keyword mpNewInternal textextoffset
syn keyword mpType property transparency
syn keyword mpVariable currentoutlinetext shadeddown shadedleft
syn keyword mpVariable shadedright shadedup shadeoffset trace_shades
syn keyword mpConstant context_mlib
" mp-page.mpiv
syn keyword mpDef BoundCoverAreas BoundPageAreas Enlarged FakeRule
syn keyword mpDef FakeWord LoadPageState OverlayBox RuleColor
syn keyword mpDef SetAreaVariables SetPageArea SetPageBackPage
syn keyword mpDef SetPageCoverPage SetPageField SetPageFrontPage
syn keyword mpDef SetPageHsize SetPageHstep SetPageLocation
syn keyword mpDef SetPagePage SetPageSpine SetPageVariables
syn keyword mpDef SetPageVsize SetPageVstep StartCover StartPage
syn keyword mpDef StopCover StopPage SwapPageState innerenlarged
syn keyword mpDef llEnlarged lrEnlarged outerenlarged ulEnlarged
syn keyword mpDef urEnlarged
syn keyword mpVardef BackPageHeight BackPageWidth BackSpace BaseLineSkip
syn keyword mpVardef BodyFontSize BottomDistance BottomHeight
syn keyword mpVardef BottomSpace CoverHeight CoverWidth CurrentColumn
syn keyword mpVardef CurrentHeight CurrentWidth CutSpace EmWidth
syn keyword mpVardef ExHeight FooterDistance FooterHeight
syn keyword mpVardef FrontPageHeight FrontPageWidth HSize HeaderDistance
syn keyword mpVardef HeaderHeight InPageBody InnerEdgeDistance
syn keyword mpVardef InnerEdgeWidth InnerMarginDistance InnerMarginWidth
syn keyword mpVardef InnerSpaceWidth LastPageNumber LayoutColumnDistance
syn keyword mpVardef LayoutColumnWidth LayoutColumns LeftEdgeDistance
syn keyword mpVardef LeftEdgeWidth LeftMarginDistance LeftMarginWidth
syn keyword mpVardef LineHeight MakeupHeight MakeupWidth NOfColumns
syn keyword mpVardef NOfPages OnOddPage OnRightPage OuterEdgeDistance
syn keyword mpVardef OuterEdgeWidth OuterMarginDistance OuterMarginWidth
syn keyword mpVardef OuterSpaceWidth OverlayDepth OverlayHeight
syn keyword mpVardef OverlayLineWidth OverlayOffset OverlayWidth
syn keyword mpVardef PageDepth PageFraction PageNumber PageOffset
syn keyword mpVardef PaperBleed PaperHeight PaperWidth PrintPaperHeight
syn keyword mpVardef PrintPaperWidth RealPageNumber RightEdgeDistance
syn keyword mpVardef RightEdgeWidth RightMarginDistance RightMarginWidth
syn keyword mpVardef SpineHeight SpineWidth StrutDepth StrutHeight
syn keyword mpVardef TextHeight TextWidth TopDistance TopHeight TopSkip
syn keyword mpVardef TopSpace VSize defaultcolormodel
syn keyword mpVariable Area BackPage CoverPage CurrentLayout Field
syn keyword mpVariable FrontPage HorPos Hsize Hstep Location Page
syn keyword mpVariable PageStateAvailable RuleDepth RuleDirection
syn keyword mpVariable RuleFactor RuleH RuleHeight RuleOffset RuleOption
syn keyword mpVariable RuleThickness RuleV RuleWidth Spine VerPos Vsize
syn keyword mpVariable Vstep
syn keyword mpConstant context_page
" mp-shap.mpiv
syn keyword mpDef drawline drawshape some_shape
syn keyword mpDef start_predefined_shape_definition
syn keyword mpDef stop_predefined_shape_definition
syn keyword mpVardef drawpredefinedline drawpredefinedshape
syn keyword mpVardef some_shape_path
syn keyword mpVariable predefined_shapes predefined_shapes_xradius
syn keyword mpVariable predefined_shapes_xxradius
syn keyword mpVariable predefined_shapes_yradius
syn keyword mpVariable predefined_shapes_yyradius
syn keyword mpConstant context_shap
" mp-step.mpiv
syn keyword mpDef initialize_step_variables midbottomboundary
syn keyword mpDef midtopboundary step_begin_cell step_begin_chart
syn keyword mpDef step_cell_ali step_cell_bot step_cell_top
syn keyword mpDef step_cells step_end_cell step_end_chart
syn keyword mpDef step_text_bot step_text_mid step_text_top
syn keyword mpDef step_texts
syn keyword mpVariable cell_distance_x cell_distance_y cell_fill_color
syn keyword mpVariable cell_line_color cell_line_width cell_offset
syn keyword mpVariable chart_align chart_category chart_vertical
syn keyword mpVariable line_distance line_height line_line_color
syn keyword mpVariable line_line_width line_offset nofcells
syn keyword mpVariable text_distance_set text_fill_color text_line_color
syn keyword mpVariable text_line_width text_offset
syn keyword mpConstant context_cell
" mp-symb.mpiv
syn keyword mpDef finishglyph prepareglyph
syn keyword mpConstant lefttriangle midbar onebar righttriangle sidebar
syn keyword mpConstant sublefttriangle subrighttriangle twobar
" mp-text.mpiv
syn keyword mpDef build_parshape
syn keyword mpVardef found_point
syn keyword mpVariable trace_parshape
syn keyword mpConstant context_text
" mp-tool.mpiv
syn keyword mpCommand dump
syn keyword mpDef addbackground b_color beginglyph break centerarrow
syn keyword mpDef clearxy condition data_mpd_file detaileddraw
syn keyword mpDef detailpaths dowithpath draw drawboundary
syn keyword mpDef drawboundingbox drawcontrollines drawcontrolpoints
syn keyword mpDef drawfill draworigin drawpath drawpathonly
syn keyword mpDef drawpathwithpoints drawpoint drawpointlabels
syn keyword mpDef drawpoints drawticks drawwholepath drawxticks
syn keyword mpDef drawyticks endglyph fill finishsavingdata g_color
syn keyword mpDef inner_boundingbox job_name leftarrow loadmodule
syn keyword mpDef midarrowhead naturalizepaths newboolean newcolor
syn keyword mpDef newnumeric newpair newpath newpicture newstring
syn keyword mpDef newtransform normalcolors normaldraw normalfill
syn keyword mpDef normalwithcolor outer_boundingbox pop_boundingbox
syn keyword mpDef popboundingbox popcurrentpicture push_boundingbox
syn keyword mpDef pushboundingbox pushcurrentpicture r_color readfile
syn keyword mpDef recolor redraw refill register_dirty_chars
syn keyword mpDef remapcolor remapcolors remappedcolor reprocess
syn keyword mpDef resetarrows resetcolormap resetdrawoptions
syn keyword mpDef resolvedcolor restroke retext rightarrow savedata
syn keyword mpDef saveoptions scale_currentpicture set_ahlength
syn keyword mpDef set_grid showgrid startplaincompatibility
syn keyword mpDef startsavingdata stopplaincompatibility
syn keyword mpDef stopsavingdata stripe_path_a stripe_path_n undashed
syn keyword mpDef undrawfill untext visualizeddraw visualizedfill
syn keyword mpDef visualizepaths withcolor withgray
syn keyword mpDef xscale_currentpicture xshifted
syn keyword mpDef xyscale_currentpicture yscale_currentpicture
syn keyword mpDef yshifted
syn keyword mpVardef acos acosh anglebetween area arrowhead
syn keyword mpVardef arrowheadonpath arrowpath asciistring asin asinh
syn keyword mpVardef atan basiccolors bbheight bbwidth bcomponent
syn keyword mpVardef blackcolor bottomboundary boundingbox c_phantom
syn keyword mpVardef ccomponent center cleanstring colorcircle
syn keyword mpVardef colordecimals colordecimalslist colorlike colorpart
syn keyword mpVardef colortype complementary complemented copylist cos
syn keyword mpVardef cosh cot cotd curved ddddecimal dddecimal ddecimal
syn keyword mpVardef decorated drawarrowpath epsed exp freedotlabel
syn keyword mpVardef freelabel gcomponent getunstringed grayed greyed
syn keyword mpVardef hsvtorgb infinite innerboundingbox interpolated inv
syn keyword mpVardef invcos inverted invsin invtan laddered leftboundary
syn keyword mpVardef leftpath leftrightpath listsize listtocurves
syn keyword mpVardef listtolines ln log mcomponent new_on_grid
syn keyword mpVardef outerboundingbox paired pen_size penpoint phantom
syn keyword mpVardef pointarrow pow punked rangepath rcomponent
syn keyword mpVardef redecorated repathed rightboundary rightpath
syn keyword mpVardef rotation roundedsquare set_inner_boundingbox
syn keyword mpVardef set_outer_boundingbox setunstringed shapedlist
syn keyword mpVardef simplified sin sinh sortlist sqr straightpath tan
syn keyword mpVardef tand tanh tensecircle thefreelabel topboundary
syn keyword mpVardef tripled undecorated unitvector unspiked unstringed
syn keyword mpVardef whitecolor ycomponent
syn keyword mpPrimaryDef along blownup bottomenlarged cornered crossed
syn keyword mpPrimaryDef enlarged enlonged leftenlarged llenlarged llmoved
syn keyword mpPrimaryDef lrenlarged lrmoved on paralleled randomized
syn keyword mpPrimaryDef randomizedcontrols randomshifted rightenlarged
syn keyword mpPrimaryDef shortened sized smoothed snapped softened squeezed
syn keyword mpPrimaryDef stretched superellipsed topenlarged ulenlarged
syn keyword mpPrimaryDef ulmoved uncolored urenlarged urmoved xsized
syn keyword mpPrimaryDef xstretched xyscaled xysized ysized ystretched zmod
syn keyword mpSecondaryDef anglestriped intersection_point numberstriped
syn keyword mpSecondaryDef peepholed
syn keyword mpTertiaryDef cutends
syn keyword mpNewInternal ahdimple ahvariant anglelength anglemethod
syn keyword mpNewInternal angleoffset charscale cmykcolormodel graycolormodel
syn keyword mpNewInternal greycolormodel maxdimensions metapostversion
syn keyword mpNewInternal nocolormodel rgbcolormodel striped_normal_inner
syn keyword mpNewInternal striped_normal_outer striped_reverse_inner
syn keyword mpNewInternal striped_reverse_outer
syn keyword mpType grayscale greyscale quadruplet triplet
syn keyword mpVariable ahfactor collapse_data color_map drawoptionsfactor
syn keyword mpVariable freedotlabelsize freelabeloffset grid grid_full
syn keyword mpVariable grid_h grid_left grid_nx grid_ny grid_w grid_x
syn keyword mpVariable grid_y intersection_found originlength
syn keyword mpVariable plain_compatibility_data pointlabelfont
syn keyword mpVariable pointlabelscale refillbackground savingdata
syn keyword mpVariable savingdatadone swappointlabels ticklength tickstep
syn keyword mpConstant CRLF DQUOTE PERCENT SPACE bcircle context_tool crlf
syn keyword mpConstant darkblue darkcyan darkgray darkgreen darkmagenta
syn keyword mpConstant darkred darkyellow downtriangle dquote freesquare
syn keyword mpConstant fulldiamond fullsquare fulltriangle lcircle
syn keyword mpConstant lefttriangle lightgray llcircle lltriangle lrcircle
syn keyword mpConstant lrtriangle mpversion nocolor noline oddly
syn keyword mpConstant originpath percent rcircle righttriangle space
syn keyword mpConstant tcircle triangle ulcircle ultriangle unitcircle
syn keyword mpConstant unitdiamond unittriangle uptriangle urcircle
syn keyword mpConstant urtriangle
endif " MetaFun macros
" Define the default highlighting
hi def link mpTeXdelim mpPrimitive
hi def link mpBoolExp mfBoolExp
hi def link mpNumExp mfNumExp
hi def link mpPairExp mfPairExp
hi def link mpPathExp mfPathExp
hi def link mpPenExp mfPenExp
hi def link mpPicExp mfPicExp
hi def link mpStringExp mfStringExp
hi def link mpInternal mfInternal
hi def link mpCommand mfCommand
hi def link mpType mfType
hi def link mpPrimitive mfPrimitive
hi def link mpDef mfDef
hi def link mpVardef mpDef
hi def link mpPrimaryDef mpDef
hi def link mpSecondaryDef mpDef
hi def link mpTertiaryDef mpDef
hi def link mpNewInternal mpInternal
hi def link mpVariable mfVariable
hi def link mpConstant mfConstant
hi def link mpOnOff mpPrimitive
hi def link mpDash mpPrimitive
" Only when an item doesn't have highlighting yet
hi def link mpTeXinsert String
hi def link mpTeXbegin Statement
hi def link mpTeXend Statement
hi def link mpInternal mfInternal
hi def link mpMacro Macro
let b:current_syntax = "mp"
let &cpo = s:cpo_sav
unlet! s:cpo_sav
" vim:sw=2
" vim: ts=8
+1 -1
View File
@@ -1255,7 +1255,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>111</string>
<string>110</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
+1 -1
View File
@@ -30,7 +30,7 @@
#import "MMWindowController.h"
#import "Miscellaneous.h"
#import <Carbon/Carbon.h>
#import <PSMTabBarControl/PSMTabBarControl.h>
#import "PSMTabBarControl/source/PSMTabBarControl.h"
// These have to be the same as in option.h
#define FUOPT_MAXVERT 0x001
+5 -3
View File
@@ -24,7 +24,7 @@
#import "MMVimController.h"
#import "MMVimView.h"
#import "MMWindowController.h"
#import <PSMTabBarControl/PSMTabBarControl.h>
#import "PSMTabBarControl/source/PSMTabBarControl.h"
@@ -50,7 +50,7 @@ enum {
@end
@interface MMVimView (Private)
@interface MMVimView (Private) <PSMTabViewDelegate>
- (BOOL)bottomScrollbarVisible;
- (BOOL)leftScrollbarVisible;
- (BOOL)rightScrollbarVisible;
@@ -581,7 +581,9 @@ enum {
}
}
- (void)tabView:(NSTabView *)tabView updateStateForTabViewItem:(NSTabViewItem *)tabViewItem
{
}
// -- NSView customization ---------------------------------------------------
+1 -1
View File
@@ -71,7 +71,7 @@
#import "MMWindow.h"
#import "MMWindowController.h"
#import "Miscellaneous.h"
#import <PSMTabBarControl/PSMTabBarControl.h>
#import "PSMTabBarControl/source/PSMTabBarControl.h"
// These have to be the same as in option.h
-2
View File
@@ -40,8 +40,6 @@
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
// Deprecated constants in 10.12 SDK
# define NSAlertStyleCritical NSCriticalAlertStyle
# define NSAlertStyleInformational NSInformationalAlertStyle
# define NSAlertStyleWarning NSWarningAlertStyle
# define NSCompositingOperationSourceOver NSCompositeSourceOver
# define NSControlSizeRegular NSRegularControlSize
+190 -46
View File
@@ -22,7 +22,6 @@
1D384A0E100D671700D3C22F /* KeyBinding.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1D384A0D100D671700D3C22F /* KeyBinding.plist */; };
1D44972211FCA9B400B0630F /* MMCoreTextView+ToolTip.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D44972111FCA9B400B0630F /* MMCoreTextView+ToolTip.m */; };
1D493D580C5247BF00AB718C /* Vim in Copy Executables */ = {isa = PBXBuildFile; fileRef = 1D493D570C5247BF00AB718C /* Vim */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
1D60088B0E96A0B2003763F0 /* MMFindReplaceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D60088A0E96A0B2003763F0 /* MMFindReplaceController.m */; };
1D80591F0E1185EA001699D1 /* Miscellaneous.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80591D0E1185EA001699D1 /* Miscellaneous.m */; };
1D80FBD40CBBD3B700102A1C /* MMFullScreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80FBD00CBBD3B700102A1C /* MMFullScreenWindow.m */; };
@@ -63,11 +62,41 @@
1DE8CC620C5E2AAD003F56E3 /* Actions.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1DE8CC610C5E2AAD003F56E3 /* Actions.plist */; };
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 */; };
52818B031C1C08CE00F59085 /* QLStephen.qlgenerator in Copy QuickLookPlugin */ = {isa = PBXBuildFile; fileRef = 52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
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 */; };
52818B031C1C08CE00F59085 /* QLStephen.qlgenerator in Copy QuickLookPlugin */ = {isa = PBXBuildFile; fileRef = 52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
52E08F881DA0C41A00CD9335 /* overflowImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F5E1DA0C41A00CD9335 /* overflowImage.png */; };
52E08F891DA0C41A00CD9335 /* overflowImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F5F1DA0C41A00CD9335 /* overflowImage@2x.png */; };
52E08F8A1DA0C41A00CD9335 /* overflowImagePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F601DA0C41A00CD9335 /* overflowImagePressed.png */; };
52E08F8B1DA0C41A00CD9335 /* overflowImagePressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F611DA0C41A00CD9335 /* overflowImagePressed@2x.png */; };
52E08F8C1DA0C41A00CD9335 /* TabClose_Font_Pressed.psd in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F621DA0C41A00CD9335 /* TabClose_Font_Pressed.psd */; };
52E08F8D1DA0C41A00CD9335 /* TabClose_Font_Pressed@2x.psd in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F631DA0C41A00CD9335 /* TabClose_Font_Pressed@2x.psd */; };
52E08F8E1DA0C41A00CD9335 /* TabClose_Front.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F641DA0C41A00CD9335 /* TabClose_Front.png */; };
52E08F8F1DA0C41A00CD9335 /* TabClose_Front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F651DA0C41A00CD9335 /* TabClose_Front@2x.png */; };
52E08F901DA0C41A00CD9335 /* TabClose_Front_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F661DA0C41A00CD9335 /* TabClose_Front_Pressed.png */; };
52E08F911DA0C41A00CD9335 /* TabClose_Front_Pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F671DA0C41A00CD9335 /* TabClose_Front_Pressed@2x.png */; };
52E08F921DA0C41A00CD9335 /* TabClose_Front_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F681DA0C41A00CD9335 /* TabClose_Front_Rollover.png */; };
52E08F931DA0C41A00CD9335 /* TabClose_Front_Rollover@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F691DA0C41A00CD9335 /* TabClose_Front_Rollover@2x.png */; };
52E08F941DA0C41A00CD9335 /* TabNewMetal.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F6A1DA0C41A00CD9335 /* TabNewMetal.png */; };
52E08F951DA0C41A00CD9335 /* TabNewMetalPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F6B1DA0C41A00CD9335 /* TabNewMetalPressed.png */; };
52E08F961DA0C41A00CD9335 /* TabNewMetalRollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F6C1DA0C41A00CD9335 /* TabNewMetalRollover.png */; };
52E08F971DA0C41A00CD9335 /* Warning.png in Resources */ = {isa = PBXBuildFile; fileRef = 52E08F6D1DA0C41A00CD9335 /* Warning.png */; };
52E08F981DA0C41A00CD9335 /* NSWindow+PSM.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F701DA0C41A00CD9335 /* NSWindow+PSM.m */; };
52E08F991DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F721DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.m */; };
52E08F9A1DA0C41A00CD9335 /* PSMDarkTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F741DA0C41A00CD9335 /* PSMDarkTabStyle.m */; };
52E08F9B1DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F761DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.m */; };
52E08F9C1DA0C41A00CD9335 /* PSMOverflowPopUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F781DA0C41A00CD9335 /* PSMOverflowPopUpButton.m */; };
52E08F9D1DA0C41A00CD9335 /* PSMProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F7A1DA0C41A00CD9335 /* PSMProgressIndicator.m */; };
52E08F9E1DA0C41A00CD9335 /* PSMRolloverButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F7C1DA0C41A00CD9335 /* PSMRolloverButton.m */; };
52E08F9F1DA0C41A00CD9335 /* PSMTabBarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F7E1DA0C41A00CD9335 /* PSMTabBarCell.m */; };
52E08FA01DA0C41A00CD9335 /* PSMTabBarControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F801DA0C41A00CD9335 /* PSMTabBarControl.m */; };
52E08FA11DA0C41A00CD9335 /* PSMTabDragAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F821DA0C41A00CD9335 /* PSMTabDragAssistant.m */; };
52E08FA21DA0C41A00CD9335 /* PSMTabDragWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F841DA0C41A00CD9335 /* PSMTabDragWindow.m */; };
52E08FA31DA0C41A00CD9335 /* PSMYosemiteTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08F871DA0C41A00CD9335 /* PSMYosemiteTabStyle.m */; };
52E08FA71DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08FA61DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.m */; };
52E08FAA1DA0C77100CD9335 /* NSImage+iTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E08FA81DA0C77100CD9335 /* NSImage+iTerm.m */; };
52E08FAC1DA0C85F00CD9335 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52E08FAB1DA0C85F00CD9335 /* QuartzCore.framework */; };
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 = (); }; };
@@ -75,20 +104,6 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
1D493DB80C52533B00AB718C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 53DF68FD067E5B5A0090B5B0;
remoteInfo = PSMTabBarControlFramework;
};
1D493DCC0C5254A400AB718C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 53DF68FC067E5B5A0090B5B0;
remoteInfo = PSMTabBarControlFramework;
};
52818AFE1C1C075300F59085 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 52818AFA1C1C075300F59085 /* QuickLookStephen.xcodeproj */;
@@ -124,7 +139,6 @@
dstSubfolderSpec = 10;
files = (
52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */,
1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */,
);
name = "Copy Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -182,7 +196,6 @@
1D384A0D100D671700D3C22F /* KeyBinding.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = KeyBinding.plist; sourceTree = "<group>"; };
1D44972111FCA9B400B0630F /* MMCoreTextView+ToolTip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MMCoreTextView+ToolTip.m"; sourceTree = "<group>"; };
1D493D570C5247BF00AB718C /* Vim */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = Vim; path = ../Vim; sourceTree = SOURCE_ROOT; };
1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = PSMTabBarControl.xcodeproj; path = PSMTabBarControl/PSMTabBarControl.xcodeproj; sourceTree = "<group>"; };
1D6008820E96886D003763F0 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/FindAndReplace.nib; sourceTree = "<group>"; };
1D6008890E96A0B2003763F0 /* MMFindReplaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMFindReplaceController.h; sourceTree = "<group>"; };
1D60088A0E96A0B2003763F0 /* MMFindReplaceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMFindReplaceController.m; sourceTree = "<group>"; };
@@ -239,6 +252,52 @@
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>"; };
52E08F5E1DA0C41A00CD9335 /* overflowImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = overflowImage.png; sourceTree = "<group>"; };
52E08F5F1DA0C41A00CD9335 /* overflowImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "overflowImage@2x.png"; sourceTree = "<group>"; };
52E08F601DA0C41A00CD9335 /* overflowImagePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = overflowImagePressed.png; sourceTree = "<group>"; };
52E08F611DA0C41A00CD9335 /* overflowImagePressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "overflowImagePressed@2x.png"; sourceTree = "<group>"; };
52E08F621DA0C41A00CD9335 /* TabClose_Font_Pressed.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = TabClose_Font_Pressed.psd; sourceTree = "<group>"; };
52E08F631DA0C41A00CD9335 /* TabClose_Font_Pressed@2x.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = "TabClose_Font_Pressed@2x.psd"; sourceTree = "<group>"; };
52E08F641DA0C41A00CD9335 /* TabClose_Front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabClose_Front.png; sourceTree = "<group>"; };
52E08F651DA0C41A00CD9335 /* TabClose_Front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabClose_Front@2x.png"; sourceTree = "<group>"; };
52E08F661DA0C41A00CD9335 /* TabClose_Front_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabClose_Front_Pressed.png; sourceTree = "<group>"; };
52E08F671DA0C41A00CD9335 /* TabClose_Front_Pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabClose_Front_Pressed@2x.png"; sourceTree = "<group>"; };
52E08F681DA0C41A00CD9335 /* TabClose_Front_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabClose_Front_Rollover.png; sourceTree = "<group>"; };
52E08F691DA0C41A00CD9335 /* TabClose_Front_Rollover@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabClose_Front_Rollover@2x.png"; sourceTree = "<group>"; };
52E08F6A1DA0C41A00CD9335 /* TabNewMetal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNewMetal.png; sourceTree = "<group>"; };
52E08F6B1DA0C41A00CD9335 /* TabNewMetalPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNewMetalPressed.png; sourceTree = "<group>"; };
52E08F6C1DA0C41A00CD9335 /* TabNewMetalRollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabNewMetalRollover.png; sourceTree = "<group>"; };
52E08F6D1DA0C41A00CD9335 /* Warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Warning.png; sourceTree = "<group>"; };
52E08F6F1DA0C41A00CD9335 /* NSWindow+PSM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSWindow+PSM.h"; sourceTree = "<group>"; };
52E08F701DA0C41A00CD9335 /* NSWindow+PSM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSWindow+PSM.m"; sourceTree = "<group>"; };
52E08F711DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMDarkHighContrastTabStyle.h; sourceTree = "<group>"; };
52E08F721DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMDarkHighContrastTabStyle.m; sourceTree = "<group>"; };
52E08F731DA0C41A00CD9335 /* PSMDarkTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMDarkTabStyle.h; sourceTree = "<group>"; };
52E08F741DA0C41A00CD9335 /* PSMDarkTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMDarkTabStyle.m; sourceTree = "<group>"; };
52E08F751DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMLightHighContrastTabStyle.h; sourceTree = "<group>"; };
52E08F761DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMLightHighContrastTabStyle.m; sourceTree = "<group>"; };
52E08F771DA0C41A00CD9335 /* PSMOverflowPopUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMOverflowPopUpButton.h; sourceTree = "<group>"; };
52E08F781DA0C41A00CD9335 /* PSMOverflowPopUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMOverflowPopUpButton.m; sourceTree = "<group>"; };
52E08F791DA0C41A00CD9335 /* PSMProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMProgressIndicator.h; sourceTree = "<group>"; };
52E08F7A1DA0C41A00CD9335 /* PSMProgressIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMProgressIndicator.m; sourceTree = "<group>"; };
52E08F7B1DA0C41A00CD9335 /* PSMRolloverButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMRolloverButton.h; sourceTree = "<group>"; };
52E08F7C1DA0C41A00CD9335 /* PSMRolloverButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMRolloverButton.m; sourceTree = "<group>"; };
52E08F7D1DA0C41A00CD9335 /* PSMTabBarCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMTabBarCell.h; sourceTree = "<group>"; };
52E08F7E1DA0C41A00CD9335 /* PSMTabBarCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMTabBarCell.m; sourceTree = "<group>"; };
52E08F7F1DA0C41A00CD9335 /* PSMTabBarControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMTabBarControl.h; sourceTree = "<group>"; };
52E08F801DA0C41A00CD9335 /* PSMTabBarControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMTabBarControl.m; sourceTree = "<group>"; };
52E08F811DA0C41A00CD9335 /* PSMTabDragAssistant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMTabDragAssistant.h; sourceTree = "<group>"; };
52E08F821DA0C41A00CD9335 /* PSMTabDragAssistant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMTabDragAssistant.m; sourceTree = "<group>"; };
52E08F831DA0C41A00CD9335 /* PSMTabDragWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMTabDragWindow.h; sourceTree = "<group>"; };
52E08F841DA0C41A00CD9335 /* PSMTabDragWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMTabDragWindow.m; sourceTree = "<group>"; };
52E08F851DA0C41A00CD9335 /* PSMTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMTabStyle.h; sourceTree = "<group>"; };
52E08F861DA0C41A00CD9335 /* PSMYosemiteTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSMYosemiteTabStyle.h; sourceTree = "<group>"; };
52E08F871DA0C41A00CD9335 /* PSMYosemiteTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSMYosemiteTabStyle.m; sourceTree = "<group>"; };
52E08FA51DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AMIndeterminateProgressIndicator.h; sourceTree = "<group>"; };
52E08FA61DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AMIndeterminateProgressIndicator.m; sourceTree = "<group>"; };
52E08FA81DA0C77100CD9335 /* NSImage+iTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+iTerm.m"; sourceTree = "<group>"; };
52E08FA91DA0C77100CD9335 /* NSImage+iTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+iTerm.h"; sourceTree = "<group>"; };
52E08FAB1DA0C85F00CD9335 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = ../../../../../../../System/Library/Frameworks/QuartzCore.framework; 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 */
@@ -248,7 +307,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */,
52E08FAC1DA0C85F00CD9335 /* QuartzCore.framework in Frameworks */,
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
1D8B5A53104AF9FF002E59D5 /* Carbon.framework in Frameworks */,
52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */,
@@ -315,6 +374,7 @@
children = (
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
52E08FAB1DA0C85F00CD9335 /* QuartzCore.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
@@ -342,14 +402,6 @@
name = Executables;
sourceTree = "<group>";
};
1D493DB40C52533B00AB718C /* Products */ = {
isa = PBXGroup;
children = (
1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */,
);
name = Products;
sourceTree = "<group>";
};
1DE602460C587F760055263D /* Vim Resources */ = {
isa = PBXGroup;
children = (
@@ -429,9 +481,9 @@
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
52E08F5C1DA0BEB900CD9335 /* PSMTabBarControl */,
52A364721C4A5789005757EC /* Sparkle.framework */,
1D8B5A52104AF9FF002E59D5 /* Carbon.framework */,
1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */,
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
);
@@ -454,6 +506,85 @@
name = Products;
sourceTree = "<group>";
};
52E08F5C1DA0BEB900CD9335 /* PSMTabBarControl */ = {
isa = PBXGroup;
children = (
52E08F5D1DA0C41A00CD9335 /* images */,
52E08F6E1DA0C41A00CD9335 /* source */,
52E08FA41DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator */,
);
name = PSMTabBarControl;
sourceTree = "<group>";
};
52E08F5D1DA0C41A00CD9335 /* images */ = {
isa = PBXGroup;
children = (
52E08F5E1DA0C41A00CD9335 /* overflowImage.png */,
52E08F5F1DA0C41A00CD9335 /* overflowImage@2x.png */,
52E08F601DA0C41A00CD9335 /* overflowImagePressed.png */,
52E08F611DA0C41A00CD9335 /* overflowImagePressed@2x.png */,
52E08F621DA0C41A00CD9335 /* TabClose_Font_Pressed.psd */,
52E08F631DA0C41A00CD9335 /* TabClose_Font_Pressed@2x.psd */,
52E08F641DA0C41A00CD9335 /* TabClose_Front.png */,
52E08F651DA0C41A00CD9335 /* TabClose_Front@2x.png */,
52E08F661DA0C41A00CD9335 /* TabClose_Front_Pressed.png */,
52E08F671DA0C41A00CD9335 /* TabClose_Front_Pressed@2x.png */,
52E08F681DA0C41A00CD9335 /* TabClose_Front_Rollover.png */,
52E08F691DA0C41A00CD9335 /* TabClose_Front_Rollover@2x.png */,
52E08F6A1DA0C41A00CD9335 /* TabNewMetal.png */,
52E08F6B1DA0C41A00CD9335 /* TabNewMetalPressed.png */,
52E08F6C1DA0C41A00CD9335 /* TabNewMetalRollover.png */,
52E08F6D1DA0C41A00CD9335 /* Warning.png */,
);
name = images;
path = PSMTabBarControl/images;
sourceTree = "<group>";
};
52E08F6E1DA0C41A00CD9335 /* source */ = {
isa = PBXGroup;
children = (
52E08F6F1DA0C41A00CD9335 /* NSWindow+PSM.h */,
52E08F701DA0C41A00CD9335 /* NSWindow+PSM.m */,
52E08F711DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.h */,
52E08F721DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.m */,
52E08F731DA0C41A00CD9335 /* PSMDarkTabStyle.h */,
52E08F741DA0C41A00CD9335 /* PSMDarkTabStyle.m */,
52E08F751DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.h */,
52E08F761DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.m */,
52E08F771DA0C41A00CD9335 /* PSMOverflowPopUpButton.h */,
52E08F781DA0C41A00CD9335 /* PSMOverflowPopUpButton.m */,
52E08F791DA0C41A00CD9335 /* PSMProgressIndicator.h */,
52E08F7A1DA0C41A00CD9335 /* PSMProgressIndicator.m */,
52E08F7B1DA0C41A00CD9335 /* PSMRolloverButton.h */,
52E08F7C1DA0C41A00CD9335 /* PSMRolloverButton.m */,
52E08F7D1DA0C41A00CD9335 /* PSMTabBarCell.h */,
52E08F7E1DA0C41A00CD9335 /* PSMTabBarCell.m */,
52E08F7F1DA0C41A00CD9335 /* PSMTabBarControl.h */,
52E08F801DA0C41A00CD9335 /* PSMTabBarControl.m */,
52E08F811DA0C41A00CD9335 /* PSMTabDragAssistant.h */,
52E08F821DA0C41A00CD9335 /* PSMTabDragAssistant.m */,
52E08F831DA0C41A00CD9335 /* PSMTabDragWindow.h */,
52E08F841DA0C41A00CD9335 /* PSMTabDragWindow.m */,
52E08F851DA0C41A00CD9335 /* PSMTabStyle.h */,
52E08F861DA0C41A00CD9335 /* PSMYosemiteTabStyle.h */,
52E08F871DA0C41A00CD9335 /* PSMYosemiteTabStyle.m */,
);
name = source;
path = PSMTabBarControl/source;
sourceTree = "<group>";
};
52E08FA41DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator */ = {
isa = PBXGroup;
children = (
52E08FA81DA0C77100CD9335 /* NSImage+iTerm.m */,
52E08FA91DA0C77100CD9335 /* NSImage+iTerm.h */,
52E08FA51DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.h */,
52E08FA61DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.m */,
);
name = AMIndeterminateProgressIndicator;
path = PSMTabBarControl/AMIndeterminateProgressIndicator;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -473,7 +604,6 @@
buildRules = (
);
dependencies = (
1D493DCD0C5254A400AB718C /* PBXTargetDependency */,
52818B011C1C084100F59085 /* PBXTargetDependency */,
);
name = MacVim;
@@ -504,10 +634,6 @@
mainGroup = 29B97314FDCFA39411CA2CEA /* MacVim */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 1D493DB40C52533B00AB718C /* Products */;
ProjectRef = 1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */;
},
{
ProductGroup = 52818AFB1C1C075300F59085 /* Products */;
ProjectRef = 52818AFA1C1C075300F59085 /* QuickLookStephen.xcodeproj */;
@@ -521,13 +647,6 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = PSMTabBarControl.framework;
remoteRef = 1D493DB80C52533B00AB718C /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
@@ -544,7 +663,12 @@
files = (
52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */,
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
52E08F931DA0C41A00CD9335 /* TabClose_Front_Rollover@2x.png in Resources */,
52E08F951DA0C41A00CD9335 /* TabNewMetalPressed.png in Resources */,
52E08F8E1DA0C41A00CD9335 /* TabClose_Front.png in Resources */,
52E08F901DA0C41A00CD9335 /* TabClose_Front_Pressed.png in Resources */,
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
52E08F961DA0C41A00CD9335 /* TabNewMetalRollover.png in Resources */,
1D0E051C0BA5F83800B6049E /* Colors.plist in Resources */,
1DD04DEC0C529C5E006CDC2B /* Credits.rtf in Resources */,
1DE8CC620C5E2AAD003F56E3 /* Actions.plist in Resources */,
@@ -554,29 +678,40 @@
1DD3D51E0D82D4C9006E4320 /* ibeam.png in Resources */,
1D22374B0E45DF4800E6FFFF /* Advanced.png in Resources */,
1DCD00BF0E50B2B700460166 /* Attention.png in Resources */,
52E08F8D1DA0C41A00CD9335 /* TabClose_Font_Pressed@2x.psd in Resources */,
1DCD00C00E50B2B700460166 /* Copy.png in Resources */,
1DCD00C10E50B2B700460166 /* Cut.png in Resources */,
1DCD00C20E50B2B700460166 /* FindHelp.png in Resources */,
52E08F881DA0C41A00CD9335 /* overflowImage.png in Resources */,
1DCD00C30E50B2B700460166 /* FindNext.png in Resources */,
1DCD00C40E50B2B700460166 /* FindPrev.png in Resources */,
1DCD00C50E50B2B700460166 /* Help.png in Resources */,
1DCD00C60E50B2B700460166 /* LoadSesn.png in Resources */,
52E08F911DA0C41A00CD9335 /* TabClose_Front_Pressed@2x.png in Resources */,
52E08F8A1DA0C41A00CD9335 /* overflowImagePressed.png in Resources */,
1DCD00C70E50B2B700460166 /* Make.png in Resources */,
1DCD00C80E50B2B700460166 /* Open.png in Resources */,
1DCD00C90E50B2B700460166 /* Paste.png in Resources */,
1DCD00CA0E50B2B700460166 /* Print.png in Resources */,
1DCD00CB0E50B2B700460166 /* Redo.png in Resources */,
52E08F8B1DA0C41A00CD9335 /* overflowImagePressed@2x.png in Resources */,
1DCD00CC0E50B2B700460166 /* Replace.png in Resources */,
1DCD00CD0E50B2B700460166 /* RunCtags.png in Resources */,
1DCD00CE0E50B2B700460166 /* RunScript.png in Resources */,
1DCD00CF0E50B2B700460166 /* Save.png in Resources */,
1DCD00D00E50B2B700460166 /* SaveAll.png in Resources */,
1DCD00D10E50B2B700460166 /* SaveSesn.png in Resources */,
52E08F941DA0C41A00CD9335 /* TabNewMetal.png in Resources */,
52E08F891DA0C41A00CD9335 /* overflowImage@2x.png in Resources */,
1DCD00D20E50B2B700460166 /* TagJump.png in Resources */,
1DCD00D30E50B2B700460166 /* Undo.png in Resources */,
52E08F971DA0C41A00CD9335 /* Warning.png in Resources */,
52E08F8F1DA0C41A00CD9335 /* TabClose_Front@2x.png in Resources */,
1D8BEA74104992290069B072 /* FindAndReplace.nib in Resources */,
1D9C60520EF79C0C0034AD44 /* MacVim.icns in Resources */,
52E08F8C1DA0C41A00CD9335 /* TabClose_Font_Pressed.psd in Resources */,
1D384A0E100D671700D3C22F /* KeyBinding.plist in Resources */,
52E08F921DA0C41A00CD9335 /* TabClose_Front_Rollover.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -605,14 +740,24 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
52E08F9D1DA0C41A00CD9335 /* PSMProgressIndicator.m in Sources */,
52E08F9A1DA0C41A00CD9335 /* PSMDarkTabStyle.m in Sources */,
52E08FA11DA0C41A00CD9335 /* PSMTabDragAssistant.m in Sources */,
8D11072D0486CEB800E47090 /* main.m in Sources */,
1D1474980C56703C0038FA2B /* MacVim.m in Sources */,
52E08F9F1DA0C41A00CD9335 /* PSMTabBarCell.m in Sources */,
1D1474A00C5673AE0038FA2B /* MMAppController.m in Sources */,
52E08FA31DA0C41A00CD9335 /* PSMYosemiteTabStyle.m in Sources */,
52E08F991DA0C41A00CD9335 /* PSMDarkHighContrastTabStyle.m in Sources */,
1D1474AA0C5677450038FA2B /* MMTextStorage.m in Sources */,
1D1474B00C5678370038FA2B /* MMTextView.m in Sources */,
52E08FA21DA0C41A00CD9335 /* PSMTabDragWindow.m in Sources */,
52E08F981DA0C41A00CD9335 /* NSWindow+PSM.m in Sources */,
1D1474B60C56796D0038FA2B /* MMVimController.m in Sources */,
1D1474BC0C567A910038FA2B /* MMWindowController.m in Sources */,
52E08F9B1DA0C41A00CD9335 /* PSMLightHighContrastTabStyle.m in Sources */,
1D09AB420C6A4D520045497E /* MMTypesetter.m in Sources */,
52E08F9E1DA0C41A00CD9335 /* PSMRolloverButton.m in Sources */,
1DD66ECE0C803D3600EBDAB3 /* MMApplication.m in Sources */,
1D80FBD40CBBD3B700102A1C /* MMFullScreenWindow.m in Sources */,
1D80FBD60CBBD3B700102A1C /* MMVimView.m in Sources */,
@@ -620,21 +765,20 @@
1DE3F8EB0D50F84600052B9E /* MMPreferenceController.m in Sources */,
0395A8330D71ED7800881434 /* DBPrefsWindowController.m in Sources */,
1D80591F0E1185EA001699D1 /* Miscellaneous.m in Sources */,
52E08FA01DA0C41A00CD9335 /* PSMTabBarControl.m in Sources */,
1D145C7F0E5227CE00691AA0 /* MMTextViewHelper.m in Sources */,
52E08FAA1DA0C77100CD9335 /* NSImage+iTerm.m in Sources */,
1D60088B0E96A0B2003763F0 /* MMFindReplaceController.m in Sources */,
1DE63FFB0E71820F00959BDB /* MMCoreTextView.m in Sources */,
1D44972211FCA9B400B0630F /* MMCoreTextView+ToolTip.m in Sources */,
52E08FA71DA0C4AE00CD9335 /* AMIndeterminateProgressIndicator.m in Sources */,
52E08F9C1DA0C41A00CD9335 /* PSMOverflowPopUpButton.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
1D493DCD0C5254A400AB718C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = PSMTabBarControlFramework;
targetProxy = 1D493DCC0C5254A400AB718C /* PBXContainerItemProxy */;
};
52818B011C1C084100F59085 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = QuickLookStephen;
@@ -0,0 +1,19 @@
//
// AMIndeterminateProgressIndicator.h
//
// Created by Andreas on 23.01.07.
// Copyright 2007 Andreas Mayer. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface AMIndeterminateProgressIndicator : NSView
@property(nonatomic, retain) NSColor *color;
- (void)startAnimation:(id)sender;
- (void)stopAnimation:(id)sender;
@end
@@ -0,0 +1,164 @@
//
// AMIndeterminateProgressIndicator.m
//
// Created by Andreas on 23.01.07.
// Copyright 2007 Andreas Mayer. All rights reserved.
//
// Updated to use a layer animation by George Nachman on 3/10/2016.
#import "AMIndeterminateProgressIndicator.h"
#import "NSImage+iTerm.h"
#import <QuartzCore/QuartzCore.h>
static CGFloat DegreesToRadians(double radians) {
return radians / 180.0 * M_PI;
}
@interface AMIndeterminateProgressIndicator()
@property(nonatomic, retain) CAKeyframeAnimation *animation;
@end
@implementation AMIndeterminateProgressIndicator {
NSSize _animationSize;
}
- (id)initWithFrame:(NSRect)frameRect {
self = [super initWithFrame:frameRect];
if (self) {
self.wantsLayer = YES;
[self setColor:[NSColor blackColor]];
}
return self;
}
- (void)dealloc {
[_animation release];
[_color release];
[super dealloc];
}
- (void)setColor:(NSColor *)value {
if (_color != value) {
[_color autorelease];
_color = [value retain];
assert([_color alphaComponent] > 0.999);
}
}
- (NSSize)physicalSize {
NSSize size = self.frame.size;
CGFloat scale = self.layer.contentsScale;
size.width *= scale;
size.height *= scale;
return size;
}
- (void)startAnimation:(id)sender {
if (!self.animation || !NSEqualSizes(_animationSize, self.physicalSize)) {
_animationSize = self.physicalSize;
self.animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
self.animation.calculationMode = kCAAnimationDiscrete;
self.animation.duration = 0.5;
self.animation.values = self.images;
self.animation.repeatCount = INFINITY;
}
[self.layer removeAllAnimations];
[self.layer addAnimation:_animation forKey:@"contents"];
}
- (void)stopAnimation:(id)sender {
[self.layer removeAllAnimations];
}
// Returns an array of CGImageRefs for each frame of the animation.
- (NSArray *)images {
NSMutableArray *frames = [NSMutableArray array];
NSSize size = self.physicalSize;
for (NSInteger step = 0; step < self.numberOfSteps; step++) {
NSImage *image = [[[NSImage alloc] initWithSize:size] autorelease];
[image lockFocus];
[self drawStep:step];
[image unlockFocus];
NSBitmapImageRep *rep = image.bitmapImageRep;
NSData *data = [rep representationUsingType:NSPNGFileType
properties:@{ NSImageInterlaced: @NO,
NSImageCompressionFactor: @1 }];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
CGImageRef cgImage = CGImageCreateWithPNGDataProvider(provider,
NULL,
true,
kCGRenderingIntentDefault);
CFRelease(provider);
[frames addObject:(id)cgImage];
CFRelease(cgImage);
}
return frames;
}
- (NSInteger)numberOfSteps {
return 12;
}
- (void)drawStrokeFromPoint:(NSPoint)firstPoint
toPoint:(NSPoint)secondPoint
strokeWidth:(CGFloat)strokeWidth {
NSLineCapStyle previousLineCapStyle = [NSBezierPath defaultLineCapStyle];
CGFloat previousLineWidth = [NSBezierPath defaultLineWidth];
[NSBezierPath setDefaultLineCapStyle:NSRoundLineCapStyle];
[NSBezierPath setDefaultLineWidth:strokeWidth];
[NSBezierPath strokeLineFromPoint:firstPoint toPoint:secondPoint];
// Restore previous defaults
[NSBezierPath setDefaultLineCapStyle:previousLineCapStyle];
[NSBezierPath setDefaultLineWidth:previousLineWidth];
}
- (void)drawStep:(NSInteger)step {
CGRect frame = self.frame;
// Scale frame by the layer's contentsScale so we fill it properly.
CGFloat scale = self.layer.contentsScale;
frame.size.width *= scale;
frame.size.height *= scale;
frame.origin.x *= scale;
frame.origin.y *= scale;
float size = MIN(frame.size.width, frame.size.height);
NSPoint center = NSMakePoint(NSMidX(frame), NSMidY(frame));
CGFloat outerRadius;
CGFloat innerRadius;
const CGFloat strokeWidth = size * 0.09;
if (size >= 32.0 * scale) {
outerRadius = size * 0.38;
innerRadius = size * 0.23;
} else {
outerRadius = size * 0.48;
innerRadius = size * 0.27;
}
NSPoint innerPoint;
NSPoint outerPoint;
CGFloat anglePerStep = 360 / self.numberOfSteps;
CGFloat initialAngle = DegreesToRadians(270 - (step * anglePerStep));
for (NSInteger i = 0; i < self.numberOfSteps; i++) {
CGFloat currentAngle = initialAngle - DegreesToRadians(anglePerStep) * i;
[[_color colorWithAlphaComponent:1.0 - sqrt(i) * 0.25] set];
outerPoint = NSMakePoint(center.x + cos(currentAngle) * outerRadius,
center.y + sin(currentAngle) * outerRadius);
innerPoint = NSMakePoint(center.x + cos(currentAngle) * innerRadius,
center.y + sin(currentAngle) * innerRadius);
[self drawStrokeFromPoint:innerPoint toPoint:outerPoint strokeWidth:strokeWidth];
}
}
@end
@@ -0,0 +1,15 @@
//
// NSImage+iTerm.h
// iTerm
//
// Created by George Nachman on 7/20/14.
//
//
#import <Cocoa/Cocoa.h>
@interface NSImage (iTerm)
- (NSBitmapImageRep *)bitmapImageRep;
@end
@@ -0,0 +1,45 @@
//
// NSImage+iTerm.m
// iTerm
//
// Created by George Nachman on 7/20/14.
//
//
#import "NSImage+iTerm.h"
@implementation NSImage (iTerm)
- (NSBitmapImageRep *)bitmapImageRep {
int width = [self size].width;
int height = [self size].height;
if (width < 1 || height < 1) {
return nil;
}
NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
pixelsWide:width
pixelsHigh:height
bitsPerSample:8
samplesPerPixel:4
hasAlpha:YES
isPlanar:NO
colorSpaceName:NSDeviceRGBColorSpace
bytesPerRow:width * 4
bitsPerPixel:32];
NSGraphicsContext *ctx = [NSGraphicsContext graphicsContextWithBitmapImageRep: rep];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:ctx];
[self drawAtPoint:NSZeroPoint
fromRect:NSZeroRect
operation:NSCompositeCopy
fraction:1.0];
[ctx flushGraphics];
[NSGraphicsContext restoreGraphicsState];
return [rep autorelease];
}
@end
@@ -1,24 +0,0 @@
{
IBClasses = (
{
ACTIONS = {newWindow = id; };
CLASS = AppController;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{CLASS = FakeModel; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
ACTIONS = {addNewTab = id; closeTab = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
CLASS = PSMTabBarControl;
LANGUAGE = ObjC;
OUTLETS = {delegate = id; partnerView = id; style = id; tabView = NSTabView; };
SUPERCLASS = NSControl;
}
);
IBVersion = 1;
}
@@ -1,21 +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>135 107 356 240 0 0 1680 1028 </string>
<key>IBEditorPositions</key>
<dict>
<key>29</key>
<string>130 357 371 44 0 0 1680 1028 </string>
</dict>
<key>IBFramework Version</key>
<string>443.0</string>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
</array>
<key>IBSystem Version</key>
<string>8H14</string>
</dict>
</plist>
Binary file not shown.
@@ -1,22 +0,0 @@
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
CLASS = PSMTabBarControlInspector;
LANGUAGE = ObjC;
OUTLETS = {
"_allowsDragBetweenWindows" = NSButton;
"_canCloseOnlyTab" = NSButton;
"_cellMaxWidth" = NSTextField;
"_cellMinWidth" = NSTextField;
"_cellOptimumWidth" = NSTextField;
"_hideForSingleTab" = NSButton;
"_showAddTab" = NSButton;
"_sizeToFit" = NSButton;
"_stylePopUp" = NSPopUpButton;
};
SUPERCLASS = IBInspector;
}
);
IBVersion = 1;
}
@@ -1,16 +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>83 72 356 240 0 0 1680 1028 </string>
<key>IBFramework Version</key>
<string>446.1</string>
<key>IBOpenObjects</key>
<array>
<integer>3</integer>
</array>
<key>IBSystem Version</key>
<string>8I127</string>
</dict>
</plist>
@@ -1,28 +0,0 @@
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{CLASS = PSMAquaTabStyle; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{CLASS = PSMMetalTabStyle; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{CLASS = PSMOverflowPopUpButton; LANGUAGE = ObjC; SUPERCLASS = NSPopUpButton; },
{
CLASS = PSMProgressIndicator;
LANGUAGE = ObjC;
SUPERCLASS = NSProgressIndicator;
},
{CLASS = PSMRolloverButton; LANGUAGE = ObjC; SUPERCLASS = NSButton; },
{CLASS = PSMTabBarCell; LANGUAGE = ObjC; SUPERCLASS = NSActionCell; },
{
CLASS = PSMTabBarControl;
LANGUAGE = ObjC;
OUTLETS = {delegate = id; partnerView = id; style = id; tabView = NSTabView; };
SUPERCLASS = NSControl;
},
{
CLASS = PSMTabBarControlPalette;
LANGUAGE = ObjC;
OUTLETS = {repImage = NSImageView; };
SUPERCLASS = IBPalette;
}
);
IBVersion = 1;
}
@@ -1,16 +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>83 142 356 240 0 0 1680 1028 </string>
<key>IBFramework Version</key>
<string>443.0</string>
<key>IBOpenObjects</key>
<array>
<integer>2</integer>
</array>
<key>IBSystem Version</key>
<string>8H14</string>
</dict>
</plist>
@@ -1,38 +0,0 @@
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
ACTIONS = {
addNewTab = id;
closeTab = id;
configAddTabButton = id;
configCanCloseOnlyTab = id;
configHideForSingleTab = id;
configStyle = id;
configTabMaxWidth = id;
configTabMinWidth = id;
configTabOptimumWidth = id;
configTabSizeToFit = id;
isProcessingAction = id;
setIconNamed = id;
setObjectCount = id;
setTabLabel = id;
stopProcessing = id;
toggleToolbar = id;
};
CLASS = WindowController;
LANGUAGE = ObjC;
OUTLETS = {
drawer = NSDrawer;
iconButton = NSPopUpButton;
isProcessingButton = NSButton;
objectCounterField = NSTextField;
tabBar = PSMTabBarControl;
tabField = NSTextField;
tabView = NSTabView;
};
SUPERCLASS = NSWindowController;
}
);
IBVersion = 1;
}
@@ -1,25 +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>35 49 356 240 0 0 1024 746 </string>
<key>IBEditorPositions</key>
<dict>
<key>18</key>
<string>271 466 481 64 0 0 1024 746 </string>
<key>20</key>
<string>400 254 224 482 0 0 1024 746 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
<key>IBOpenObjects</key>
<array>
<integer>18</integer>
<integer>20</integer>
<integer>5</integer>
</array>
<key>IBSystem Version</key>
<string>8J135</string>
</dict>
</plist>
-24
View File
@@ -1,24 +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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>PSMTabBarControl</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.positivespinmedia.PSMTabBarControl</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>PSM1</string>
<key>CFBundleVersion</key>
<string>1.1</string>
</dict>
</plist>
@@ -1,7 +0,0 @@
{
PSMTabBarControl = {
SuperClass = NSControl;
Attributes = {
};
};
}
@@ -1,719 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
53DF6901067E5B8E0090B5B0 /* All */ = {
isa = PBXAggregateTarget;
buildConfigurationList = C056398708A954F8003078D8 /* Build configuration list for PBXAggregateTarget "All" */;
buildPhases = (
);
dependencies = (
53DF6905067E5B930090B5B0 /* PBXTargetDependency */,
);
name = All;
productName = All;
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
13F8B89007B43554008AE28D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD92D38A0106425D02CA0E72 /* Cocoa.framework */; };
523897F415BDA9AC00498A53 /* TabClose_Front_Pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897EE15BDA9AC00498A53 /* TabClose_Front_Pressed@2x.png */; };
523897F515BDA9AC00498A53 /* TabClose_Front_Rollover@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897EF15BDA9AC00498A53 /* TabClose_Front_Rollover@2x.png */; };
523897F615BDA9AC00498A53 /* TabClose_Front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897F015BDA9AC00498A53 /* TabClose_Front@2x.png */; };
523897F715BDA9AC00498A53 /* TabNewMetal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897F115BDA9AC00498A53 /* TabNewMetal@2x.png */; };
523897F815BDA9AC00498A53 /* TabNewMetalPressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897F215BDA9AC00498A53 /* TabNewMetalPressed@2x.png */; };
523897F915BDA9AC00498A53 /* TabNewMetalRollover@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523897F315BDA9AC00498A53 /* TabNewMetalRollover@2x.png */; };
52A57C0F15BBA230003EC59C /* TabClose_Front.png in Resources */ = {isa = PBXBuildFile; fileRef = 52A57C0C15BBA230003EC59C /* TabClose_Front.png */; };
52A57C1015BBA230003EC59C /* TabClose_Front_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 52A57C0D15BBA230003EC59C /* TabClose_Front_Pressed.png */; };
52A57C1115BBA230003EC59C /* TabClose_Front_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 52A57C0E15BBA230003EC59C /* TabClose_Front_Rollover.png */; };
52C0B9B415BDB7A9000C268F /* overflowImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52C0B9B215BDB7A9000C268F /* overflowImage@2x.png */; };
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 */; };
A2082A9109EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */; };
A2129BB209AEB58F00724E6C /* PSMProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */; };
A2129BB309AEB58F00724E6C /* PSMProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */; };
A251BE850959A1B90058BC7F /* PSMOverflowPopUpButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */; };
A251BE860959A1B90058BC7F /* PSMOverflowPopUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */; };
A251BE870959A1B90058BC7F /* PSMTabBarCell.h in Headers */ = {isa = PBXBuildFile; fileRef = A251BE830959A1B90058BC7F /* PSMTabBarCell.h */; };
A251BE880959A1B90058BC7F /* PSMTabBarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE840959A1B90058BC7F /* PSMTabBarCell.m */; };
A268E80409A9822A00E082AA /* AquaTabNew.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7F809A9822900E082AA /* AquaTabNew.png */; };
A268E80509A9822A00E082AA /* AquaTabNewPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7F909A9822900E082AA /* AquaTabNewPressed.png */; };
A268E80609A9822A00E082AA /* AquaTabNewRollover.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7FA09A9822900E082AA /* AquaTabNewRollover.png */; };
A268E80709A9822A00E082AA /* TabNewMetal.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7FB09A9822900E082AA /* TabNewMetal.png */; };
A268E80809A9822A00E082AA /* TabNewMetalPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7FC09A9822900E082AA /* TabNewMetalPressed.png */; };
A268E80909A9822A00E082AA /* TabNewMetalRollover.png in Resources */ = {isa = PBXBuildFile; fileRef = A268E7FD09A9822900E082AA /* TabNewMetalRollover.png */; };
A268EA6209A9831800E082AA /* PSMRolloverButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A268EA5F09A9831800E082AA /* PSMRolloverButton.h */; };
A268EA6309A9831800E082AA /* PSMRolloverButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A268EA6009A9831800E082AA /* PSMRolloverButton.m */; };
A27E47850A28EE76007BA395 /* TabIcon.tif in Resources */ = {isa = PBXBuildFile; fileRef = A20822F00959F6AA00C5F5A4 /* TabIcon.tif */; };
A27E47880A28EE7C007BA395 /* TabControlRep.tif in Resources */ = {isa = PBXBuildFile; fileRef = A20822EF0959F6AA00C5F5A4 /* TabControlRep.tif */; };
A2C0D99509AF870000ED379C /* pi.png in Resources */ = {isa = PBXBuildFile; fileRef = A2C0D99309AF870000ED379C /* pi.png */; };
A2D32EDC09A634C900EC8662 /* PSMTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */; };
A2D32EF709A63BF700EC8662 /* AquaTabClose_Front_Pressed.tif in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF009A63BF700EC8662 /* AquaTabClose_Front_Pressed.tif */; };
A2D32EF809A63BF700EC8662 /* AquaTabClose_Front_Rollover.tif in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF109A63BF700EC8662 /* AquaTabClose_Front_Rollover.tif */; };
A2D32EF909A63BF700EC8662 /* AquaTabClose_Front.tif in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF209A63BF700EC8662 /* AquaTabClose_Front.tif */; };
A2D32EFA09A63BF700EC8662 /* AquaTabsBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF309A63BF700EC8662 /* AquaTabsBackground.png */; };
A2D32EFB09A63BF700EC8662 /* AquaTabsDown.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF409A63BF700EC8662 /* AquaTabsDown.png */; };
A2D32EFC09A63BF700EC8662 /* AquaTabsSeparator.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF509A63BF700EC8662 /* AquaTabsSeparator.png */; };
A2D32EFD09A63BF700EC8662 /* AquaTabsSeparatorDown.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D32EF609A63BF700EC8662 /* AquaTabsSeparatorDown.png */; };
A2D32F0009A63D7A00EC8662 /* PSMMetalTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */; };
A2D32F0109A63D7A00EC8662 /* PSMMetalTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */; };
A2D3317C09A68B7500EC8662 /* AquaTabsDownGraphite.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D3317A09A68B7500EC8662 /* AquaTabsDownGraphite.png */; };
A2D3317D09A68B7500EC8662 /* AquaTabsDownNonKey.png in Resources */ = {isa = PBXBuildFile; fileRef = A2D3317B09A68B7500EC8662 /* AquaTabsDownNonKey.png */; };
A2D98B0A0A2B432C0064C6F8 /* PSMUnifiedTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */; };
A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */; };
A2D98B120A2B43FA0064C6F8 /* NSBezierPath_AMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */; };
A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
53DF6904067E5B930090B5B0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0259C573FE90428111CA0C5A /* Project object */;
proxyType = 1;
remoteGlobalIDString = 53DF68FC067E5B5A0090B5B0;
remoteInfo = PSMTabBarControlFramework;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0259C576FE90428111CA0C5A /* PSMTabBarControl.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControl.m; path = source/PSMTabBarControl.m; sourceTree = "<group>"; };
0259C577FE90428111CA0C5A /* PSMTabBarControlInspector.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControlInspector.m; path = source/PSMTabBarControlInspector.m; sourceTree = "<group>"; };
0259C578FE90428111CA0C5A /* PSMTabBarControlPalette.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControlPalette.m; path = source/PSMTabBarControlPalette.m; sourceTree = "<group>"; };
0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControl.h; path = source/PSMTabBarControl.h; sourceTree = "<group>"; };
0259C57BFE90428111CA0C5A /* PSMTabBarControlInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControlInspector.h; path = source/PSMTabBarControlInspector.h; sourceTree = "<group>"; };
0259C57CFE90428111CA0C5A /* PSMTabBarControlPalette.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControlPalette.h; path = source/PSMTabBarControlPalette.h; sourceTree = "<group>"; };
0259C57FFE90428111CA0C5A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/PSMTabBarControlInspector.nib; sourceTree = "<group>"; };
0259C581FE90428111CA0C5A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/PSMTabBarControlPalette.nib; sourceTree = "<group>"; };
0259C583FE90428111CA0C5A /* palette.table */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = palette.table; sourceTree = "<group>"; };
13EB9DBD07DE0F1E00EB933A /* InterfaceBuilder.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = InterfaceBuilder.framework; path = /System/Library/Frameworks/InterfaceBuilder.framework; sourceTree = "<absolute>"; };
13F8B88807B434F6008AE28D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
13F8B88A07B434F6008AE28D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
32DBCF980370C29C00C91783 /* PSMTabBarControl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControl_Prefix.pch; path = source/PSMTabBarControl_Prefix.pch; sourceTree = "<group>"; };
523897EE15BDA9AC00498A53 /* TabClose_Front_Pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabClose_Front_Pressed@2x.png"; path = "images/TabClose_Front_Pressed@2x.png"; sourceTree = "<group>"; };
523897EF15BDA9AC00498A53 /* TabClose_Front_Rollover@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabClose_Front_Rollover@2x.png"; path = "images/TabClose_Front_Rollover@2x.png"; sourceTree = "<group>"; };
523897F015BDA9AC00498A53 /* TabClose_Front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabClose_Front@2x.png"; path = "images/TabClose_Front@2x.png"; sourceTree = "<group>"; };
523897F115BDA9AC00498A53 /* TabNewMetal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabNewMetal@2x.png"; path = "images/TabNewMetal@2x.png"; sourceTree = "<group>"; };
523897F215BDA9AC00498A53 /* TabNewMetalPressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabNewMetalPressed@2x.png"; path = "images/TabNewMetalPressed@2x.png"; sourceTree = "<group>"; };
523897F315BDA9AC00498A53 /* TabNewMetalRollover@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabNewMetalRollover@2x.png"; path = "images/TabNewMetalRollover@2x.png"; sourceTree = "<group>"; };
52A57C0C15BBA230003EC59C /* TabClose_Front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front.png; path = images/TabClose_Front.png; sourceTree = "<group>"; };
52A57C0D15BBA230003EC59C /* TabClose_Front_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front_Pressed.png; path = images/TabClose_Front_Pressed.png; sourceTree = "<group>"; };
52A57C0E15BBA230003EC59C /* TabClose_Front_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front_Rollover.png; path = images/TabClose_Front_Rollover.png; sourceTree = "<group>"; };
52C0B9B215BDB7A9000C268F /* overflowImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "overflowImage@2x.png"; path = "images/overflowImage@2x.png"; sourceTree = "<group>"; };
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>"; };
8D1AC9730486D14A00FE50C9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D1AC97B0486D23100FE50C9 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
A2072A2409ABD88600304BCB /* Folder.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Folder.tif; path = images/Folder.tif; sourceTree = "<group>"; };
A2072A2509ABD88600304BCB /* Globe.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Globe.tiff; path = images/Globe.tiff; sourceTree = "<group>"; };
A2072B5C09AC1FA500304BCB /* Warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Warning.png; path = images/Warning.png; sourceTree = "<group>"; };
A20822EF0959F6AA00C5F5A4 /* TabControlRep.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = TabControlRep.tif; path = images/TabControlRep.tif; sourceTree = "<group>"; };
A20822F00959F6AA00C5F5A4 /* TabIcon.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = TabIcon.tif; path = images/TabIcon.tif; sourceTree = "<group>"; };
A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabDragAssistant.h; path = source/PSMTabDragAssistant.h; sourceTree = "<group>"; };
A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabDragAssistant.m; path = source/PSMTabDragAssistant.m; sourceTree = "<group>"; wrapsLines = 0; };
A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMProgressIndicator.h; path = source/PSMProgressIndicator.h; sourceTree = "<group>"; };
A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMProgressIndicator.m; path = source/PSMProgressIndicator.m; sourceTree = "<group>"; };
A246FB040A2BD6F9005BDF7B /* PSMTabBarControlDoc.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html.documentation; name = PSMTabBarControlDoc.html; path = documentation/PSMTabBarControlDoc.html; sourceTree = "<group>"; };
A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = PSMOverflowPopUpButton.h; path = source/PSMOverflowPopUpButton.h; sourceTree = "<group>"; };
A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMOverflowPopUpButton.m; path = source/PSMOverflowPopUpButton.m; sourceTree = "<group>"; };
A251BE830959A1B90058BC7F /* PSMTabBarCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarCell.h; path = source/PSMTabBarCell.h; sourceTree = "<group>"; };
A251BE840959A1B90058BC7F /* PSMTabBarCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarCell.m; path = source/PSMTabBarCell.m; sourceTree = "<group>"; };
A251BE890959A1EA0058BC7F /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = source/AppController.h; sourceTree = "<group>"; };
A251BE8A0959A1EA0058BC7F /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AppController.m; path = source/AppController.m; sourceTree = "<group>"; };
A251BE8B0959A1EA0058BC7F /* FakeModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FakeModel.h; path = source/FakeModel.h; sourceTree = "<group>"; };
A251BE8C0959A1EA0058BC7F /* FakeModel.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FakeModel.m; path = source/FakeModel.m; sourceTree = "<group>"; };
A251BE8D0959A1EA0058BC7F /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = source/main.m; sourceTree = "<group>"; };
A251BE8F0959A23A0058BC7F /* 32x32cancel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = 32x32cancel.png; path = images/32x32cancel.png; sourceTree = "<group>"; };
A251BE9B0959A2530058BC7F /* ReadMe.rtfd */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; path = ReadMe.rtfd; sourceTree = "<group>"; };
A251BEA20959BB5B0058BC7F /* TabBarControlDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TabBarControlDemo-Info.plist"; sourceTree = "<group>"; };
A251BEC30959BC0E0058BC7F /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
A268E7F809A9822900E082AA /* AquaTabNew.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNew.png; path = images/AquaTabNew.png; sourceTree = "<group>"; };
A268E7F909A9822900E082AA /* AquaTabNewPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNewPressed.png; path = images/AquaTabNewPressed.png; sourceTree = "<group>"; };
A268E7FA09A9822900E082AA /* AquaTabNewRollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNewRollover.png; path = images/AquaTabNewRollover.png; sourceTree = "<group>"; };
A268E7FB09A9822900E082AA /* TabNewMetal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetal.png; path = images/TabNewMetal.png; sourceTree = "<group>"; };
A268E7FC09A9822900E082AA /* TabNewMetalPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetalPressed.png; path = images/TabNewMetalPressed.png; sourceTree = "<group>"; };
A268E7FD09A9822900E082AA /* TabNewMetalRollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetalRollover.png; path = images/TabNewMetalRollover.png; sourceTree = "<group>"; };
A268EA5F09A9831800E082AA /* PSMRolloverButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMRolloverButton.h; path = source/PSMRolloverButton.h; sourceTree = "<group>"; };
A268EA6009A9831800E082AA /* PSMRolloverButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMRolloverButton.m; path = source/PSMRolloverButton.m; sourceTree = "<group>"; };
A269361009A778770006911E /* 32x32_log.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = 32x32_log.tiff; path = images/32x32_log.tiff; sourceTree = "<group>"; };
A2A711BA09E5AE1E00D0089B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Window.nib; sourceTree = "<group>"; };
A2A711BD09E5BF0500D0089B /* WindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WindowController.h; path = source/WindowController.h; sourceTree = "<group>"; };
A2A711BE09E5BF0500D0089B /* WindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WindowController.m; path = source/WindowController.m; sourceTree = "<group>"; };
A2C0D99309AF870000ED379C /* pi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pi.png; path = images/pi.png; sourceTree = "<group>"; };
A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabStyle.h; path = source/PSMTabStyle.h; sourceTree = "<group>"; };
A2D32EF009A63BF700EC8662 /* AquaTabClose_Front_Pressed.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = AquaTabClose_Front_Pressed.tif; path = images/AquaTabClose_Front_Pressed.tif; sourceTree = "<group>"; };
A2D32EF109A63BF700EC8662 /* AquaTabClose_Front_Rollover.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = AquaTabClose_Front_Rollover.tif; path = images/AquaTabClose_Front_Rollover.tif; sourceTree = "<group>"; };
A2D32EF209A63BF700EC8662 /* AquaTabClose_Front.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = AquaTabClose_Front.tif; path = images/AquaTabClose_Front.tif; sourceTree = "<group>"; };
A2D32EF309A63BF700EC8662 /* AquaTabsBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsBackground.png; path = images/AquaTabsBackground.png; sourceTree = "<group>"; };
A2D32EF409A63BF700EC8662 /* AquaTabsDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDown.png; path = images/AquaTabsDown.png; sourceTree = "<group>"; };
A2D32EF509A63BF700EC8662 /* AquaTabsSeparator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsSeparator.png; path = images/AquaTabsSeparator.png; sourceTree = "<group>"; };
A2D32EF609A63BF700EC8662 /* AquaTabsSeparatorDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsSeparatorDown.png; path = images/AquaTabsSeparatorDown.png; sourceTree = "<group>"; };
A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMMetalTabStyle.h; path = source/PSMMetalTabStyle.h; sourceTree = "<group>"; };
A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMMetalTabStyle.m; path = source/PSMMetalTabStyle.m; sourceTree = "<group>"; };
A2D3317A09A68B7500EC8662 /* AquaTabsDownGraphite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDownGraphite.png; path = images/AquaTabsDownGraphite.png; sourceTree = "<group>"; };
A2D3317B09A68B7500EC8662 /* AquaTabsDownNonKey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDownNonKey.png; path = images/AquaTabsDownNonKey.png; sourceTree = "<group>"; };
A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMUnifiedTabStyle.h; path = source/PSMUnifiedTabStyle.h; sourceTree = "<group>"; };
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMUnifiedTabStyle.m; path = source/PSMUnifiedTabStyle.m; sourceTree = "<group>"; };
A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NSBezierPath_AMShading.h; path = source/NSBezierPath_AMShading.h; sourceTree = "<group>"; };
A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NSBezierPath_AMShading.m; path = source/NSBezierPath_AMShading.m; sourceTree = "<group>"; };
DD92D38A0106425D02CA0E72 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
53DF68FB067E5B5A0090B5B0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
13F8B89007B43554008AE28D /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0259C574FE90428111CA0C5A /* PSMTabBarControl */ = {
isa = PBXGroup;
children = (
A251BE9B0959A2530058BC7F /* ReadMe.rtfd */,
A246FADE0A2BD446005BDF7B /* Documentation */,
32DBCF9E0370C38000C91783 /* Palette */,
54D33B2C06778E4400C9C163 /* Framework */,
A251BE590959A0550058BC7F /* Demo App */,
0259C582FE90428111CA0C5A /* Resources */,
1ED78706FE9D4A0611CA0C5A /* Products */,
2E58F364FFB232C311CA0CBA /* Frameworks */,
);
name = PSMTabBarControl;
sourceTree = "<group>";
};
0259C582FE90428111CA0C5A /* Resources */ = {
isa = PBXGroup;
children = (
A251BEC20959BC0E0058BC7F /* MainMenu.nib */,
A251BE8E0959A21A0058BC7F /* Images */,
8D1AC9730486D14A00FE50C9 /* Info.plist */,
53DF68FE067E5B5A0090B5B0 /* PSMTabBarControlFramework-Info.plist */,
A251BEA20959BB5B0058BC7F /* TabBarControlDemo-Info.plist */,
8D1AC97F0486D23B00FE50C9 /* InfoPlist.strings */,
A2A711B909E5AE1E00D0089B /* Window.nib */,
);
name = Resources;
sourceTree = "<group>";
};
131E8FE8067F80F40006E0CE /* Resources */ = {
isa = PBXGroup;
children = (
A20822EF0959F6AA00C5F5A4 /* TabControlRep.tif */,
A20822F00959F6AA00C5F5A4 /* TabIcon.tif */,
0259C57EFE90428111CA0C5A /* PSMTabBarControlInspector.nib */,
0259C580FE90428111CA0C5A /* PSMTabBarControlPalette.nib */,
);
name = Resources;
sourceTree = "<group>";
};
13F8B6FD07B43410008AE28D /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
13EB9DBD07DE0F1E00EB933A /* InterfaceBuilder.framework */,
DD92D38A0106425D02CA0E72 /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
13F8B70407B43425008AE28D /* Other Frameworks */ = {
isa = PBXGroup;
children = (
13F8B88807B434F6008AE28D /* AppKit.framework */,
13F8B88A07B434F6008AE28D /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
1ED78706FE9D4A0611CA0C5A /* Products */ = {
isa = PBXGroup;
children = (
53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */,
);
name = Products;
sourceTree = "<group>";
};
2E58F364FFB232C311CA0CBA /* Frameworks */ = {
isa = PBXGroup;
children = (
13F8B6FD07B43410008AE28D /* Linked Frameworks */,
13F8B70407B43425008AE28D /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
32DBCF9E0370C38000C91783 /* Palette */ = {
isa = PBXGroup;
children = (
54D33B2406778DD400C9C163 /* Undo Support */,
54D33B2506778DF000C9C163 /* Classes */,
32DBCF9F0370C38200C91783 /* Other Sources */,
131E8FE8067F80F40006E0CE /* Resources */,
0259C583FE90428111CA0C5A /* palette.table */,
);
name = Palette;
sourceTree = "<group>";
};
32DBCF9F0370C38200C91783 /* Other Sources */ = {
isa = PBXGroup;
children = (
32DBCF980370C29C00C91783 /* PSMTabBarControl_Prefix.pch */,
);
name = "Other Sources";
sourceTree = "<group>";
};
54D33B2406778DD400C9C163 /* Undo Support */ = {
isa = PBXGroup;
children = (
54D33B2806778E3300C9C163 /* PSMTabBarControl.ibclassdescription */,
);
name = "Undo Support";
sourceTree = "<group>";
};
54D33B2506778DF000C9C163 /* Classes */ = {
isa = PBXGroup;
children = (
0259C57BFE90428111CA0C5A /* PSMTabBarControlInspector.h */,
0259C577FE90428111CA0C5A /* PSMTabBarControlInspector.m */,
0259C57CFE90428111CA0C5A /* PSMTabBarControlPalette.h */,
0259C578FE90428111CA0C5A /* PSMTabBarControlPalette.m */,
);
name = Classes;
sourceTree = "<group>";
};
54D33B2C06778E4400C9C163 /* Framework */ = {
isa = PBXGroup;
children = (
0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */,
0259C576FE90428111CA0C5A /* PSMTabBarControl.m */,
A251BE830959A1B90058BC7F /* PSMTabBarCell.h */,
A251BE840959A1B90058BC7F /* PSMTabBarCell.m */,
A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */,
A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */,
A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */,
A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */,
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */,
52FAFCD11C30F4DF00C6E613 /* PSMYosemiteTabStyle.h */,
52FAFCD21C30F4DF00C6E613 /* PSMYosemiteTabStyle.m */,
A268EA5F09A9831800E082AA /* PSMRolloverButton.h */,
A268EA6009A9831800E082AA /* PSMRolloverButton.m */,
A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */,
A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */,
A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */,
A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */,
A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */,
A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */,
A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */,
A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */,
);
name = Framework;
sourceTree = "<group>";
};
A246FADE0A2BD446005BDF7B /* Documentation */ = {
isa = PBXGroup;
children = (
A246FB040A2BD6F9005BDF7B /* PSMTabBarControlDoc.html */,
);
name = Documentation;
sourceTree = "<group>";
};
A251BE590959A0550058BC7F /* Demo App */ = {
isa = PBXGroup;
children = (
A251BE890959A1EA0058BC7F /* AppController.h */,
A251BE8A0959A1EA0058BC7F /* AppController.m */,
A2A711BD09E5BF0500D0089B /* WindowController.h */,
A2A711BE09E5BF0500D0089B /* WindowController.m */,
A251BE8B0959A1EA0058BC7F /* FakeModel.h */,
A251BE8C0959A1EA0058BC7F /* FakeModel.m */,
A251BE8D0959A1EA0058BC7F /* main.m */,
);
name = "Demo App";
sourceTree = "<group>";
};
A251BE8E0959A21A0058BC7F /* Images */ = {
isa = PBXGroup;
children = (
A2C0D99309AF870000ED379C /* pi.png */,
A2072B5C09AC1FA500304BCB /* Warning.png */,
A2072A2409ABD88600304BCB /* Folder.tif */,
A2072A2509ABD88600304BCB /* Globe.tiff */,
A268E7F809A9822900E082AA /* AquaTabNew.png */,
A268E7F909A9822900E082AA /* AquaTabNewPressed.png */,
A268E7FA09A9822900E082AA /* AquaTabNewRollover.png */,
A268E7FB09A9822900E082AA /* TabNewMetal.png */,
523897F115BDA9AC00498A53 /* TabNewMetal@2x.png */,
A268E7FC09A9822900E082AA /* TabNewMetalPressed.png */,
523897F215BDA9AC00498A53 /* TabNewMetalPressed@2x.png */,
A268E7FD09A9822900E082AA /* TabNewMetalRollover.png */,
523897F315BDA9AC00498A53 /* TabNewMetalRollover@2x.png */,
A269361009A778770006911E /* 32x32_log.tiff */,
A2D3317A09A68B7500EC8662 /* AquaTabsDownGraphite.png */,
A2D3317B09A68B7500EC8662 /* AquaTabsDownNonKey.png */,
A2D32EF009A63BF700EC8662 /* AquaTabClose_Front_Pressed.tif */,
A2D32EF109A63BF700EC8662 /* AquaTabClose_Front_Rollover.tif */,
A2D32EF209A63BF700EC8662 /* AquaTabClose_Front.tif */,
A2D32EF309A63BF700EC8662 /* AquaTabsBackground.png */,
A2D32EF409A63BF700EC8662 /* AquaTabsDown.png */,
A2D32EF509A63BF700EC8662 /* AquaTabsSeparator.png */,
A2D32EF609A63BF700EC8662 /* AquaTabsSeparatorDown.png */,
A251BE8F0959A23A0058BC7F /* 32x32cancel.png */,
52C268CE15BDB72B0012FECA /* overflowImage.png */,
52C0B9B215BDB7A9000C268F /* overflowImage@2x.png */,
52C268CF15BDB72B0012FECA /* overflowImagePressed.png */,
52C0B9B315BDB7A9000C268F /* overflowImagePressed@2x.png */,
52A57C0C15BBA230003EC59C /* TabClose_Front.png */,
523897F015BDA9AC00498A53 /* TabClose_Front@2x.png */,
52A57C0D15BBA230003EC59C /* TabClose_Front_Pressed.png */,
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>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
53DF68F8067E5B5A0090B5B0 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
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 */,
A2129BB209AEB58F00724E6C /* PSMProgressIndicator.h in Headers */,
A2082A9009EAEB34009AC8BE /* PSMTabDragAssistant.h in Headers */,
A2D98B0A0A2B432C0064C6F8 /* PSMUnifiedTabStyle.h in Headers */,
A2D98B120A2B43FA0064C6F8 /* NSBezierPath_AMShading.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */ = {
isa = PBXNativeTarget;
buildConfigurationList = C056397F08A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControlFramework" */;
buildPhases = (
53DF68F8067E5B5A0090B5B0 /* Headers */,
53DF68F9067E5B5A0090B5B0 /* Resources */,
53DF68FA067E5B5A0090B5B0 /* Sources */,
53DF68FB067E5B5A0090B5B0 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = PSMTabBarControlFramework;
productName = PSMTabBarControlFramework;
productReference = 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
0259C573FE90428111CA0C5A /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0710;
};
buildConfigurationList = C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
en,
);
mainGroup = 0259C574FE90428111CA0C5A /* PSMTabBarControl */;
projectDirPath = "";
projectRoot = "";
targets = (
53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */,
53DF6901067E5B8E0090B5B0 /* All */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
53DF68F9067E5B5A0090B5B0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A2D32EF709A63BF700EC8662 /* AquaTabClose_Front_Pressed.tif in Resources */,
A2D32EF809A63BF700EC8662 /* AquaTabClose_Front_Rollover.tif in Resources */,
A2D32EF909A63BF700EC8662 /* AquaTabClose_Front.tif in Resources */,
A2D32EFA09A63BF700EC8662 /* AquaTabsBackground.png in Resources */,
A2D32EFB09A63BF700EC8662 /* AquaTabsDown.png in Resources */,
A2D32EFC09A63BF700EC8662 /* AquaTabsSeparator.png in Resources */,
A2D32EFD09A63BF700EC8662 /* AquaTabsSeparatorDown.png in Resources */,
A2D3317C09A68B7500EC8662 /* AquaTabsDownGraphite.png in Resources */,
A2D3317D09A68B7500EC8662 /* AquaTabsDownNonKey.png in Resources */,
A268E80409A9822A00E082AA /* AquaTabNew.png in Resources */,
A268E80509A9822A00E082AA /* AquaTabNewPressed.png in Resources */,
A268E80609A9822A00E082AA /* AquaTabNewRollover.png in Resources */,
A268E80709A9822A00E082AA /* TabNewMetal.png in Resources */,
A268E80809A9822A00E082AA /* TabNewMetalPressed.png in Resources */,
A268E80909A9822A00E082AA /* TabNewMetalRollover.png in Resources */,
A2C0D99509AF870000ED379C /* pi.png in Resources */,
A27E47850A28EE76007BA395 /* TabIcon.tif in Resources */,
A27E47880A28EE7C007BA395 /* TabControlRep.tif in Resources */,
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 */,
523897F915BDA9AC00498A53 /* TabNewMetalRollover@2x.png in Resources */,
52C268D015BDB72B0012FECA /* overflowImage.png in Resources */,
52C268D115BDB72B0012FECA /* overflowImagePressed.png in Resources */,
52C0B9B415BDB7A9000C268F /* overflowImage@2x.png in Resources */,
52C0B9B515BDB7A9000C268F /* overflowImagePressed@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
53DF68FA067E5B5A0090B5B0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
546DEAF1067F63070098DCC4 /* PSMTabBarControl.m in Sources */,
A251BE860959A1B90058BC7F /* PSMOverflowPopUpButton.m in Sources */,
A251BE880959A1B90058BC7F /* PSMTabBarCell.m in Sources */,
A2D32F0109A63D7A00EC8662 /* PSMMetalTabStyle.m in Sources */,
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 */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
53DF6905067E5B930090B5B0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */;
targetProxy = 53DF6904067E5B930090B5B0 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
0259C57EFE90428111CA0C5A /* PSMTabBarControlInspector.nib */ = {
isa = PBXVariantGroup;
children = (
0259C57FFE90428111CA0C5A /* English */,
);
name = PSMTabBarControlInspector.nib;
sourceTree = "<group>";
};
0259C580FE90428111CA0C5A /* PSMTabBarControlPalette.nib */ = {
isa = PBXVariantGroup;
children = (
0259C581FE90428111CA0C5A /* English */,
);
name = PSMTabBarControlPalette.nib;
sourceTree = "<group>";
};
8D1AC97F0486D23B00FE50C9 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8D1AC97B0486D23100FE50C9 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
A251BEC20959BC0E0058BC7F /* MainMenu.nib */ = {
isa = PBXVariantGroup;
children = (
A251BEC30959BC0E0058BC7F /* English */,
);
name = MainMenu.nib;
sourceTree = "<group>";
};
A2A711B909E5AE1E00D0089B /* Window.nib */ = {
isa = PBXVariantGroup;
children = (
A2A711BA09E5AE1E00D0089B /* English */,
);
name = Window.nib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
C056398008A954F8003078D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
GCC_VERSION = "";
INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
INSTALL_PATH = "@executable_path/../Frameworks";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.positivespinmedia.PSMTabBarControlFramework;
PRODUCT_NAME = PSMTabBarControl;
SYMROOT = ../build;
ZERO_LINK = NO;
};
name = Debug;
};
C056398108A954F8003078D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
GCC_VERSION = "";
INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
INSTALL_PATH = "@executable_path/../Frameworks";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.positivespinmedia.PSMTabBarControlFramework;
PRODUCT_NAME = PSMTabBarControl;
SYMROOT = ../build;
};
name = Release;
};
C056398808A954F8003078D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
PRODUCT_NAME = All;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
ZERO_LINK = YES;
};
name = Debug;
};
C056398908A954F8003078D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_MODEL_TUNING = G5;
PRODUCT_NAME = All;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
};
name = Release;
};
C056398C08A954F8003078D8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ENABLE_TESTABILITY = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SYMROOT = ../build;
};
name = Debug;
};
C056398D08A954F8003078D8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SYMROOT = ../build;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
C056397F08A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControlFramework" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C056398008A954F8003078D8 /* Debug */,
C056398108A954F8003078D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C056398708A954F8003078D8 /* Build configuration list for PBXAggregateTarget "All" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C056398808A954F8003078D8 /* Debug */,
C056398908A954F8003078D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C056398C08A954F8003078D8 /* Debug */,
C056398D08A954F8003078D8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 0259C573FE90428111CA0C5A /* Project object */;
}
@@ -1,22 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>PSMTabBarControl</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>PSM1</string>
<key>CFBundleVersion</key>
<string>1.1</string>
<key>NSPrincipalClass</key>
<string>PSMTabBarControl</string>
</dict>
</plist>
@@ -1,8 +0,0 @@
//
// Prefix header for all source files of the 'PSMTabBarControl' target in the 'PSMTabBarControl' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#import <InterfaceBuilder/InterfaceBuilder.h>
#endif
@@ -1,186 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf380
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Oblique;
\f3\fnil\fcharset77 Monaco;}
{\colortbl;\red255\green255\blue255;\red118\green15\blue80;\red0\green0\blue255;\red35\green110\blue37;
}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
\f0\b\fs24 \cf0 \
PSMTabBarControl (and related classes)\
\f1\b0 developed by John Pannell, Positive Spin Media\
\
as seen in the super-cool app...\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
\cf0 {{\NeXTGraphic startpage.gif \width7200 \height2820
}¬}\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
\cf0 \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 This source code and all related materials are released under the BSD license, which is explained at the end of this document, along with some other legalese. I've made my best effort to make everything bug free, but please let me know of any bugs found or suggestions you have: johnp@positivespinmedia.com.\
\
\f0\b Purpose
\f1\b0 \
\
PSMTabBarControl seeks to provide developers with a high-quality, easy to use GUI to manage an NSTabView (or subclasses) in a manner similar to Safari's tabbed browsing implementation. It attempts to add a few features as well. Here's what you get:\
\
\f0\b The look:
\f1\b0 a control/cell architecture that draws the expected tab appearance below a toolbar or similar view. Included styles work consistently in Aqua, Metal, or customized metal variations by basing fills on the window's background color. Includes drawing of a close button, and rollover states for the close button and tab cell. Also provides pop-up button and menu when tabs overflow available space, and support for individual tab progress indicators, icons, and object counters. Tabs can be drawn sized to fit the string content of the label, or uniformly sized.\
\
\f0\b The functionality:
\f1\b0 Close button removes tabs, click on a tab cell selects. Indicators start, stop, and hide if things are hooked up correctly.\
\
\f0\b Extras:
\f1\b0 Supports multi-window drag-and-drop reordering of the tabs with aqua-licious animation.\
\
\f0\b Files
\f1\b0 \
\
Your project will need the files in the "Framework" folder of the project. The actual framework packages these (and some images) up nicely for you, if desired. Please look over the "TabBarControlDemo" target of the source code project to see exactly what is needed to get everything to build. Building and playing with the demo is also a good way to get a feel for the features provided by these classes.\
\
\f0\b Usage
\f1\b0 \
\
Simply drag a custom view object from the views palette in IB, read the PSMTabBarControl class into IB, and set the view's custom class to PSMTabBarControl. Then connect the control's tabview outlet to the tab view being controlled, and make the control the delegate of the tab view. You can also connect the control's "partner view" outlet to another view that will resize in response to the hide/show behavior of the control.\
\
Alternately, you can build the Palette subproject and add the built IB palette to Interface Builder. In this case, creating and configuring an instance is as easy and drag, drop, and a few clicks. A demo movie and the built palette are available in a separate download from my website: http://www.positivespinmedia.com/dev/PSMTabBarControl.html\
\
\f2\i Please read the PSMTabBarControlDoc.html file in the documentation folder of this project. It provides an Apple-ish page describing the interface and usage of this object.
\f1\i0 \
\
\f0\b Patterns of Use
\f1\b0 \
\
There are a few random notes I can think of for usage guidelines...\
\
- You may see a line between the toolbar and the control in your app; it is part of the toolbar. In Tiger, you can eliminate the appearance of this line:\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f3\fs20 \cf0 \CocoaLigature0 SInt32 MacVersion;\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\cf2 if\cf0 (Gestalt(gestaltSystemVersion, &MacVersion) == noErr)\{\
\cf2 if\cf0 (MacVersion >= \cf3 0x1040\cf0 )\{\
\cf4 // this call is Tiger only\cf0 \
[toolbar setShowsBaselineSeparator:\cf2 NO\cf0 ];\
\}\
\}\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f1\fs24 \cf0 - In general, there is no reason for your app objects to communicate (outside of configuration) with the PSMTabBarControl at all. Changes made to the NSTabView instance programmatically should be directed at the NSTabView instance itself, and the control will update to reflect the changes made.\
\
- Your app might want to receive tab view delegate notifications in order to perform some actions. No problem, simply make the desired object the delegate of the PSMTabBarControl instance... it passes along all tab view notifications. Note that it uses these notifications to make changes itself - read the source code to make sure you aren't tripping over something.\
\
- The control creates bindings between each cell's progress indicator and the represented NSTabViewItem's identifier object, if it can. In my app design, I set an instance of NSObjectController as the NSTabViewItem's identifier, and then bind to the "isProcessing" key of the controller's content object. All of this can be seen in the source of the demo app...\
\
- The control can be set to hide itself when there is only a single tab, and can also be told to hide/show on demand. It can animate to appear and disappear, and will resize something to compensate for the missing window real estate. By default, it will resize the window, but you can also connect the "partnerView" outlet in IB to specify another view to resize to take up the missing space. Note that this takes some attention to sizing springs and wires to get right, and complex views may need a container view to achieve the desired effect.\
\
- The control can be configured to draw an attractive "Add Tab" button at the end of the tab cells. Unfortunately, the button is all looks and no brains - it has no idea what your app wants to do when adding a tab. If you configure your app to show the add tab button, you need to hook up the add tab button to the proper target with the proper selector. Something like this will do nicely in your app controller's awakeFromNib:\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f3\fs20 \cf4 // hook up add tab button\cf0 \
[[tabBar addTabButton] setTarget:\cf2 self\cf0 ];\
[[tabBar addTabButton] setAction:\cf2 @selector\cf0 (addNewTab:)];
\f1\fs24 \
\
- The tabs have some sizing options: You can specify the minimum width, maximum width, and optimum width, as well as spcifying if the tabs should size to fit their label or not. The sizing bahavior of the tabs is as follows: If "size to fit" is specified, then tabs will be generated to fit the label, but will never exceed the specified max or min widths. Once the end of the control is reached, the overflow menu will appear as tabs are added; the last tab will squeeze in if it can, or the remaining tabs will stretch to occupy the full control. If "size to fit" is not specified, then all successive tabs will appear at the optimum width. Once the end of the control is reached, adding new tabs will cause all tabs to shrink to accomodate, until the minumum width is reached, and then the overflow menu will be used; max width is ignored in this case. Hopefully that all makes sense :-)\
\
- PSMTabBarControl will load the existing tabs from the tabView outlet at startup. However, many of the advanced features (icon display, progress indicator, object count) rely on binding to a controller that is likely not set up in IB. Solution? Nuke the existing tabs in the NSTabView and add new ones, configured the way you like. The demo app does this in the awakeFromNib: method of the app controller.\
\
- As a design choice, I elected to keep a cell object around until its tab was closed, instead of "churning" cell objects in each update cycle. Each cell keeps its NSTabViewItem as its representedObject and maintains reference that way, rather than by any index. As a result of this, drag-and-drop reordering of tabs does not change the underlying NSTabView instance at all. All that to say: don't rely on numerical indices if communicating with both the control and the tab view - the indices may not correlate if the user moved some tabs around (and remember - you shouldn't need to communicate with the control anyway :-). The Shiira Project, from which I gained much insight and inspiration from for this UI element, elected to scrap and rebuild the array of cells each time through the update cycle, and rely on indices to correlate between cells and NSTabViewItems. I felt the representedObject route was cleaner, and preferred not to churn objects.\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f0\b \cf0 Improvements?
\f1\b0 \
\
Pipe up if you think of something you'd like to see; here's my current list:\
\
- "Pop-up" tabs - like pop-up folders in the finder, in case you want to drag to a destination in another tab.\
- Support for the
\f3\fs22 \CocoaLigature1 NSUnifiedTitleAndToolbarWindowMask
\f1\fs24 \CocoaLigature0 "unified" window appearance. (Help! I really searched around to try to make this work... the color pattern of the title and toolbar seem to be top secret! The new "unified" style is an excellent replication of a unified look, but isn't "built from" the unified appearance like the metal is.)\
- During multi-window drag, having a "drag window/image" that shows the represented view getting moved to the other window.\
- During multi-window drag, support for dragging out solo tabs to consolidate in another window, removing the source window in the process.\
- Support vertical as well as horizontal alignment.\
\
\f0\b Version History
\f1\b0 \
\
Version 1.3 (May 29, 2006)\
- new feature: Unified tab style, compliments of Keith Blount\
- new feature: allow multi-window drag config option (again from Keith).\
- fixed bug: Palette installation/usage instructions were wrong.\
- enhancement: exposed the
\f3\fs20 representedTabViewItems
\f1\fs24 method, which can be used to retrieve the order of the tabs as displayed in the control, since the underlying NSTabView does not get reordered during drag and drop rearrangement.\
\
Version 1.2 (April 20, 2006)\
- new feature: multi-window drag and drop support.\
- bug fixed: zombie issue with tabView:didCloseTabViewItem\
- bugs fixed: some drawing issues around the progress indicators in tabs, and the add tab button.\
- enhancement: the hide/show animation has been improved with less "flickering" of progress indicators during the hide and show.\
\
Version 1.1.2 (April 5, 2006)\
- fixed bug: tabs of non-integer width resulted in occasional anti-aliased drawing issues of dividers between tabs in the Metal style (Thanks, Kent).\
- added feature: delegate can now respond to -tabView:shouldCloseTabViewItem: and -tabView:willCloseTabViewItem:, and -tabView:didCloseTabViewItem: messages, so your app can take care of any needed setup/cleanup for these actions.\
- fixed bug: tab close buttons now show down state when pressed down.\
\
Version 1.1.1 (March 16, 2006)\
- fixed bug: Palette inspector would not reflect state of previously instantiated control. This has been fixed (Thanks, Guillaume).\
- enhancement: Overflow button now highlights when mouse down (Thanks, Kent).\
- fixed bug: when set to not close a solo tab, the close button would be hidden for the tab, but could still be closed if you clicked the tab in the right location. This has been fixed (Thanks, malcom).\
\
Version 1.1 (March 10, 2006)\
- Bound the "title" of the cell to the "label" of the source tabview item. Just in case you wanted to change the label on the tab during the running of your application.\
- PSMTabBarCell factored to support new tab "styles", or appearances in drawing. Now supported are the existing "Metal" style and a new "Aqua" style. Many thanks to David Smith, Seth Willits, and Chris Forsythe for their contributions!\
- Control can be configured to "Hide for single tab", so it doesn't appear unless there are more than a single tab view present. Features animated show/hide behavior (that can be called anytime, and is called automatically in the case that a single tab exists). The show/hide behavior can also be set up to resize either the window (default) or a selected "partner view" to compensate for the lost height of the tab bar.\
- Control can be configured for "Can close only tab" behavior. If set to NO, no close button will appear on a lone tab.\
- Cells can be set to "size to fit", or given uniform min/max/optimum sizes.\
- Added support for display of an icon and an object count, if the proper app design pattern is followed.\
- Sweet animated drag-and-drop drawing!\
- A few drawing bugs surrounding the progress indicators in cells were squished.\
- New documentation, in case you found this read me a little pithy.\
\
Version 1.0 (December 2005)\
Initial release of safari-like tab implementation.\
\
\f0\b The standard disavowal of this beautiful mess
\f1\b0 \
\
I should note that portions of this source code were inspired by the Shiira project's implementation of Safari-style tabs. While I made some different design decisions, the drawing and some other aspects are only slight modifications of their excellent work. As such, I note their copyright under their BSD licence:\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f3\fs20 \cf4 Portions of this software Copyright 2004 The Shiira Project. All rights reserved.\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f1\fs24 \cf0 Check them out at: http://hmdt-web.net/shiira/\
\
This source code is provided under BSD license, the conditions of which are listed below. I hope you'll make note somewhere in your about window or ReadMe stating the sweet coding goodness of Positive Spin Media and link to the fascinating and informative website at www.positivespinmedia.com\
\
\pard\pardeftab720\sa320\ql\qnatural
\cf0 \CocoaLigature1 Copyright (c) 2005, Positive Spin Media\uc0\u8232 All rights reserved.\
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\
\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
\ls1\ilvl0\cf0 {\listtext \'a5 }Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\
{\listtext \'a5 }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.\
{\listtext \'a5 }Neither the name of Positive Spin Media nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\
\
\pard\pardeftab720\sa320\ql\qnatural
\cf0 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.\CocoaLigature0 \
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

@@ -1,24 +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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.positivespinmedia.TabBarControlDemo</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.1</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
@@ -1,301 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<TITLE>PSMTabBarControl - Safari-style Tabs (Objective-C)</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="frameset_styles.css">
</head>
<BODY bgcolor="#ffffff">
<h1>PSMTabBarControl</h1><div class="spec_sheet_info_box"><table cellspacing="0" class="specbox">
<tr><td scope="row"><b><span style="white-space: nowrap;">Inherits from</span></b></td><td><div style="margin-bottom:1px"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSControl.html#//apple_ref/occ/cl/NSControl" target="_top">NSControl</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSView.html#//apple_ref/occ/cl/NSView" target="_top">NSView</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSResponder.html#//apple_ref/occ/cl/NSResponder" target="_top">NSResponder</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSObject.html#//apple_ref/occ/cl/NSObject" target="_top">NSObject</a></div></td></tr>
<tr><td scope="row"><b><span style="white-space: nowrap;">Conforms to</span></b></td><td><div style="margin-bottom:1px">
<span class="content_text"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSCoding.html#//apple_ref/occ/intf/NSCoding" target="_top">NSCoding (NSResponder)</a></span><br>
<span class="content_text"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSObjectProtocol.html#//apple_ref/occ/intf/NSObject" target="_top">NSObject (NSObject)</a></span><br>
</div></td></tr>
<tr><td scope="row"><b><span style="white-space: nowrap;">Declared in</span></b></td><td><div style="margin-bottom:1px"><span class="content_text">PSMTabBarControl.h</span><br>
</div></td></tr>
</table></div><br><a name="//apple_ref/doc/uid/20000092-50187" title="Class Description"></a><a name="50187" title="Class Description"></a><h2>Class Description</h2>
<p class="spaceabove">PSMTabBarControl provides a user interface for the management of tabbed views that has an appearance similar to Apple's Safari web browser.<p>
<p>Internally, PSMTabBarControl uses a custom cell class and supporting style objects to implement its user interface.</p>
<p>Currently, this object supports "Aqua" and "Metal" tab styles to present an appearance consistent with the rest of your application. Numerous configuration options exist to customize behavior, as outlined below. PSMTabBarControl instances require a few specific connections with other application objects to perform properly at runtime:</p>
<ul>
<li><b>The control's "tabView" outlet must be connected to the desired NSTabView instance in Interface Builder, or set programmatically with the setTabView: method.</b></li>
<li><b>The "delegate" outlet of the NSTabView being controlled must be connected to the instance of PSMTabBarControl, either programmatically or in IB.</b></li>
<li>Optionally, you may connect the control's "partnerView" outlet to a view that will be resized to compensate when PSMTabBarControl changes size due to hide/show behavior. If no connection is made, PSMTabBarControl will resize the window in response to hide/show messages.</li>
</ul>
<p>A PSMTabBarControl instance should occupy the width of the window, and should be precisely 22 pixels in height. It should be resizable in width, but not height. It can be placed at the top or botton of the window (or anywhere in between, if desired).</p>
<p>Outside of configuring it, your application should have little interaction with this class. The presented tabs will change in conjunction with changes your application makes in the NSTabView being controlled.</p>
<h2>A Usage Pattern</h2>
<p class="spaceabove">PSMTabBarControl becomes even more powerful if your application design matches an expected pattern: the control attempts to bind a number of tab attributes to the NSTabViewItem's identifier object if possible. These visible attributes include a progress indicator, an icon, and an object counter. Additionally, the control binds each tab's title to the label of the represented NSTabViewItem.<p>
<p>Taking advantage of these features requires no glue code on your part, but it does require providing a particular object graph. Here's the basics...</p>
<ul><li>For each tab that is created, your application should have a model object that keeps the state of model attributes: isProcessing (a BOOL), objectCount (an int), and icon (an NSImage). You can pick and choose any number of these to support, or none, at your option.
<li>Your application should create an NSObjectController to control your model (the model object is the "content" of the NSObjectController instance).
<li>When you create new tabs (via the NSTabView interface), you should set the object controller instance to be the identifier object of the newly created NSTabViewItem object.</ul>
<p>The demo application included with this project illustrates a very quick way to accomplish these goals. If this pattern is followed, PSMTabBarControl will take care of the rest.</p>
<h2>Methods by Task</h2>
<h3 class="tight">Setting needed connections</h3>
<dl class="termdef"> <dt><code><a href="#addTabButton">&#8211;&#xA0;setTabView:</a></code></dt><dd><p>Specifies the instance of NSTabView to be controlled.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#tabView">&#8211;&#xA0;tabView</a></code></dt><dd><p>Returns the instance of NSTabView being controlled.</p></dd></dl>
<h3 class="tight">Setting optional connections</h3>
<dl class="termdef"> <dt><code><a href="#setPartnerView">&#8211;&#xA0;setPartnerView:</a></code></dt><dd><p>Specifies a view that will resize to compensate for control size changes in response to hide and show messages.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#partnerView">&#8211;&#xA0;partnerView</a></code></dt><dd><p>Returns the instance of a view that will resize to compensate for control size changes in response to hide and show messages.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setDelegate">&#8211;&#xA0;setDelegate:</a></code></dt><dd><p>Specifies an object that will receive delegate messages as passed through from the NSTabView instance.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#delegate">&#8211;&#xA0;delegate:</a></code></dt><dd><p>Returns the specified delegate object.</p></dd></dl>
<h3 class="tight">Control configuration</h3>
<dl class="termdef"> <dt><code><a href="#canCloseOnlyTab">&#8211;&#xA0;canCloseOnlyTab</a></code></dt><dd><p>Returns YES if the user is allowed to close a tab when it is the only tab left, NO otherwise.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setCanCloseOnlyTab">&#8211;&#xA0;setCanCloseOnlyTab:</a></code></dt><dd><p>Controls whether the receiver will present a close button for a single tab in a tab bar. </p></dd></dl>
<dl class="termdef"> <dt><code><a href="#styleName">&#8211;&#xA0;styleName</a></code></dt><dd><p>Returns the name of the current drawing style. "Aqua", "Metal", and "Unified" are the currently supported options.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setStyleNamed">&#8211;&#xA0;setStyleNamed:</a></code></dt><dd><p>Specifies the style in which the tabs and control are drawn. "Aqua", "Metal", and "Unified" are the currently supported options. </p></dd></dl>
<dl class="termdef"> <dt><code><a href="#hideForSingleTab">&#8211;&#xA0;hideForSingleTab</a></code></dt><dd><p>Returns YES if the control will hide if there is only one tab left, NO otherwise.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setHideForSingleTab">&#8211;&#xA0;setHideForSingleTab:</a></code></dt><dd><p>Controls whether the receiver will hide when the user closes all but a single tab in a tab bar. </p></dd></dl>
<dl class="termdef"> <dt><code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code></dt><dd><p>Returns YES if the control will display a small "add tab" button at the rightmost end of the tabs, NO otherwise.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setShowAddTabButton">&#8211;&#xA0;setShowAddTabButton:</a></code></dt><dd><p>Controls whether the receiver will will display a small "add tab" button at the rightmost end of the tabs. </p></dd></dl>
<dl class="termdef"> <dt><code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code></dt><dd><p>Returns the minimum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setCellMinWidth">&#8211;&#xA0;setCellMinWidth:</a></code></dt><dd><p>Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code></dt><dd><p>Returns the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code></dt><dd><p>Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code></dt><dd><p>Returns the default width (in pixels) that a tab will be allowed to occupy when tabs are drawn with uniform size.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code></dt><dd><p>Specifies the default width (in pixels) that a tab will be allowed to occupy when tabs are drawn with uniform size.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#sizeCellsToFit">&#8211;&#xA0;sizeCellsToFit</a></code></dt><dd><p>Returns YES if the control will make the tabs sized to fit the content of the tab, NO otherwise.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setSizeCellsToFit">&#8211;&#xA0;setSizeCellsToFit:</a></code></dt><dd><p>Controls whether the receiver will make the tabs sized to fit the content of the tab.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#allowsDragBetweenWindows">&#8211;&#xA0;allowsDragBetweenWindows</a></code></dt><dd><p>Returns YES if the control allows a user to drag a tab to another instance of this control, NO otherwise.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#setAllowsDragBetweenWindows">&#8211;&#xA0;setAllowsDragBetweenWindows:</a></code></dt><dd><p>Controls whether the receiver will allow a user to drag a tab to another instance of this control.</p></dd></dl>
<h3 class="tight">Internal UI components</h3>
<dl class="termdef"> <dt><code><a href="#addTabButton">&#8211;&#xA0;addTabButton</a></code></dt><dd><p>Returns an instance of an NSButton subclass that is used to present the "add tab" button. If "showAddTabButton" is YES, developers must use this method to access the button and specify a target and action for the button.</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#overflowPopUpButton">&#8211;&#xA0;overflowPopUpButton</a></code></dt><dd><p>Returns an instance of an NSPopUpButton subclass that is used to present the overflow menu (which shows when there are more tabs than can fit across the control).</p></dd></dl>
<dl class="termdef"> <dt><code><a href="#representedTabViewItems">&#8211;&#xA0;representedTabViewItems</a></code></dt><dd><p>Returns an array of the NSTabViewItems represented by the tabs in the control. Useful if you want to archive the order of the tabs between runs of your program.</p></dd></dl>
<h3 class="tight">Visibility</h3>
<dl class="termdef"> <dt><code><a href="#hideTabBar">&#8211;&#xA0;hideTabBar:animate:</a></code></dt><dd><p>If desired, obejcts can tell the tab bar to hide (reduce in size to a single pixel line spanning the window) or show, and optionally whether to animate this effect or not.</p></dd></dl>
<h2>Instance Methods</h2>
<a name="addTabButton"></a><h3 class="tight">addTabButton</h3>
<p class="spaceabove">Returns an instance of an NSButton subclass that is used to present the "add tab" button. If "showAddTabButton" is YES, developers must use this method to access the button and specify a target and action for the button.</p><p class="spaceabovemethod">- (PSMRolloverButton *)addTabButton;</p>
<h5 class="tight">Discussion</h5><p> If you have configured the control to show the add tab button, you must use this method to access the button and set the target and action for it. Example:</p> <code>[[tabBar addTabButton] setTarget:self];<br>
[[tabBar addTabButton] setAction:@selector(addNewTab:)];</code> </p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setShowAddTabButton">&#8211;&#xA0;setShowAddTabButton:</a></code><li><li class="availability"> <code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code><li></ul>
<a name="allowsDragBetweenWindows"></a><h3 class="tight">allowsDragBetweenWindows</h3>
<p class="spaceabove">Returns <code>YES</code> if the control allows a user to drag a tab to another instance of this control, NO otherwise.</p><p class="spaceabovemethod">- (BOOL)allowsDragBetweenWindows</p>
<h5 class="tight">Discussion</h5><p>The default is <code>YES</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setAllowsDragBetweenWindows">&#8211;&#xA0;setAllowsDragBetweenWindows:</a></code><li></ul>
<a name="canCloseOnlyTab"></a><h3 class="tight">canCloseOnlyTab</h3>
<p class="spaceabove">Returns <code>YES</code> if the receiver has been configured to allow users to close a single remaining tab.</p><p class="spaceabovemethod">- (BOOL)canCloseOnlyTab</p>
<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setCanCloseOnlyTab">&#8211;&#xA0;setCanCloseOnlyTab:</a></code><li></ul>
<a name="cellMaxWidth"></a><h3 class="tight">cellMaxWidth</h3>
<p class="spaceabove">Returns the maximum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (int)cellMaxWidth</p>
<h5 class="tight">Discussion</h5><p>The cellMaxWidth value applies to both uniformly sized tabs, and tabs that are sized to fit. No tab will be drawn wider than the specified value.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code><li><li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
<a name="cellMinWidth"></a><h3 class="tight">cellMinWidth</h3>
<p class="spaceabove">Returns the minimum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (int)cellMinWidth</p>
<h5 class="tight">Discussion</h5><p>The cellMinWidth value applies only to uniformly sized tabs. No tab will be drawn smaller than the specified value. Size-to-fit tabs ignore this value, and are made just small enough to fit their content.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setCellMinWidth">&#8211;&#xA0;setCellMinWidth:</a></code><li><li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
<a name="cellOptimumWidth"></a><h3 class="tight">cellOptimumWidth</h3>
<p class="spaceabove">Returns the width (in pixels) that a tab will be made to occupy if the tabs are uniformly sized.</p><p class="spaceabovemethod">- (int)cellOptimumWidth</p>
<h5 class="tight">Discussion</h5><p>The cellOptimumWidth value applies only to uniformly sized tabs. All tabs will be drawn at the specified value. Size-to-fit tabs ignore this value, and are made just small enough to fit their content.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setCellOptimumWidth">&#8211;&#xA0;setCellOptimumWidth:</a></code><li><li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li></ul>
<a name="delegate"></a><h3 class="tight">delegate</h3>
<p class="spaceabove">Returns the object that will be sent passed-through NSTabView delegate messages.</p><p class="spaceabovemethod">- (id)delegate</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setDelegate">&#8211;&#xA0;setDelegate:</a></code><li></ul>
<a name="hideForSingleTab"></a><h3 class="tight">hideForSingleTab</h3>
<p class="spaceabove">Returns <code>YES</code> if the receiver has been configured to hide if there is a single remaining tab.</p><p class="spaceabovemethod">- (BOOL)hideForSingleTab</p>
<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setHideForSingleTab">&#8211;&#xA0;setHideForSingleTab:</a></code><li></ul>
<a name="hideTabBar"></a><h3 class="tight">hideTabBar:animate:</h3>
<p class="spaceabove"><p>If desired, obejcts can tell the tab bar to hide (reduce in size to a single pixel line spanning the window) or show, and optionally whether to animate this effect or not.</p></p><p class="spaceabovemethod">- (void)hideTabBar:(BOOL)hide animate:(BOOL)animate</p>
<h5 class="tight">Discussion</h5><p> If <i>hide</i> is <code>YES</code> the control will shrink to a single pixel line spanning the window; otherwise the control will expand to its normal appearance. If <i>animate</i> is <code>YES</code>, the shrinking and expanding will happen in a visible animation; otherwise the transition will be instant. There is no effect if the control is already in the specified state.</p>
<a name="overflowPopUpButton"></a><h3 class="tight">overflowPopUpButton</h3>
<p class="spaceabove">Returns an instance of an NSPopUpButton subclass that is used to present the overflow menu. </p><p class="spaceabovemethod">- (PSMOverflowPopUpButton *)overflowPopUpButton;</p>
<h5 class="tight">Discussion</h5><p> This method could be used to modify the button or menu if desired.</p>
<a name="partnerView"></a><h3 class="tight">partnerView</h3>
<p class="spaceabove">Returns the object that will be resized to compensate for the changing size of the control during hide/show behavior.</p><p class="spaceabovemethod">- (id)partnerView</p>
<h5 class="tight">Discussion</h5><p> If a partnerView has not been specified, the window will be resized during hide/show.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setPartnerView">&#8211;&#xA0;setPartnerView:</a></code><li></ul>
<a name="representedTabViewItems"></a><h3 class="tight">representedTabViewItems</h3>
<p class="spaceabove">Returns an array of NSTabViewItems, ordered according to the display order of the tabs in the control. </p><p class="spaceabovemethod">- (NSMutableArray *)representedTabViewItems;</p>
<h5 class="tight">Discussion</h5><p> This method could be used archive the order of the tabs between application runs. When the user reorders tabs via drag and drop, the represented NSTabView does <i>not</i> change order.</p>
<a name="setAllowsDragBetweenWindows"></a><h3 class="tight">setAllowsDragBetweenWindows</h3>
<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to allow users to drag a tab to an instance of PSMTabBarControl in another window.</p><p class="spaceabovemethod">- (void)setAllowsDragBetweenWindows:(BOOL)value</p>
<h5 class="tight">Discussion</h5><p>The default is <code>YES</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#allowsDragBetweenWindows">&#8211;&#xA0;allowsDragBetweenWindows:</a></code><li></ul>
<a name="setCanCloseOnlyTab"></a><h3 class="tight">setCanCloseOnlyTab:</h3>
<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to allow users to close a single remaining tab.</p><p class="spaceabovemethod">- (void)setCanCloseOnlyTab:(BOOL)value</p>
<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#canCloseOnlyTab">&#8211;&#xA0;canCloseOnlyTab:</a></code><li></ul>
<a name="setCellMaxWidth"></a><h3 class="tight">setCellMaxWidth:</h3>
<p class="spaceabove">Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (void)setCellMaxWidth:(int)value</p>
<h5 class="tight">Discussion</h5><p> No tab will be drawn any wider than the specified value.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li></ul>
<a name="setCellMinWidth"></a><h3 class="tight">setCellMinWidth:</h3>
<p class="spaceabove">Specifies the minimum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (void)setCellMinWidth:(int)value</p>
<h5 class="tight">Discussion</h5><p> No tab will be drawn any smaller than the specified value. This value is ignored when drawing in size-to-fit; tabs are made just small enough to fit their content.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li></ul>
<a name="setCellOptimumWidth"></a><h3 class="tight">setCellOptimumWidth:</h3>
<p class="spaceabove">Specifies the width (in pixels) that a tab will occupy when tabs are uniformly sized.</p><p class="spaceabovemethod">- (void)setCellOptimumWidth:(int)value</p>
<h5 class="tight">Discussion</h5><p> This value is ignored when drawing in size-to-fit; tabs are made just small enough to fit their content.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
<a name="setDelegate"></a><h3 class="tight">setDelegate:</h3>
<p class="spaceabove">Specifies an object that will receive delegate messages as passed through from the NSTabView instance.</p><p class="spaceabovemethod">- (void)setDelegate:(id)object</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#delegate">&#8211;&#xA0;delegate:</a></code><li></ul>
<a name="setHideForSingleTab"></a><h3 class="tight">setHideForSingleTab:</h3>
<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to hide when there is a single remaining tab.</p><p class="spaceabovemethod">- (void)setHideForSingleTab:(BOOL)value</p>
<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#hideForSingleTab">&#8211;&#xA0;hideForSingleTab</a></code><li></ul>
<a name="setPartnerView"></a><h3 class="tight">setPartnerView:</h3>
<p class="spaceabove">Specifies a view that will resize to compensate for control size changes in response to hide and show messages.</p><p class="spaceabovemethod">- (void)setPartnerView:(id)view</p>
<h5 class="tight">Discussion</h5><p>if <i>nil</i>, the control will resize the window in response to hide/show messages.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#partnerView">&#8211;&#xA0;partnerView</a></code><li></ul>
<a name="setStyleNamed"></a><h3 class="tight">setStyleNamed:</h3>
<p class="spaceabove">Specifies the style in which the tabs and control are drawn. </p><p class="spaceabovemethod">- (void)setStyleNamed:(NSString *)name</p>
<h5 class="tight">Discussion</h5><p>"Aqua" and "Metal" are the currently supported options.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#styleName">&#8211;&#xA0;styleName</a></code><li></ul>
<a name="setShowAddTabButton"></a><h3 class="tight">setShowAddTabButton:</h3>
<p class="spaceabove">Controls whether the receiver will will display a small "add tab" button at the rightmost end of the tabs. </p><p class="spaceabovemethod">- (void)setShowAddTabButton:(BOOL)value</p>
<h5 class="tight">Discussion</h5><p>Default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code><li></ul>
<a name="setSizeCellsToFit"></a><h3 class="tight">setSizeCellsToFit:</h3>
<p class="spaceabove">Controls whether the receiver will make the tabs sized to fit the content of the tab. </p><p class="spaceabovemethod">- (void)setSizeCellsToFit:(BOOL)value</p>
<h5 class="tight">Discussion</h5><p>Default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#sizeCellsToFit">&#8211;&#xA0;sizeCellsToFit</a></code><li></ul>
<a name="setTabView"></a><h3 class="tight">setTabView:</h3>
<p class="spaceabove">Specifies the instance of NSTabView to be controlled. </p><p class="spaceabovemethod">- (void)setTabView:(NSTabView *)view</p>
<h5 class="tight">Discussion</h5><p>This class will not function properly without this outlet being set.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#tabView">&#8211;&#xA0;tabView</a></code><li></ul>
<a name="sizeCellsToFit"></a><h3 class="tight">sizeCellsToFit</h3>
<p class="spaceabove">Returns YES if the control will make the tabs sized to fit the content of the tab, NO otherwise.</p><p class="spaceabovemethod"- (BOOL)sizeCellsToFit</p>
<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setSizeCellsToFit">&#8211;&#xA0;setSizeCellsToFit:</a></code><li></ul>
<a name="styleName"></a><h3 class="tight">styleName:</h3>
<p class="spaceabove">Returns the name of the current drawing style. </p><p class="spaceabovemethod">- (NSString *)styleName</p>
<h5 class="tight">Discussion</h5><p>"Aqua" and "Metal" are the currently supported options.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setStyleNamed">&#8211;&#xA0;setStyleNamed:</a></code><li></ul>
<a name="tabView"></a><h3 class="tight">tabView:</h3>
<p class="spaceabove">Returns the instance of NSTabView being controlled. </p><p class="spaceabovemethod">- (NSTabView *)tabView</p>
<h5 class="tight">Discussion</h5><p>This class will not function properly if this object is <i>nil</i>.</p>
<h5 class="tight">See Also</h5><ul class="availability">
<li class="availability"> <code><a href="#setTabView">&#8211;&#xA0;setTabView</a></code><li></ul>
<h2>Delegate Methods</h2>
<p class="spaceabove">You application controller can keep track of activity from the tab view and the user via the following delegate methods.<p>
<a name="shouldCloseTabViewItem"></a><h3 class="tight">tabView:shouldCloseTabViewItem:</h3>
<p class="spaceabove">Sent when a user clicks the close button on a tab. </p><p class="spaceabovemethod">- (BOOL)tabView:(NSTabView *)tabView shouldCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
<h5 class="tight">Discussion</h5><p>If you return <code>NO</code>, the tab will not be closed. Please make sure to alert the user as to why with a sheet or dialog.</p>
<a name="willCloseTabViewItem"></a><h3 class="tight">tabView:willCloseTabViewItem:</h3>
<p class="spaceabove">Sent when tab is about to be closed. </p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)tabView willCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
<h5 class="tight">Discussion</h5><p>This presents you with an opportunity to clean up the application objects/events/sessions represented by the tab.</p>
<a name="didCloseTabViewItem"></a><h3 class="tight">tabView:didCloseTabViewItem:</h3>
<p class="spaceabove">Sent after a tab has been closed. </p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)tabView didCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
<h5 class="tight">Discussion</h5><p>This presents you with an opportunity to clean up the application objects/events/sessions represented by the tab. Don't go trying to modify the tabViewItem - it is about to be released, and has already been removed from the tabView!</p>
<h3 class="tight">tabView:didSelectTabViewItem:</h3>
<p class="spaceabove">Informs the delegate that <i>tabView</i> has selected <i>tabViewItem</i>.</p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)<i>tabView</i> didSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
<h3 class="tight">tabView:shouldSelectTabViewItem:</h3>
<p class="spaceabove">Invoked just before <i>tabViewItem</i> in <i>tabView</i> is selected.</p><p class="spaceabovemethod">- (BOOL)tabView:(NSTabView *)<i>tabView</i> shouldSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
<h5 class="tight">Discussion</h5><p> The delegate can return <code>NO</code> to prevent selection of specific tabs.</p>
<h3 class="tight">tabView:willSelectTabViewItem:</h3>
<p class="spaceabove">Informs the delegate that <i>tabView</i> is about to select <i>tabViewItem</i>.</p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)<i>tabView</i> willSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
<h3 class="tight">tabViewDidChangeNumberOfTabViewItems:</h3>
<p class="spaceabove">Informs the delegate that the number of tab view items in <i>tabView</i> has changed.</p><p class="spaceabovemethod">- (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)<i>tabView</i></p>
</BODY>
</html>
@@ -1,943 +0,0 @@
/* link classes */
A:link { COLOR: #0000FF; TEXT-DECORATION: none; }
A:link:hover { COLOR: #FF6600; TEXT-DECORATION: underline; }
A:active { COLOR: #FF6600; TEXT-DECORATION: underline; }
/* apple.com site does not explicitly define visited link properties, but we do here */
A:visited { COLOR: #0000AA; TEXT-DECORATION: none; }
A:visited:hover { COLOR: #FF6600; TEXT-DECORATION: underline; }
/* used to convert otherCodeCharacters to code, thus saving character space in HTML for smaller file sizes */
tt {
FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; }
/* redefine preformated text and code blocks */
PRE {
FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; margin-top: 5px; margin-bottom: 10px;}
CODE {
FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; }
/* JavaScript toc frame */
.jtoc_closed { background-color: #e9e9e9; }
.jtoc_open { background-color: #FFFFFF; padding-bottom: 10px; }
.jtoc_open_top_line {border-top: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
.jtoc_open_bottom_line {border-bottom: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
.jtoc_open_both_lines {border-bottom: 1px solid #CCC; border-top: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
/* frameset: toc frame */
.toc_contents_text {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-weight: bold; padding-top: 4px 0;
color: #0000FF;
}
.toc_contents_text_open {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px;
background: #FFFFFF; color: #0000FF;
}
.low_level_text {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 11px; padding: 4px 5px 4px 5px
color: #0000FF;
}
#toc_contents_title {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 16px; color: #FFFFFF; font-weight: bold;
}
.toc_contents_heading {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-weight: bold;
}
/* Special TOC heading for Help books only */
.toc_contents_help_heading {
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 14px; color: #330099; font-weight: bold;
}
/* frameset: toc frame styles WEB AS. used for any document that uses the disclosure model for TOC like conceptural and procedural C documents*/
#toc {
padding: 0 0 0 0;
}
#toc p.download {
padding: 5px 10px;
margin: 0;
font-weight: normal; font-size: 11px;
}
#toc_PDFbottomborder {
padding-top: 5px;
border-bottom: 1px solid #CCC;
}
#toc h2 {
margin: 0;
padding: 10px;
font-size: 15px; font-weight: bold;
border-bottom: 0px solid;
}
#toc h3 {
margin: 6px 5px 0 10px;
font-size: 13px; font-weight: bold; color: black;
}
#toc h4 {
font-size: 11px; font-weight: bold; color: black;
margin: -5px 0px 0 14px;
}
#toc_staticbox {
padding: 0 0 0 0;
border: 1px solid #919699;
background: #e9e9e9;
}
#toc ul {
list-style: none outside;
margin-left: 20px; margin-bottom: -2px;
padding: 0px;
}
#toc ul ul{
list-style: none outside;
margin-left: 10px; margin-bottom: -2px;
padding: 0px;
}
#toc li a {
margin-left: 5px;
display: block;
padding: 0px 5px 0px 5px;
}
#toc li a.location {
font-weight: bold; color: #000;
text-decoration: none;
}
#toc li{
font-weight: normal; font-size: 11px;
padding: 0px 5px 0px 0px;
list-style-type: none; background: url(../Images/bullet.gif) no-repeat 0px .5em;
}
#toc li li a {
margin-left: 0px;
}
#toc ul ul li {
background: url(../Images/dash.gif) no-repeat 0px .6em;
}
#toc ul ul ul li {
background: url(../Images/sm_bullet.gif) no-repeat 0px .5em;
}
#toc li.open {
border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; background-color: #fff;
}
#toc .open ul {
background-color: #fff;
}
li img {
margin-left: 0px;
}
/*#toc li.open { background: #FFF;}*/
/* frameset: toc frame styles WEB AS. used for any document that uses the static model for TOC topics documents*/
#topicstoc {
padding: 0px 0px 0px;
}
#topicstoc p.download {
border-bottom: 1px solid #CCC;
padding: 5px 10px;
margin: 0px;
font-weight: normal; font-size: 11px;
}
#topicstoc h2 {
margin: 0;
padding: 10px;
font-size: 15px; font-weight: bold;
border-bottom: 0px solid;
}
#topicstoc h3 {
margin: 6px 5px 0 10px;
font-size: 13px; font-weight: bold; color: black;
}
#topicstoc h4 {
font-size: 11px; font-weight: bold; color: black;
margin: 2px 0px 0px 14px;
}
#topicstoc ul {
list-style: none outside;
margin-left: 13px; margin-bottom: -2px;
padding: 0px;
}
#topicstoc ul ul{
list-style: none outside;
margin-left: 10px; margin-bottom: -2px;
padding: 0px;
}
#topicstoc li{
font-weight: normal; font-size: 12px;
padding: 0px 5px 2px 10px;
list-style-type: none; background: url(../Images/bullet.gif) no-repeat 0px .5em;
}
#topicstoc li.intro {
font-weight: normal;
padding: 0px 0px;
list-style-type: none; background: none;
}
#topicstoc li a {
display: block;
padding: 0px 5px 0px 0px;
}
#topicstoc li a.location {
font-weight: bold; color: #000;
text-decoration: none;
}
#topicstoc li.intro a {
margin-left: -5px;
display: block;
}
img.toplevel { float: left; }
/* frameset: content frame */
BODY {
margin-top: 0;
color: #000;
font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
/* frameset: H1,H2,H3,H4,H5,Head for code voice */
h1 {
margin-top: 1em;
margin-bottom: 25px;
font: bold 30px lucida grande, geneva, helvetica, arial, sans-serif;
color: #000;
}
h2 {
margin-top: 2.5em;
font-size: 24px;
color: #000;
padding-bottom: 2px; border-bottom: 1px solid black;
}
h3 {
margin-top: 2em;
margin-bottom: .5em;
font-size: 19px;
color: #000;
}
h3.tight {
margin-top: 3em;
margin-bottom: -.25em;
font-size: 19px;
color: #000;
}
h4 {
margin-top: 2em;
margin-bottom: .5em;
font-size: 15px;
color: #000;
}
h5 {
margin: 20 0 0 0;
padding: 0;
font-size: 13px;
color: #000;
}
.mach4{
margin-top: 40;
margin-bottom: 0;
padding-top: 0;
font: bold 16px lucida grande, geneva, helvetica, arial, sans-serif;
color: #000;
}
.mach5{
margin: 30 0 -9 0;
font: bold 13px lucida grande, geneva, helvetica, arial, sans-serif;
color: #000;
}
h5.tight{
margin: 1.5em 0 2px 0;
font: bold 13px lucida grande, geneva, helvetica, arial, sans-serif;
color: #000;
}
.code_head{
FONT-SIZE: 18px; FONT-FAMILY: monaco, courier, monospace; font-weight: bold;
}
p {
margin-top: 0px; margin-bottom: 10px; font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
p.spaceabove {
margin-top: 13px; margin-bottom: 10px; font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
p.spaceabovemethod {
font: 11px monaco, courier, monospace; margin-top: 13px; margin-bottom: 10px;
}
h3.tight + p {
margin-top: 13px; margin-bottom: 10px; font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
h3.tight + p.spaceabovemethod {
font: 11px monaco, courier, monospace; margin-top: 13px; margin-bottom: 10px;
}
.content_text{
margin-top: 0px; margin-bottom: 10px; font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
p.blockquote{
padding-left: 50pt;
padding-right: 50pt;
}
ul.availability {
list-style-type: none;
margin: 0 0 -10px 0;
}
.availability li {
margin: 2px 0 0 -6px;
}
/* frameset: content frame bold style for text*/
b{
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-weight: bold;
}
/* Used for text that is sligtly larger than bold text like lables and captions*/
.content_text_label{
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px;
}
/* frameset: content frame italic style for text*/
i{
font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-style: italic;
}
/* Used for reference heads in ProcedualC and AppleScript Language*/
.content_ref_head{
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
font-size: 16px; font-weight: bold; margin-top: 50px; padding-bottom: 4px; border-bottom: 1px solid black
}
.content_ref_head_code{
font-family: monaco, courier, monospace;
font-size: 16px; font-weight: bold; margin-top: 50px; padding-bottom: 4px; border-bottom: 1px solid black
}
/* frameset: page title */
.page_title{
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
font-size: 34px;
font-weight: bold;
color: #000000;
padding-top: 10px;
}
/* frameset: Unordered List */
ul.spaceabove {
list-style: square outside;
margin: 0 0 0 30px;
padding: 7 0 12px 6px;
}
ul {
list-style: square outside;
margin: 0 0 0 30px;
padding: 0 0 12px 6px;
}
li {
margin-top: 7px;
}
li p {
margin-top: 8px;
}
ul ul {
list-style: circle outside;
margin: 6 0 0 30px;
padding: 0 0 12px 6px;
}
ul.3head {
list-style: square outside;
margin: 0 0 0 20px;
padding: 0 0 0px 0px;
}
/* alternate mappings for 2nd level bulleted list that are still in testing phase*/
.nested li {
list-style-image: url(../Images/openbullet.gif);
list-style-position: outside;
}
ul.nested {
list-style: none;
margin: 6 0 0 30px;
}
ol {
list-style-type: decimal;
list-style-position: outside;
margin: 0 0 0 30px;
padding: 0 0 12px 6px;
}
ol ol {
list-style-type: lower-alpha;
list-style-position: outside;
margin: 7 0 0 30px;
padding: 0 0 12px 10px;
}
ul.simple-spaceabove {
list-style-type: none;
margin: 5 0 0 20px;
}
.simple-spaceabove li {
margin-top: 1px;
}
ul.simple {
list-style-type: none;
margin: 0 0 0 30px;
}
.simple li {
margin-top: -1px;
}
dl.table-display {
clear: both;
width: auto;
margin: 0;
padding: 0px;
}
.table-display dt {
width: 8em;
float: left;
margin: 0 0 0 0;
padding: .1em;
}
/* commented backslash hack for mac-ie5 \*/
dt { clear: both; }
.table-display dd {
float: left;
width: 80%;
margin: 0 0 0 0;
padding: .1em;
display: block;
}
.clear {
clear: both;
}
dl.termdef {
margin-top: 0px;
margin-bottom: 10px; }
.termdef dt {
margin-top: 0px; }
.termdef dd {
margin-left: 15px;
margin-top: 1px;
margin-bottom: 6px; }
.termdef p{
margin-left: 15px;
margin-top: -1px;
margin-bottom: 6px; }
h3.tight + dl.termdef {
margin-top: 13px;
margin-bottom: 10px; }
/* frameset: list items */
/* Everything in a list item is wrapped in an element now. */
/* First para in a list item should be inline, others should be block. */
li>p { display: inline }
li>p+p { display: block }
/* frameset: Index styles for docs */
/* frameset: Index styles for alpah listing */
.index_alpa{
font-size: 18px; padding-bottom: 5px; margin: 25px 0 15px; border-bottom: 1px solid #91969C; }
/* frameset: Index styles for singal and page range entries */
.libindex{
font-size: 12px; padding: 0 3px; background-color: #FFFFFF; margin: 0 3px; }
/* frameset: mini navigation style (Hide/Show TOC & next/prev) */
.mini_nav_text {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
font-size: 9px;
font-weight: normal;
}
.breadcrumb {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
font-size: 10px;
font-weight: normal;
margin-left: 10px;
margin-top: 8px;
}
/* ADC header/footer mappings for Getting Started */
/* header */
#adcnavheader td {
font: 10px lucida grande, geneva, helvetica, arial, sans-serif;
}
#adcnavheader input {
margin: 0 3px 0 0;
padding: 0;
}
#adcnavheader .textpadding {
padding-top: 2px;
vertical-align: middle;
}
#adcnavheader .searchbutton {
border: 0;
}
#adcnavheader h6 {
margin: 0;
padding: 0;
font: normal 12px lucida grande, geneva, helvetica, arial, sans-serif;
color: #000;
}
#adcnavheader form {
margin: 0;
}
/* footer */
#footer td, #footer p {
font-size: 10px;
}
/* Getting Started styles */
/* font definitions */
/* keep ".gettingstarted pre, code" above ".gettingstarted h1" below otherwise,
the main h1 tag above will be used instead of".gettingstarted h1" */
.gettingstarted pre, code {
font: 11px Monaco, Courier, monospace;
}
/* Added this style since the ADC template was trying to do this with a graphic (Note: their h2
attached to the image tag is only used by search engines; their h2 does not function if the
graphic is missing).--DA */
.gettingstarted h2 {
margin: 0;
margin-bottom: 15px;
padding: 0px;
font: bold 32px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
color: #000;
}
.gettingstarted h3 {
margin: 0 0 5px 0;
padding: 0px;
font: bold 16px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
color: #000;
}
.gettingstarted p + .gettingstarted h3 {
margin-top: 20px;
}
.gettingstarted ol + .gettingstarted h3 {
margin-top: 20px;
}
.gettingstarted ul + .gettingstarted h3 {
margin-top: 20px;
}
.gettingstarted h4 {
margin: 0px;
padding: 0px;
font: bold 12px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
color: #000;
}
.gettingstarted h4 + .gettingstarted table {
margin-top: 10px;
}
.gettingstarted p {
margin-top: 0;
margin-bottom: 10px;
padding: 0;
font: 12px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
color: #000;
}
.gettingstarted th {
font-weight: bold;
text-align: left;
}
/* list definitions */
.gettingstarted ul {
font: 12px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
padding-left: 10px;
margin-top: 0;
margin-left: 10px;
margin-bottom: 10px;
list-style-type: none;
}
.gettingstarted li {
margin-top: 3px;
}
.gettingstarted ul li {
list-style: square outside;
margin: 0 0 0 30px;
padding: 0 0 4px 0;
}
.gettingstarted ul ul {
margin-left: 20px;
}
.gettingstarted ol {
font: 12px 'Lucida Grande', Geneva, Verdana, Arial, Helvetica, sans-serif;
margin-top: 0;
margin-left: 1.5em;
margin-bottom: 10px;
padding-left: 1.5em;
}
.gettingstarted ul.inline, .gettingstarted ol.inline, .gettingstarted p.inline {
margin-top: -7px;
}
/* table styles */
caption.tablecaption {
margin-bottom: 5px;
text-align: left;
}
.sourcecodebox {
border: 1px solid #c7cfd5;
background: #f1f5f9;
margin: 20px 0;
}
div.tableholder {
margin-top: 20px;
margin-bottom: 20px;
}
p.tableholder {
margin-bottom: 7px;
font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
.graybox {
border-top: 1px solid #919699;
border-left: 1px solid #919699;
}
.graybox th {
padding: 4px 8px 4px 8px;
background: #E2E2E2;
font-size: 12px;
border-bottom: 1px solid #919699;
border-right: 1px solid #919699;
}
.graybox th p {
font-weight: bold;
margin-bottom: 0px;
}
.graybox td {
padding: 8px;
font-size: 12px;
text-align: left;
vertical-align: top;
border-bottom: 1px solid #919699;
border-right: 1px solid #919699;
}
.graybox td p {
margin-bottom: 0px;
}
.graybox td p + p {
margin-top: 5px;
}
.graybox td p + p + p {
margin-top: 5px;
}
/* footnote definitions */
.footnote h4, .footnote p {
color: #76797C;
font-size: 11px;
}
.gettingstarted .footnote {
font-size: 11px;
color: #76797C;
}
.notebox {
border: 1px solid #a1a5a9;
background-color: #f7f7f7;
margin: 20px 0;
padding: 0px 8px 1px 9px;
text-align: left;
}
.notebox p {
font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
margin-top: 7px;
margin-bottom: 0px;
}
.importantbox {
border: 1px solid #111;
background-color: #e8e8e8;
margin: 20px 0;
padding: 0px 8px 1px 9px;
text-align: left;
}
.importantbox p {
font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
margin-top: 7px;
margin-bottom: 0px;
}
.warningbox {
border: 1px solid #000;
background-color: #fff;
margin: 20px 0;
padding: 8px;
text-align: left;
}
.warningicon {
background-color: transparent;
padding-right: 10px;
float: left;
}
.warningbox p {
border-style: none;
font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
margin: -8px 0 -8px 30px;
}
div.codesample {
margin: 20px 0;
}
.codesample pre {
font-size: 11px;
font-family: monaco, courier, monospace;
margin: -1px 4px -3px 6px;
white-space: pre;
}
.codesample span {
margin-right: 8px;
float: right;
}
p.codesample {
margin-top: 20px; margin-bottom: -15px; font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
}
/* Controller Layer Bindings styles */
.class_binding_block {
}
.binding_category_block {
margin-left: 1em
}
.binding_category_name {
font-size: 24px; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-weight: bold; line-height: 35px; padding-bottom: 1px; border-top: 2px solid black
}
.binding_block {
margin-left: 2em
}
.binding_name {
font-size: 18px; font-family: monaco, courier, monospace; font-weight: 400; margin-top: 10px; margin-bottom: 12px; border-bottom: 1px solid #69f
}
.bindings_tablehead { font-size: 14px; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-weight: bold; position: relative; top: -5px; margin-left: -20px
}
.placeholder_options_block {
margin-left: 2em
}
.availabilityList {
border: none;
margin-top: 5px;
margin-bottom: 0px;
font-size: 12px;
text-align: left;
}
.availabilityItem {
margin-top: -15px;
margin-bottom: 15px;
padding-left: 78px;
}
.metadata_attributes_name {
font-size: 24px; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-weight: bold; padding-top: 5px; margin-bottom: -10px; border-top: 2px solid black
}
.metadata_attribute_name {
font-size: 18px; font-family: monaco, courier, monospace; font-weight: 400; margin-top: 10px; padding-bottom: 2px;
}
/* Spec Sheet Info Box */
/* Used in AppKit Obj-C, Appkit Java, Foundation Obj-C, and Foundation Java References */
.spec_sheet_info_box { margin-left: 1em }
/* This builds a table */
.specbox {
border-top: 1px solid #919699;
border-left: 1px solid #919699;
border-right: 1px solid #919699;
margin-bottom: 10px;
}
.specbox td {
padding: 8px;
font-size: 12px;
text-align: left;
vertical-align: top;
border-bottom: 1px solid #919699;
}
/* This alternates colors in up to six table rows (light blue for odd, white for even)*/
.specbox tr {
background: #F0F5F9;
}
.specbox tr + tr {
background: #FFFFFF;
}
.specbox tr + tr + tr {
background: #F0F5F9;
}
.specbox tr + tr + tr + tr {
background: #FFFFFF;
}
.specbox tr + tr + tr +tr + tr {
background: #F0F5F9;
}
.specbox tr + tr + tr + tr + tr + tr {
background: #FFFFFF;
}
/* informal protocol subtitling */
.protocol_subtitle {
margin-top: -25px;
margin-bottom: 25px;
font-size: 13px;
}
/* HeaderDoc headings */
.hd_tocAccess {
margin-left: 16px;
margin-top: 3px;
display: block;
font-weight: bold;
}
.hd_tocAccessSpace {
display: block;
font-size: 8px;
}
.hd_tocGroup {
margin-left: 8px;
margin-top: 5px;
display: block;
font-style: italic;
}
.hd_tocGroupSpace {
display: block;
font-size: 8px;
}
/* "Collection page" mappings */
.forums { margin-bottom: 5px;}
.forums b,
.forums a:link,
.forums a:visited { color: #017; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 11px; font-weight: bold; line-height: 13px;}
.forums a:hover { color: #00F; text-decoration: underline; font-weight: bold;}
.collection { margin-bottom: 5px;}
.collection h3,
.collection a:link,
.collection a:visited { font-size: 13px; color: #76797C; padding-bottom: 2px; border-bottom: 1px dotted #a1a5a9; margin-bottom: 0px; margin-right: 3px;}
.collection a:hover { color: #00F; text-decoration: underline; font-weight: bold;}
.collection_title { width: 100%;
background-color: #7E91A4;
padding: 15px;
padding-right: 15px;
padding-bottom: 2px;
padding-left: 15px;
}
.collection_title a:link,
.collection_title a:visited { color: #E8F3FD; }
h1.collections {
margin-top: 0px;
margin-bottom: 25px;
font: bold 30px lucida grande, geneva, helvetica, arial, sans-serif;
color: #ffffff;
text-align: center; }
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

-42
View File
@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<!-- a subclass of IBPalette -->
<key>Class</key> <string>PSMTabBarControlPalette</string>
<!-- a nib file name -->
<key>NibFile</key> <string>PSMTabBarControlPalette</string>
<!-- a tiff file name for icon used for palette -->
<key>Icon</key> <string>TabIcon.tif</string>
<!-- Tool Tips string for the palette icon -->
<key>ToolTips</key> <string>PSMTabBarControl</string>
<!-- a list of class names exported from palette to IB -->
<key>ExportClasses</key>
<array>
<string>PSMTabBarControl</string>
<string>PSMTabBarCell</string>
<string>PSMAquaTabStyle</string>
<string>PSMMetalTabStyle</string>
<string>PSMRolloverButton</string>
<string>PSMProgressIndcator</string>
<string>PSMOverflowPopUpButton</string>
</array>
<!-- a list of image names exported from palette to IB -->
<key>ExportImages</key>
<array>
<string>TabControlRep.tif</string>
<string>TabIcon.tif</string>
</array>
<!-- a list of sound names exported from palette to IB -->
<key>ExportSounds</key>
<array>
</array>
</dict>
</plist>
@@ -1,17 +0,0 @@
//
// AppController.h
// PSMTabBarControl
//
// Created by John Pannell on 12/19/05.
// Copyright 2005 Positive Spin Media. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject {
}
- (IBAction)newWindow:(id)sender;
@end
@@ -1,30 +0,0 @@
//
// AppController.m
// TabBarControl
//
// Created by John Pannell on 12/19/05.
// Copyright 2005 Positive Spin Media. All rights reserved.
//
#import "AppController.h"
#import "WindowController.h"
@implementation AppController
- (void)awakeFromNib
{
[self newWindow:self];
[self newWindow:self];
NSRect frontFrame = [[NSApp keyWindow] frame];
frontFrame.origin.x += 400;
[[NSApp keyWindow] setFrame:frontFrame display:YES];
}
- (IBAction)newWindow:(id)sender
{
// put up a window
WindowController *newWindow = [[WindowController alloc] initWithWindowNibName:@"Window"];
[newWindow showWindow:self];
}
@end
@@ -1,34 +0,0 @@
//
// FakeModel.h
// TabBarControl
//
// Created by John Pannell on 12/19/05.
// Copyright 2005 Positive Spin Media. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface FakeModel : NSObject {
BOOL _isProcessing;
NSImage *_icon;
NSString *_iconName;
NSObjectController *controller;
int _objectCount;
}
// creation/destruction
- (id)init;
// accessors
- (BOOL)isProcessing;
- (void)setIsProcessing:(BOOL)value;
- (NSImage *)icon;
- (void)setIcon:(NSImage *)icon;
- (NSString *)iconName;
- (void)setIconName:(NSString *)iconName;
- (int)objectCount;
- (void)setObjectCount:(int)value;
- (NSObjectController *)controller;
@end
@@ -1,77 +0,0 @@
//
// FakeModel.m
// TabBarControl
//
// Created by John Pannell on 12/19/05.
// Copyright 2005 Positive Spin Media. All rights reserved.
//
#import "FakeModel.h"
@implementation FakeModel
- (id)init
{
if(self == [super init]){
_isProcessing = YES;
_icon = nil;
_iconName = nil;
_objectCount = 2;
controller = [[NSObjectController alloc] initWithContent:self];
}
return self;
}
// accessors
- (BOOL)isProcessing
{
return _isProcessing;
}
- (void)setIsProcessing:(BOOL)value
{
_isProcessing = value;
}
- (NSImage *)icon
{
return _icon;
}
- (void)setIcon:(NSImage *)icon
{
[icon retain];
[_icon release];
_icon = icon;
}
- (NSString *)iconName
{
return _iconName;
}
- (void)setIconName:(NSString *)iconName
{
[iconName retain];
[_iconName release];
_iconName = iconName;
}
- (int)objectCount
{
return _objectCount;
}
- (void)setObjectCount:(int)value
{
_objectCount = value;
}
- (NSObjectController *)controller
{
return controller;
}
@end
@@ -1,23 +0,0 @@
//
// NSBezierPath_AMShading.h
// ------------------------
//
// Created by Andreas on 2005-06-01.
// Copyright 2005 Andreas Mayer. All rights reserved.
//
// based on http://www.cocoadev.com/index.pl?GradientFill
#import <Cocoa/Cocoa.h>
@interface NSBezierPath (AMShading)
- (void)customHorizontalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor;
- (void)linearGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor;
- (void)bilinearGradientFillWithOuterColor:(NSColor *)outerColor innerColor:(NSColor *)innerColor;
@end
@@ -1,178 +0,0 @@
//
// NSBezierPath_AMShading.m
// ------------------------
//
// Created by Andreas on 2005-06-01.
// Copyright 2005 Andreas Mayer. All rights reserved.
//
#import "NSBezierPath_AMShading.h"
// CGFloat was introduced in OS X 10.5
#ifndef CGFLOAT_DEFINED
typedef float CGFloat;
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_DEFINED 1
#endif
@implementation NSBezierPath (AMShading)
static void linearShadedColor(void *info, const CGFloat *in, CGFloat *out)
{
CGFloat *colors = info;
*out++ = colors[0] + *in * colors[8];
*out++ = colors[1] + *in * colors[9];
*out++ = colors[2] + *in * colors[10];
*out++ = colors[3] + *in * colors[11];
}
static void bilinearShadedColor(void *info, const CGFloat *in, CGFloat *out)
{
CGFloat *colors = info;
CGFloat factor = (*in)*2.0;
if (*in > 0.5) {
factor = 2-factor;
}
*out++ = colors[0] + factor * colors[8];
*out++ = colors[1] + factor * colors[9];
*out++ = colors[2] + factor * colors[10];
*out++ = colors[3] + factor * colors[11];
}
- (void)linearGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor
{
/*
CGColorSpaceRef colorspace;
CGShadingRef shading;
CGPoint startPoint = {0, 0};
CGPoint endPoint = {0, 0};
CGFunctionRef function;
CGFloat colors[12]; // pointer to color values
// get my context
CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
NSColor *deviceDependentStartColor = [startColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
NSColor *deviceDependentEndColor = [endColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
// set up colors for gradient
colors[0] = [deviceDependentStartColor redComponent];
colors[1] = [deviceDependentStartColor greenComponent];
colors[2] = [deviceDependentStartColor blueComponent];
colors[3] = [deviceDependentStartColor alphaComponent];
colors[4] = [deviceDependentEndColor redComponent];
colors[5] = [deviceDependentEndColor greenComponent];
colors[6] = [deviceDependentEndColor blueComponent];
colors[7] = [deviceDependentEndColor alphaComponent];
// difference between start and end color for each color components
colors[8] = (colors[4]-colors[0]);
colors[9] = (colors[5]-colors[1]);
colors[10] = (colors[6]-colors[2]);
colors[11] = (colors[7]-colors[3]);
// draw gradient
colorspace = CGColorSpaceCreateDeviceRGB();
size_t components = 1 + CGColorSpaceGetNumberOfComponents(colorspace);
static const CGFloat domain[2] = {0.0, 1.0};
static const CGFloat range[10] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
static const CGFunctionCallbacks callbacks = {0, &shadedColor, NULL};
// Create a CGFunctionRef that describes a function taking 1 input and kChannelsPerColor outputs.
function = CGFunctionCreate(colors, 1, domain, components, range, &callbacks);
startPoint.x=0;
startPoint.y=[self bounds].origin.y;
endPoint.x=0;
endPoint.y=NSMaxY([self bounds]);
shading = CGShadingCreateAxial(colorspace, startPoint, endPoint, function, NO, NO);
CGContextSaveGState(currentContext);
[self addClip];
CGContextDrawShading(currentContext, shading);
CGContextRestoreGState(currentContext);
CGShadingRelease(shading);
CGFunctionRelease(function);
CGColorSpaceRelease(colorspace);
*/
static const CGFunctionCallbacks callbacks = {0, &linearShadedColor, NULL};
[self customHorizontalFillWithCallbacks:callbacks firstColor:startColor secondColor:endColor];
};
- (void)bilinearGradientFillWithOuterColor:(NSColor *)outerColor innerColor:(NSColor *)innerColor
{
static const CGFunctionCallbacks callbacks = {0, &bilinearShadedColor, NULL};
[self customHorizontalFillWithCallbacks:callbacks firstColor:innerColor secondColor:outerColor];
}
- (void)customHorizontalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor
{
CGColorSpaceRef colorspace;
CGShadingRef shading;
CGPoint startPoint = {0, 0};
CGPoint endPoint = {0, 0};
CGFunctionRef function;
CGFloat colors[12]; // pointer to color values
// get my context
CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
NSColor *deviceDependentFirstColor = [firstColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
NSColor *deviceDependentSecondColor = [secondColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
// set up colors for gradient
colors[0] = [deviceDependentFirstColor redComponent];
colors[1] = [deviceDependentFirstColor greenComponent];
colors[2] = [deviceDependentFirstColor blueComponent];
colors[3] = [deviceDependentFirstColor alphaComponent];
colors[4] = [deviceDependentSecondColor redComponent];
colors[5] = [deviceDependentSecondColor greenComponent];
colors[6] = [deviceDependentSecondColor blueComponent];
colors[7] = [deviceDependentSecondColor alphaComponent];
// difference between start and end color for each color components
colors[8] = (colors[4]-colors[0]);
colors[9] = (colors[5]-colors[1]);
colors[10] = (colors[6]-colors[2]);
colors[11] = (colors[7]-colors[3]);
// draw gradient
colorspace = CGColorSpaceCreateDeviceRGB();
size_t components = 1 + CGColorSpaceGetNumberOfComponents(colorspace);
static const CGFloat domain[2] = {0.0, 1.0};
static const CGFloat range[10] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
//static const CGFunctionCallbacks callbacks = {0, &bilinearShadedColor, NULL};
// Create a CGFunctionRef that describes a function taking 1 input and kChannelsPerColor outputs.
function = CGFunctionCreate(colors, 1, domain, components, range, &functionCallbacks);
startPoint.x=0;
startPoint.y=[self bounds].origin.y;
endPoint.x=0;
endPoint.y=NSMaxY([self bounds]);
shading = CGShadingCreateAxial(colorspace, startPoint, endPoint, function, NO, NO);
CGContextSaveGState(currentContext);
[self addClip];
CGContextDrawShading(currentContext, shading);
CGContextRestoreGState(currentContext);
CGShadingRelease(shading);
CGFunctionRelease(function);
CGColorSpaceRelease(colorspace);
}
@end

Some files were not shown because too many files have changed in this diff Show More