1 /* vi:set ts=8 sts=4 sw=4 ft=objc:
3 * VIM - Vi IMproved by Bram Moolenaar
4 * MacVim GUI port by Bjorn Winckler
6 * Do ":help uganda" in Vim to read copying and usage conditions.
7 * Do ":help credits" in Vim to see a list of people who contributed.
8 * See README.txt for an overview of the Vim source code.
11 #import <Cocoa/Cocoa.h>
14 // Enable to use experimental 'enc' support.
15 #define MM_ENABLE_CONV 0
20 // This is the protocol MMBackend implements.
22 // Only processInput:data: is allowed to cause state changes in Vim; all other
23 // messages should only read the Vim state. (Note that setDialogReturn: is an
24 // exception to this rule; there really is no other way to deal with dialogs
25 // since they work with callbacks, so we cannot wait for them to return.)
27 // Be careful with messages with return type other than 'oneway void' -- there
28 // is a reply timeout set in MMAppController, if a message fails to get a
29 // response within the given timeout an exception will be thrown. Use
30 // @try/@catch/@finally to deal with timeouts.
32 @protocol MMBackendProtocol
33 - (oneway
void)processInput
:(int)msgid data
:(in NSData
*)data
;
34 - (oneway
void)processInputAndData
:(in NSArray
*)messages
;
35 - (BOOL
)checkForModifiedBuffers
;
36 - (oneway
void)setDialogReturn
:(in bycopy id
)obj
;
37 - (BOOL
)starRegisterToPasteboard
:(byref NSPasteboard
*)pboard
;
38 - (NSString
*)evaluateExpression
:(in bycopy NSString
*)expr
;
43 // This is the protocol MMVimController implements.
45 @protocol MMFrontendProtocol
46 - (oneway
void)processCommandQueue
:(in NSArray
*)queue
;
47 - (oneway
void)showSavePanelForDirectory
:(in bycopy NSString
*)dir
48 title
:(in bycopy NSString
*)title
50 - (oneway
void)presentDialogWithStyle
:(int)style
51 message
:(in bycopy NSString
*)message
52 informativeText
:(in bycopy NSString
*)text
53 buttonTitles
:(in bycopy NSArray
*)buttonTitles
54 textFieldString
:(in bycopy NSString
*)textFieldString
;
59 // This is the protocol MMAppController implements.
61 // It handles connections between MacVim and Vim.
63 @protocol MMAppProtocol
64 - (byref id
<MMFrontendProtocol
>)connectBackend
:
65 (byref in id
<MMBackendProtocol
>)backend pid
:(int)pid
;
66 - (NSArray
*)serverList
;
72 // The following enum lists all messages that are passed between MacVim and
73 // Vim. These can be sent in processInput:data: and in processCommandQueue:.
76 // NOTE! This array must be updated whenever the enum below changes!
77 extern char *MessageStrings
[];
80 OpenVimWindowMsgID
= 1,
92 SetTextDimensionsMsgID
,
93 SetVimWindowTitleMsgID
,
106 CreateScrollbarMsgID
,
107 DestroyScrollbarMsgID
,
109 SetScrollbarPositionMsgID
,
110 SetScrollbarThumbMsgID
,
114 SetDefaultColorsMsgID
,
123 AdjustLinespaceMsgID
,
130 ClearAllDrawType
= 1,
133 ReplaceStringDrawType
,
139 MMInsertionPointBlock
,
140 MMInsertionPointHorizontal
,
141 MMInsertionPointVertical
,
142 MMInsertionPointHollow
,
146 // NOTE! These values must be close to zero, or the 'add menu' message might
147 // fail to distinguish type from tag.
156 ToolbarLabelFlag
= 1,
158 ToolbarSizeRegularFlag
= 4
162 // NSUserDefaults keys
163 extern NSString
*MMNoWindowKey
;
164 extern NSString
*MMTabMinWidthKey
;
165 extern NSString
*MMTabMaxWidthKey
;
166 extern NSString
*MMTabOptimumWidthKey
;
167 extern NSString
*MMTextInsetLeftKey
;
168 extern NSString
*MMTextInsetRightKey
;
169 extern NSString
*MMTextInsetTopKey
;
170 extern NSString
*MMTextInsetBottomKey
;
171 extern NSString
*MMTerminateAfterLastWindowClosedKey
;
172 extern NSString
*MMTypesetterKey
;
173 extern NSString
*MMCellWidthMultiplierKey
;
174 extern NSString
*MMBaselineOffsetKey
;
175 extern NSString
*MMTranslateCtrlClickKey
;
176 extern NSString
*MMTopLeftPointKey
;
177 extern NSString
*MMOpenFilesInTabsKey
;