diff options
author | Bibiko <bibiko@eva.mpg.de> | 2010-03-07 22:07:58 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2010-03-07 22:07:58 +0000 |
commit | ee8c83d433d0351dffda4ce273e3d1278154f769 (patch) | |
tree | 04839edbaf31f4cf9c598dce58e24d65448f6472 | |
parent | fb4e3024ae282b557eef755b974c3e081dac0f3e (diff) | |
download | sequelpro-ee8c83d433d0351dffda4ce273e3d1278154f769.tar.gz sequelpro-ee8c83d433d0351dffda4ce273e3d1278154f769.tar.bz2 sequelpro-ee8c83d433d0351dffda4ce273e3d1278154f769.zip |
• added to CustomQuery's CMTextView the option to set auto-completion on/off, settable in Prefs and gear menu
- if inserted completion is marked as function it inserts snippet (${}1:) so far; function parameters as snippets follows soon
-rw-r--r-- | Interfaces/English.lproj/DBView.xib | 119 | ||||
-rw-r--r-- | Interfaces/English.lproj/Preferences.xib | 388 | ||||
-rw-r--r-- | Resources/PreferenceDefaults.plist | 4 | ||||
-rw-r--r-- | Source/CMTextView.h | 7 | ||||
-rw-r--r-- | Source/CMTextView.m | 56 | ||||
-rw-r--r-- | Source/CustomQuery.m | 6 | ||||
-rw-r--r-- | Source/SPConstants.h | 2 | ||||
-rw-r--r-- | Source/SPConstants.m | 2 | ||||
-rw-r--r-- | Source/SPNarrowDownCompletion.h | 3 | ||||
-rw-r--r-- | Source/SPNarrowDownCompletion.m | 19 |
10 files changed, 556 insertions, 50 deletions
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index 47e08691..b425a7c5 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -24,6 +24,7 @@ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> <integer value="6885"/> + <integer value="5281"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -62,7 +63,7 @@ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{780, 480}</string> <object class="NSView" key="NSWindowView" id="579726586"> - <nil key="NSNextResponder"/> + <reference key="NSNextResponder"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -2143,7 +2144,7 @@ <object class="NSTabViewItem" id="624106058"> <string key="NSIdentifier">content</string> <object class="NSView" key="NSView" id="1013108064"> - <reference key="NSNextResponder" ref="714795046"/> + <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -2883,7 +2884,6 @@ </object> </object> <string key="NSFrame">{{10, 7}, {706, 544}}</string> - <reference key="NSSuperview" ref="714795046"/> </object> <string key="NSLabel">Content</string> <reference key="NSColor" ref="62854682"/> @@ -2892,7 +2892,7 @@ <object class="NSTabViewItem" id="105987292"> <string key="NSIdentifier">customQuery</string> <object class="NSView" key="NSView" id="746504912"> - <nil key="NSNextResponder"/> + <reference key="NSNextResponder" ref="714795046"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -2919,6 +2919,29 @@ <object class="NSTextView" id="1055190999"> <reference key="NSNextResponder" ref="1072692119"/> <int key="NSvFlags">6418</int> + <object class="NSMutableSet" key="NSDragTypes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="set.sortedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>Apple HTML pasteboard type</string> + <string>Apple PDF pasteboard type</string> + <string>Apple PICT pasteboard type</string> + <string>Apple PNG pasteboard type</string> + <string>Apple URL pasteboard type</string> + <string>CorePasteboardFlavorType 0x6D6F6F76</string> + <string>NSColor pasteboard type</string> + <string>NSFilenamesPboardType</string> + <string>NSStringPboardType</string> + <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> + <string>NeXT RTFD pasteboard type</string> + <string>NeXT Rich Text Format v1.0 pasteboard type</string> + <string>NeXT TIFF v4.0 pasteboard type</string> + <string>NeXT font pasteboard type</string> + <string>NeXT ruler pasteboard type</string> + <string>WebURLsWithTitlesPboardType</string> + <string>public.url</string> + </object> + </object> <string key="NSFrameSize">{694, 14}</string> <reference key="NSSuperview" ref="1072692119"/> <object class="NSTextContainer" key="NSTextContainer" id="326170846"> @@ -3640,6 +3663,16 @@ <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="984501775"/> </object> + <object class="NSMenuItem" id="919863898"> + <reference key="NSMenu" ref="60735230"/> + <string key="NSTitle">Auto-completion</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="450876295"/> + <reference key="NSMixedImage" ref="414351669"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="984501775"/> + </object> <object class="NSMenuItem" id="414081589"> <reference key="NSMenu" ref="60735230"/> <string key="NSTitle">Update Help while typing</string> @@ -3653,7 +3686,7 @@ </object> <bool key="NSNoAutoenable">YES</bool> </object> - <int key="NSSelectedIndex">17</int> + <int key="NSSelectedIndex">19</int> <bool key="NSPullDown">YES</bool> <int key="NSPreferredEdge">1</int> <bool key="NSUsesItemFromMenu">YES</bool> @@ -3799,6 +3832,7 @@ </object> </object> <string key="NSFrame">{{10, 7}, {706, 544}}</string> + <reference key="NSSuperview" ref="714795046"/> </object> <string key="NSLabel">Custom Query</string> <reference key="NSColor" ref="62854682"/> @@ -5444,14 +5478,14 @@ <reference key="NSTabView" ref="714795046"/> </object> </object> - <reference key="NSSelectedTabViewItem" ref="624106058"/> + <reference key="NSSelectedTabViewItem" ref="105987292"/> <reference key="NSFont" ref="26"/> <int key="NSTvFlags">134217731</int> <bool key="NSAllowTruncatedLabels">YES</bool> <bool key="NSDrawsBackground">YES</bool> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="1013108064"/> + <reference ref="746504912"/> </object> </object> </object> @@ -5468,6 +5502,7 @@ </object> </object> <string key="NSFrameSize">{944, 550}</string> + <reference key="NSSuperview"/> </object> <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{780, 502}</string> @@ -11710,6 +11745,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSClassName">NSView</string> </object> <object class="NSUserDefaultsController" id="461189245"> + <object class="NSMutableArray" key="NSDeclaredKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>CustomQueryAutoComplete</string> + <string>CustomQueryAuto</string> + <string>CustomQueryAutoUppercaseKeywords</string> + </object> <bool key="NSSharedInstance">YES</bool> </object> <object class="NSCustomObject" id="601471102"> @@ -14093,22 +14134,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <int key="connectionID">5859</int> </object> <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: values.CustomQueryAutoUppercaseKeywords</string> - <reference key="source" ref="81663257"/> - <reference key="destination" ref="461189245"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="81663257"/> - <reference key="NSDestination" ref="461189245"/> - <string key="NSLabel">value: values.CustomQueryAutoUppercaseKeywords</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">values.CustomQueryAutoUppercaseKeywords</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">5860</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">selectTableColumn:</string> <reference key="source" ref="885866030"/> @@ -16165,6 +16190,38 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <int key="connectionID">6904</int> </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: values.CustomQueryAutoComplete</string> + <reference key="source" ref="919863898"/> + <reference key="destination" ref="461189245"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="919863898"/> + <reference key="NSDestination" ref="461189245"/> + <string key="NSLabel">value: values.CustomQueryAutoComplete</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">values.CustomQueryAutoComplete</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">6910</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: values.CustomQueryAutoUppercaseKeywords</string> + <reference key="source" ref="81663257"/> + <reference key="destination" ref="461189245"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="81663257"/> + <reference key="NSDestination" ref="461189245"/> + <string key="NSLabel">value: values.CustomQueryAutoUppercaseKeywords</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">values.CustomQueryAutoUppercaseKeywords</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">6912</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -18410,6 +18467,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <reference ref="594285746"/> <reference ref="635467451"/> <reference ref="128208712"/> + <reference ref="919863898"/> </object> <reference key="parent" ref="984501775"/> </object> @@ -22752,6 +22810,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <reference key="object" ref="828761093"/> <reference key="parent" ref="513459867"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">6908</int> + <reference key="object" ref="919863898"/> + <reference key="parent" ref="60735230"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -24131,6 +24194,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>69.ImportedFromIB2</string> <string>6901.IBPluginDependency</string> <string>6902.IBPluginDependency</string> + <string>6908.IBPluginDependency</string> <string>711.IBPluginDependency</string> <string>711.ImportedFromIB2</string> <string>713.IBPluginDependency</string> @@ -24940,11 +25004,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{402, -257}, {944, 550}}</string> + <string>{{-1, 152}, {944, 550}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <boolean value="YES"/> <boolean value="NO"/> - <string>{{402, -257}, {944, 550}}</string> + <string>{{-1, 152}, {944, 550}}</string> <integer value="1"/> <integer value="1"/> <string>{{62, 352}, {845, 504}}</string> @@ -25110,7 +25174,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{110, 61}, {256, 445}}</string> + <string>{{202, 69}, {256, 462}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -26127,6 +26191,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> @@ -26269,7 +26334,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> </object> <nil key="sourceID"/> - <int key="maxID">6907</int> + <int key="maxID">6912</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> diff --git a/Interfaces/English.lproj/Preferences.xib b/Interfaces/English.lproj/Preferences.xib index 04efb9eb..4d8b75cd 100644 --- a/Interfaces/English.lproj/Preferences.xib +++ b/Interfaces/English.lproj/Preferences.xib @@ -3721,10 +3721,155 @@ AQAAAAA</bytes> <int key="NSPeriodicInterval">25</int> </object> </object> + <object class="NSButton" id="827082642"> + <reference key="NSNextResponder" ref="1033452264"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{257, 144}, {179, 18}}</string> + <reference key="NSSuperview" ref="1033452264"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="92164221"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Auto-Completion</string> + <reference key="NSSupport" ref="320262838"/> + <reference key="NSControlView" ref="827082642"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="752798171"/> + <reference key="NSAlternateImage" ref="888311049"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSTextField" id="184945490"> + <reference key="NSNextResponder" ref="1033452264"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{357, 119}, {29, 19}}</string> + <reference key="NSSuperview" ref="1033452264"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="409964321"> + <int key="NSCellFlags">-1538130368</int> + <int key="NSCellFlags2">-2076048384</int> + <string key="NSContents">0.1</string> + <reference key="NSSupport" ref="26"/> + <object class="NSNumberFormatter" key="NSFormatter" id="706329937"> + <object class="NSMutableDictionary" key="NS.attributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>allowsFloats</string> + <string>alwaysShowsDecimalSeparator</string> + <string>decimalSeparator</string> + <string>formatterBehavior</string> + <string>groupingSeparator</string> + <string>locale</string> + <string>maximum</string> + <string>maximumIntegerDigits</string> + <string>minimum</string> + <string>minimumFractionDigits</string> + <string>positiveFormat</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + <boolean value="YES"/> + <string>.</string> + <integer value="1040"/> + <string/> + <reference ref="894463536"/> + <real value="20"/> + <integer value="1"/> + <real value="0.10000000000000001"/> + <integer value="1"/> + <string>#.0</string> + </object> + </object> + <string key="NS.positiveformat">#.0</string> + <string key="NS.negativeformat">#.0</string> + <nil key="NS.positiveattrs"/> + <nil key="NS.negativeattrs"/> + <nil key="NS.zero"/> + <nil key="NS.nil"/> + <object class="NSAttributedString" key="NS.nan"> + <string key="NSString">NaN</string> + <reference key="NSAttributes" ref="469277987"/> + </object> + <real value="0.10000000000000001" key="NS.min"/> + <real value="20" key="NS.max"/> + <object class="NSDecimalNumberHandler" key="NS.rounding"> + <int key="NS.roundingmode">3</int> + <bool key="NS.raise.overflow">YES</bool> + <bool key="NS.raise.underflow">YES</bool> + <bool key="NS.raise.dividebyzero">YES</bool> + </object> + <string key="NS.decimal">.</string> + <string key="NS.thousand"/> + <bool key="NS.hasthousands">NO</bool> + <bool key="NS.localized">NO</bool> + <bool key="NS.allowsfloats">YES</bool> + </object> + <reference key="NSControlView" ref="184945490"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="1001357688"/> + <reference key="NSTextColor" ref="6928728"/> + </object> + </object> + <object class="NSTextField" id="892250776"> + <reference key="NSNextResponder" ref="1033452264"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{298, 121}, {54, 14}}</string> + <reference key="NSSuperview" ref="1033452264"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1060023867"> + <int key="NSCellFlags">605158976</int> + <int key="NSCellFlags2">71435264</int> + <string key="NSContents">Delay by:</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="892250776"/> + <reference key="NSBackgroundColor" ref="700609571"/> + <reference key="NSTextColor" ref="1035618107"/> + </object> + </object> + <object class="NSStepper" id="107658761"> + <reference key="NSNextResponder" ref="1033452264"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{392, 117}, {15, 22}}</string> + <reference key="NSSuperview" ref="1033452264"/> + <bool key="NSEnabled">YES</bool> + <object class="NSStepperCell" key="NSCell" id="171005061"> + <int key="NSCellFlags">604896800</int> + <int key="NSCellFlags2">131072</int> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="107658761"/> + <double key="NSValue">1</double> + <double key="NSMinValue">0.10000000000000001</double> + <double key="NSMaxValue">5</double> + <double key="NSIncrement">0.10000000000000001</double> + <bool key="NSAutorepeat">YES</bool> + </object> + </object> + <object class="NSTextField" id="1009372112"> + <reference key="NSNextResponder" ref="1033452264"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{410, 121}, {27, 14}}</string> + <reference key="NSSuperview" ref="1033452264"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="201150384"> + <int key="NSCellFlags">605158976</int> + <int key="NSCellFlags2">272761856</int> + <string key="NSContents">secs</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="1009372112"/> + <reference key="NSBackgroundColor" ref="700609571"/> + <reference key="NSTextColor" ref="1035618107"/> + </object> + </object> <object class="NSButton" id="774563613"> <reference key="NSNextResponder" ref="1033452264"/> <int key="NSvFlags">-2147483380</int> - <string key="NSFrame">{{257, 144}, {197, 18}}</string> + <string key="NSFrame">{{257, 91}, {197, 18}}</string> <reference key="NSSuperview" ref="1033452264"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="420702000"> @@ -3896,7 +4041,8 @@ AQAAAAA</bytes> <object class="NSUserDefaultsController" id="151174232"> <object class="NSMutableArray" key="NSDeclaredKeys"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>CustomQueryEditorTabStopWidth</string> + <string>CustomQueryAutoComplete</string> + <string>CustomQueryAutoCompleteDelay</string> </object> <bool key="NSSharedInstance">YES</bool> </object> @@ -6040,6 +6186,134 @@ AQAAAAA</bytes> </object> <int key="connectionID">1516</int> </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">takeFloatValueFrom:</string> + <reference key="source" ref="107658761"/> + <reference key="destination" ref="184945490"/> + </object> + <int key="connectionID">1528</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">takeFloatValueFrom:</string> + <reference key="source" ref="184945490"/> + <reference key="destination" ref="107658761"/> + </object> + <int key="connectionID">1529</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: values.CustomQueryUpdateAutoHelp</string> + <reference key="source" ref="1009372112"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1009372112"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">enabled: values.CustomQueryUpdateAutoHelp</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">values.CustomQueryUpdateAutoHelp</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1534</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: values.CustomQueryUpdateAutoHelp</string> + <reference key="source" ref="892250776"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="892250776"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">enabled: values.CustomQueryUpdateAutoHelp</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">values.CustomQueryUpdateAutoHelp</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1535</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: values.CustomQueryAutoComplete</string> + <reference key="source" ref="827082642"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="827082642"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">value: values.CustomQueryAutoComplete</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">values.CustomQueryAutoComplete</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1537</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: values.CustomQueryAutoCompleteDelay</string> + <reference key="source" ref="184945490"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="184945490"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">value: values.CustomQueryAutoCompleteDelay</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">values.CustomQueryAutoCompleteDelay</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1538</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: values.CustomQueryAutoComplete</string> + <reference key="source" ref="184945490"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="184945490"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">enabled: values.CustomQueryAutoComplete</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">values.CustomQueryAutoComplete</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1539</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: values.CustomQueryAutoCompleteDelay</string> + <reference key="source" ref="107658761"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="107658761"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">value: values.CustomQueryAutoCompleteDelay</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">values.CustomQueryAutoCompleteDelay</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1540</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: values.CustomQueryAutoComplete</string> + <reference key="source" ref="107658761"/> + <reference key="destination" ref="151174232"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="107658761"/> + <reference key="NSDestination" ref="151174232"/> + <string key="NSLabel">enabled: values.CustomQueryAutoComplete</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">values.CustomQueryAutoComplete</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1541</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -7058,6 +7332,11 @@ AQAAAAA</bytes> <reference ref="161634003"/> <reference ref="304684720"/> <reference ref="1018119488"/> + <reference ref="1009372112"/> + <reference ref="107658761"/> + <reference ref="892250776"/> + <reference ref="184945490"/> + <reference ref="827082642"/> </object> <reference key="parent" ref="0"/> <string key="objectName">Editor</string> @@ -8578,6 +8857,85 @@ AQAAAAA</bytes> <reference key="object" ref="141894253"/> <reference key="parent" ref="248584789"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">1517</int> + <reference key="object" ref="1009372112"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="201150384"/> + </object> + <reference key="parent" ref="1033452264"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1518</int> + <reference key="object" ref="107658761"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="171005061"/> + </object> + <reference key="parent" ref="1033452264"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1519</int> + <reference key="object" ref="892250776"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1060023867"/> + </object> + <reference key="parent" ref="1033452264"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1520</int> + <reference key="object" ref="184945490"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="409964321"/> + </object> + <reference key="parent" ref="1033452264"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1521</int> + <reference key="object" ref="827082642"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="92164221"/> + </object> + <reference key="parent" ref="1033452264"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1522</int> + <reference key="object" ref="92164221"/> + <reference key="parent" ref="827082642"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1523</int> + <reference key="object" ref="409964321"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="706329937"/> + </object> + <reference key="parent" ref="184945490"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1524</int> + <reference key="object" ref="706329937"/> + <reference key="parent" ref="409964321"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1525</int> + <reference key="object" ref="1060023867"/> + <reference key="parent" ref="892250776"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1526</int> + <reference key="object" ref="171005061"/> + <reference key="parent" ref="107658761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1527</int> + <reference key="object" ref="201150384"/> + <reference key="parent" ref="1009372112"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -8796,6 +9154,18 @@ AQAAAAA</bytes> <string>1507.IBNumberFormatterBehaviorMetadataKey</string> <string>1507.IBNumberFormatterLocalizesFormatMetadataKey</string> <string>1507.IBPluginDependency</string> + <string>1517.IBPluginDependency</string> + <string>1518.IBPluginDependency</string> + <string>1519.IBPluginDependency</string> + <string>1520.IBPluginDependency</string> + <string>1521.IBPluginDependency</string> + <string>1522.IBPluginDependency</string> + <string>1523.IBPluginDependency</string> + <string>1524.IBNumberFormatterLocalizesFormatMetadataKey</string> + <string>1524.IBPluginDependency</string> + <string>1525.IBPluginDependency</string> + <string>1526.IBPluginDependency</string> + <string>1527.IBPluginDependency</string> <string>17.IBEditorWindowLastContentRect</string> <string>17.IBPluginDependency</string> <string>17.IBUserGuides</string> @@ -9276,6 +9646,18 @@ AQAAAAA</bytes> <integer value="1041"/> <boolean value="NO"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="YES"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>{{571, 222}, {500, 280}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <object class="NSMutableArray"> @@ -9659,7 +10041,7 @@ AQAAAAA</bytes> </object> </object> <nil key="sourceID"/> - <int key="maxID">1516</int> + <int key="maxID">1541</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> diff --git a/Resources/PreferenceDefaults.plist b/Resources/PreferenceDefaults.plist index dd4a8a59..5b941ba3 100644 --- a/Resources/PreferenceDefaults.plist +++ b/Resources/PreferenceDefaults.plist @@ -86,6 +86,10 @@ <false/> <key>CustomQueryEditorTabStopWidth</key> <integer>4</integer> + <key>CustomQueryAutoComplete</key> + <false/> + <key>CustomQueryAutoCompleteDelay</key> + <real>1.5</real> <key>CustomQueryAutoHelpDelay</key> <real>1</real> <key>lastSqlFileEncoding</key> diff --git a/Source/CMTextView.h b/Source/CMTextView.h index 53afe0df..558bc284 100644 --- a/Source/CMTextView.h +++ b/Source/CMTextView.h @@ -73,6 +73,7 @@ static inline id NSMutableAttributedStringAttributeAtIndex (NSMutableAttributedS NSInteger currentSnippetIndex; BOOL snippetWasJustInserted; + BOOL completionIsOpen; NSColor *queryHiliteColor; NSColor *queryEditorBackgroundColor; @@ -99,6 +100,7 @@ static inline id NSMutableAttributedStringAttributeAtIndex (NSMutableAttributedS @property(retain) NSColor* otherTextColor; @property(assign) NSRange queryRange; @property(assign) BOOL shouldHiliteQuery; +@property(assign) BOOL completionIsOpen; - (IBAction)showMySQLHelpForCurrentWord:(id)sender; @@ -128,12 +130,13 @@ static inline id NSMutableAttributedStringAttributeAtIndex (NSMutableAttributedS - (void) doSyntaxHighlighting; - (NSBezierPath*)roundedBezierPathAroundRange:(NSRange)aRange; - (void) setConnection:(MCPConnection *)theConnection withVersion:(NSInteger)majorVersion; -- (void) doCompletionByUsingSpellChecker:(BOOL)isDictMode fuzzyMode:(BOOL)fuzzySearch; +- (void) doCompletionByUsingSpellChecker:(BOOL)isDictMode fuzzyMode:(BOOL)fuzzySearch autoCompleteMode:(BOOL)autoCompleteMode; +- (void) doAutoCompletion; - (NSArray *)suggestionsForSQLCompletionWith:(NSString *)currentWord dictMode:(BOOL)isDictMode browseMode:(BOOL)dbBrowseMode withTableName:(NSString*)aTableName withDbName:(NSString*)aDbName; - (void) selectCurrentQuery; - (BOOL)checkForCaretInsideSnippet; -- (void)insertFavoriteAsSnippet:(NSString*)theSnippet atRange:(NSRange)targetRange; +- (void)insertAsSnippet:(NSString*)theSnippet atRange:(NSRange)targetRange; - (NSUInteger)characterIndexOfPoint:(NSPoint)aPoint; - (void)insertFileContentOfFile:(NSString *)aPath; diff --git a/Source/CMTextView.m b/Source/CMTextView.m index e32e1234..30c4d7a5 100644 --- a/Source/CMTextView.m +++ b/Source/CMTextView.m @@ -98,6 +98,7 @@ static inline NSPoint SPPointOnLine(NSPoint a, NSPoint b, CGFloat t) { return NS @synthesize otherTextColor; @synthesize queryRange; @synthesize shouldHiliteQuery; +@synthesize completionIsOpen; /* * Sort function (mainly used to sort the words in the textView) @@ -126,6 +127,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) startListeningToBoundChanges = NO; textBufferSizeIncreased = NO; snippetControlCounter = -1; + completionIsOpen = NO; lineNumberView = [[NoodleLineNumberView alloc] initWithScrollView:scrollView]; [scrollView setVerticalRulerView:lineNumberView]; @@ -177,6 +179,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) [prefs addObserver:self forKeyPath:SPCustomQueryEditorVariableColor options:NSKeyValueObservingOptionNew context:NULL]; [prefs addObserver:self forKeyPath:SPCustomQueryEditorTextColor options:NSKeyValueObservingOptionNew context:NULL]; [prefs addObserver:self forKeyPath:SPCustomQueryEditorTabStopWidth options:NSKeyValueObservingOptionNew context:NULL]; + [prefs addObserver:self forKeyPath:SPCustomQueryAutoUppercaseKeywords options:NSKeyValueObservingOptionNew context:NULL]; } @@ -234,6 +237,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) [self performSelector:@selector(doSyntaxHighlighting) withObject:nil afterDelay:0.1]; } else if ([keyPath isEqualToString:SPCustomQueryEditorTabStopWidth]) { [self setTabStops]; + } else if ([keyPath isEqualToString:SPCustomQueryAutoUppercaseKeywords]) { + [self setAutouppercaseKeywords:[prefs boolForKey:SPCustomQueryAutoUppercaseKeywords]]; } } @@ -467,7 +472,21 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) } -- (void) doCompletionByUsingSpellChecker:(BOOL)isDictMode fuzzyMode:(BOOL)fuzzySearch +- (void) doAutoCompletion +{ + NSRange r = [self selectedRange]; + + if(![[self delegate] isKindOfClass:[CustomQuery class]] || r.length || snippetControlCounter > -1) return; + + if(r.location) { + if([[[self textStorage] attribute:kQuote atIndex:r.location-1 effectiveRange:nil] isEqualToString:kQuoteValue]) + return; + if(![[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:[[self string] characterAtIndex:r.location-1]]) + [self doCompletionByUsingSpellChecker:NO fuzzyMode:NO autoCompleteMode:YES]; + } +} + +- (void) doCompletionByUsingSpellChecker:(BOOL)isDictMode fuzzyMode:(BOOL)fuzzySearch autoCompleteMode:(BOOL)autoCompleteMode { if(![self isEditable]) return; @@ -475,7 +494,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) [self breakUndoCoalescing]; NSUInteger caretPos = NSMaxRange([self selectedRange]); - // [self setSelectedRange:NSMakeRange(caretPos, 0)]; + BOOL caretMovedLeft = NO; // Check if caret is located after a ` - if so move caret inside @@ -501,14 +520,12 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) // Break for long stuff if(completionRange.length>100000) return; - NSString* allow; // additional chars which not close the popup if(isDictMode) allow= @"_"; else allow= @"_. "; - BOOL dbBrowseMode = NO; NSInteger backtickMode = 0; // 0 none, 1 rigth only, 2 left only, 3 both BOOL caseInsensitive = YES; @@ -669,7 +686,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) withDbName:dbName withTableName:tableName selectedDb:currentDb - caretMovedLeft:caretMovedLeft]; + caretMovedLeft:caretMovedLeft + autoComplete:autoCompleteMode]; //Get the NSPoint of the first character of the current word NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(completionRange.location,1) actualCharacterRange:NULL]; @@ -685,6 +703,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) pos.y -= [[self font] pointSize]*1.25; [completionPopUp setCaretPos:pos]; + completionIsOpen = YES; [completionPopUp orderFront:self]; [completionPopUp insertCommonPrefix]; @@ -1083,7 +1102,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) /* * Inserts a chosen query favorite and initialze a snippet session if user defined any */ -- (void)insertFavoriteAsSnippet:(NSString*)theSnippet atRange:(NSRange)targetRange +- (void)insertAsSnippet:(NSString*)theSnippet atRange:(NSRange)targetRange { // Do not allow the insertion of a query favorite if snippets are active @@ -1496,14 +1515,21 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) long curFlags = ([theEvent modifierFlags] & allFlags); if ([theEvent keyCode] == 53 && [self isEditable]){ // ESC key for internal completion + + // Cancel autocompletion trigger + if([prefs boolForKey:SPCustomQueryAutoComplete]) + [NSObject cancelPreviousPerformRequestsWithTarget:self + selector:@selector(doAutoCompletion) + object:nil]; + if(curFlags==(NSControlKeyMask)) - [self doCompletionByUsingSpellChecker:NO fuzzyMode:YES]; + [self doCompletionByUsingSpellChecker:NO fuzzyMode:YES autoCompleteMode:NO]; else - [self doCompletionByUsingSpellChecker:NO fuzzyMode:NO]; + [self doCompletionByUsingSpellChecker:NO fuzzyMode:NO autoCompleteMode:NO]; return; } if (insertedCharacter == NSF5FunctionKey && [self isEditable]){ // F5 for completion based on spell checker - [self doCompletionByUsingSpellChecker:YES fuzzyMode:NO]; + [self doCompletionByUsingSpellChecker:YES fuzzyMode:NO autoCompleteMode:NO]; return; } @@ -1557,7 +1583,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) if(snippetControlCounter < 0 && [[[self window] delegate] fileURL]) { NSArray *snippets = [[SPQueryController sharedQueryController] queryFavoritesForFileURL:[[[self window] delegate] fileURL] andTabTrigger:tabTrigger includeGlobals:YES]; if([snippets count] > 0 && [(NSString*)[(NSDictionary*)[snippets objectAtIndex:0] objectForKey:@"query"] length]) { - [self insertFavoriteAsSnippet:[(NSDictionary*)[snippets objectAtIndex:0] objectForKey:@"query"] atRange:targetRange]; + [self insertAsSnippet:[(NSDictionary*)[snippets objectAtIndex:0] objectForKey:@"query"] atRange:targetRange]; return; } } @@ -3391,6 +3417,16 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) [self performSelector:@selector(autoHelp) withObject:nil afterDelay:[[[prefs valueForKey:SPCustomQueryAutoHelpDelay] retain] doubleValue]]; } + // Cancel autocompletion trigger + if([prefs boolForKey:SPCustomQueryAutoComplete]) + [NSObject cancelPreviousPerformRequestsWithTarget:self + selector:@selector(doAutoCompletion) + object:nil]; + + // Start autocompletion if enabled + if([prefs boolForKey:SPCustomQueryAutoComplete] && !completionIsOpen && editedMask != 1) + [self performSelector:@selector(doAutoCompletion) withObject:nil afterDelay:[[[prefs valueForKey:SPCustomQueryAutoCompleteDelay] retain] doubleValue]]; + // Cancel calling doSyntaxHighlighting for large text if([[self string] length] > SP_TEXT_SIZE_TRIGGER_FOR_PARTLY_PARSING) [NSObject cancelPreviousPerformRequestsWithTarget:self diff --git a/Source/CustomQuery.m b/Source/CustomQuery.m index e586557e..e3d26d74 100644 --- a/Source/CustomQuery.m +++ b/Source/CustomQuery.m @@ -222,7 +222,7 @@ } // The actual query strings have been already stored as tooltip - [textView insertFavoriteAsSnippet:[[queryFavoritesButton selectedItem] toolTip] atRange:NSMakeRange([textView selectedRange].location, 0)]; + [textView insertAsSnippet:[[queryFavoritesButton selectedItem] toolTip] atRange:NSMakeRange([textView selectedRange].location, 0)]; } } @@ -325,9 +325,9 @@ // on normal autocomplete usage. if (sender == completionListMenuItem) { if([[NSApp currentEvent] modifierFlags] & (NSControlKeyMask)) - [textView doCompletionByUsingSpellChecker:NO fuzzyMode:YES]; + [textView doCompletionByUsingSpellChecker:NO fuzzyMode:YES autoCompleteMode:NO]; else - [textView doCompletionByUsingSpellChecker:NO fuzzyMode:NO]; + [textView doCompletionByUsingSpellChecker:NO fuzzyMode:NO autoCompleteMode:NO]; } // "Editor font..." menu item to bring up the font panel diff --git a/Source/SPConstants.h b/Source/SPConstants.h index 12f2a38f..83ce6996 100644 --- a/Source/SPConstants.h +++ b/Source/SPConstants.h @@ -135,6 +135,8 @@ extern NSString *SPCustomQueryUpdateAutoHelp; extern NSString *SPCustomQueryAutoHelpDelay; extern NSString *SPCustomQueryHighlightCurrentQuery; extern NSString *SPCustomQueryEditorTabStopWidth; +extern NSString *SPCustomQueryAutoComplete; +extern NSString *SPCustomQueryAutoCompleteDelay; // AutoUpdate Prefpane extern NSString *SPLastUsedVersion; diff --git a/Source/SPConstants.m b/Source/SPConstants.m index bea60f8b..aa2c3508 100644 --- a/Source/SPConstants.m +++ b/Source/SPConstants.m @@ -103,6 +103,8 @@ NSString *SPCustomQueryUpdateAutoHelp = @"CustomQueryUpdateAutoHelp"; NSString *SPCustomQueryAutoHelpDelay = @"CustomQueryAutoHelpDelay"; NSString *SPCustomQueryHighlightCurrentQuery = @"CustomQueryHighlightCurrentQuery"; NSString *SPCustomQueryEditorTabStopWidth = @"CustomQueryEditorTabStopWidth"; +NSString *SPCustomQueryAutoComplete = @"CustomQueryAutoComplete"; +NSString *SPCustomQueryAutoCompleteDelay = @"CustomQueryAutoCompleteDelay"; // AutoUpdate Prefpane NSString *SPLastUsedVersion = @"LastUsedVersion"; diff --git a/Source/SPNarrowDownCompletion.h b/Source/SPNarrowDownCompletion.h index 96558b9d..6901ffa1 100644 --- a/Source/SPNarrowDownCompletion.h +++ b/Source/SPNarrowDownCompletion.h @@ -49,6 +49,7 @@ BOOL noFilterString; BOOL cursorMovedLeft; BOOL commaInsertionMode; + BOOL autoCompletionMode; NSInteger backtickMode; NSFont *tableFont; NSRange theCharRange; @@ -68,7 +69,7 @@ charRange:(NSRange)initRange parseRange:(NSRange)parseRange inView:(id)aView dictMode:(BOOL)mode dbMode:(BOOL)theDbMode tabTriggerMode:(BOOL)tabTriggerMode fuzzySearch:(BOOL)fuzzySearch backtickMode:(NSInteger)theBackTickMode withDbName:(NSString*)dbName withTableName:(NSString*)tableName - selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft; + selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft autoComplete:(BOOL)autoComplete; - (void)setCaretPos:(NSPoint)aPos; - (void)insert_text:(NSString* )aString; - (void)insertCommonPrefix; diff --git a/Source/SPNarrowDownCompletion.m b/Source/SPNarrowDownCompletion.m index 032e80b3..8e5bebec 100644 --- a/Source/SPNarrowDownCompletion.m +++ b/Source/SPNarrowDownCompletion.m @@ -136,7 +136,7 @@ charRange:(NSRange)initRange parseRange:(NSRange)parseRange inView:(id)aView dictMode:(BOOL)mode dbMode:(BOOL)theDbMode tabTriggerMode:(BOOL)tabTriggerMode fuzzySearch:(BOOL)fuzzySearch backtickMode:(NSInteger)theBackTickMode withDbName:(NSString*)dbName withTableName:(NSString*)tableName - selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft + selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft autoComplete:(BOOL)autoComplete { if(self = [self init]) { @@ -145,6 +145,8 @@ if(aUserString) [mutablePrefix appendString:aUserString]; + autoCompletionMode = autoComplete; + fuzzyMode = fuzzySearch; if(fuzzyMode) [theTableView setBackgroundColor:[NSColor colorWithCalibratedRed:0.9f green:0.9f blue:0.9f alpha:1.0f]]; @@ -371,6 +373,7 @@ - (void)checkSpaceForAllowedCharacter { [textualInputCharacters removeCharactersInString:@" "]; + if(autoCompletionMode) return; if(spaceCounter < 1) for(id w in filtered){ if([[w objectForKey:@"match"] ?: [w objectForKey:@"display"] rangeOfString:@" "].length) { @@ -444,11 +447,16 @@ } if(![newFiltered count]) { - if([[self filterString] hasSuffix:@"."]) { - [theView doCompletionByUsingSpellChecker:dictMode fuzzyMode:fuzzyMode]; + if(autoCompletionMode) { closeMe = YES; + return; + } else { + if([[self filterString] hasSuffix:@"."]) { + [theView doCompletionByUsingSpellChecker:dictMode fuzzyMode:fuzzyMode autoCompleteMode:NO]; + closeMe = YES; + } + [newFiltered addObject:[NSDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"No completions found", @"no completions found message"), @"display", @"", @"noCompletion", nil]]; } - [newFiltered addObject:[NSDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"No completions found", @"no completions found message"), @"display", @"", @"noCompletion", nil]]; } NSPoint old = NSMakePoint([self frame].origin.x, [self frame].origin.y + [self frame].size.height); @@ -615,6 +623,7 @@ [NSApp sendEvent:event]; } } + [theView setCompletionIsOpen:NO]; [self close]; usleep(70); // tiny delay to suppress while continously pressing of ESC overlapping } @@ -665,6 +674,8 @@ // If completion string contains backticks move caret out of the backticks if(backtickMode && !triggerMode) [theView performSelector:@selector(moveRight:)]; + else if([[[filtered objectAtIndex:[theTableView selectedRow]] objectForKey:@"image"] hasPrefix:@"func"]) + [theView insertAsSnippet:@"(${1:})" atRange:[theView selectedRange]]; } - (void)completeAndInsertSnippet |