Commit Graph

80 Commits

Author SHA1 Message Date
Allan Odgaard
b6ba88cda5 Rework about window
We now perform the content hash (to see if release notes have changed) on a background thread.
2013-02-03 10:48:46 +01:00
Allan Odgaard
84587dccc9 mate: disable untitled document via user defaults
This is instead of setting an environment variable. Since there already is a user defaults setting for whether or not we want an untitled document created at startup, it seems nicer to have mate set that, instead of effectively introducing an alias for the setting.
2013-02-03 10:48:43 +01:00
Allan Odgaard
d5b3b07f32 Disable SCM status when app is inactive 2013-02-03 10:48:41 +01:00
Allan Odgaard
2bfe82fae4 Remove the AppStartup delegate
This temporary delegate was primarily used to ensure no message “slipped through” back when a license key was mandatory to run the alpha.
2013-02-03 10:48:40 +01:00
Allan Odgaard
32fcb52c68 Workaround for clang linker warning
Using instances with static storage in Objective-C files result in the following warning (starting with clang 425.0.24):

ld: warning: direct access in […] to global weak symbol […] means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
2013-02-02 08:52:12 +01:00
Allan Odgaard
45a126e5ff Improve page/tab support in about window
Selecting already selected page no longer reloads the HTML.

In addition to ⌘1-n for the n’th page, you can now also use ⌘{ and ⌘} to move between pages.
2013-02-02 08:50:35 +01:00
Allan Odgaard
6cbf3e5071 Use ns::create_event_string 2013-01-23 12:36:47 +01:00
Allan Odgaard
4b0a9a08c7 Change our main menu keyhandling ≠overload
We manually handle the Bundles menu (like before) and now use performActionForItemAtIndex: to make the menu flash (although presently only for the default items).

For the other menus we now call super and let that handle it. This means it might go into the Bundles menu, even though or menu delegate (for that menu) will say there are no key equivalents. This is only a problem for keys which do match items, but where all the items it matches are not supposed to fire.
2013-01-22 19:23:16 +01:00
Allan Odgaard
645f8d91e1 Let OS handle keys for Go to Tab submenu
My memory is a little vague here, but I believe the point of handling the menu keys was to workaround a bug in NSMenu.

The bug was that NSMenu would look at (the target of) cached menu items, probably for UI validation, so potentially sending methods to unretained objects, which could lead to a crash. Several workarounds were attempted (like clearing the target property after the menu had been displayed) but the only effective one was overloading key handling.

I’m quite sure though that this bug is no longer relevant.
2013-01-22 11:00:27 +01:00
Allan Odgaard
fae30ed6e8 Use wrapper for getpwuid() to avoid crash
Based on crash logs this problem still exists on 10.8.2 <rdar://10261043>.
2013-01-10 23:48:46 +01:00
Allan Odgaard
bccaee4be6 Simplify document open API
Removed the ability to specify wether documents should open in current window or a new window — all documents opened via this API will go through the same algorithm to find where the documents should end up (more choice is just adding confusion and complexity).
2013-01-10 06:46:44 +01:00
Allan Odgaard
d8cc115a5e Ensure we have a document in showWindow:
Also move (back) to using DocumentController instead of document::show().
2013-01-10 06:46:44 +01:00
Allan Odgaard
7b6515169f Remove unnecessary stuff
This includes the OakFilterWindow factory method as ‘new’ is just as good (now that ARC automatically autoreleases).
2013-01-10 06:46:44 +01:00
Allan Odgaard
211acb8a84 Use proper (specialized) type instead of ‘id’ 2013-01-10 06:46:43 +01:00
Allan Odgaard
531e8a44f1 Handle app termination in class method
It didn’t really make sense as an instance method since it iterate all instances, and we also want to execute code incase of no instances (save that fact as session data).
2013-01-10 06:46:43 +01:00
Allan Odgaard
a7a633f993 Remove procedural API for load/save of session
Since everything about session is now contained in the DocumentController class there is no need for invoking this from elsewhere and thus no need for the previous indirection.
2013-01-10 06:46:43 +01:00
Allan Odgaard
738456dbc7 Only let DocumentController schedule session saves 2013-01-10 06:40:03 +01:00
Allan Odgaard
8582b807a2 Improve support for percent escaped url parameters (txmt://)
Previously we would let NSURL parse the parameter and ask for the path component. This however does not support tilde as shorthand for the user’s home directory, and certainly not with TextMate 1.x’s questionable syntax (using ‘file://~/«file»’ instead of ‘file://localhost/~/«file»’ or possibly ‘file:///~/«file»’ although this one seems a little wrong).

As for percent escapes, the issue here is that if the URL parameter escapes slashes or colons, not decoding the URL parameter before creating an NSURL instance will fail (as the URL is malformed). If however we do decode percent escapes and the URL parameter contains spaces, then NSURL will also fail, as a URL with spaces is malformed.

So I ended up bypassing NSURL and check for a few variants of a ‘file://’ prefix (which is also what TextMate 1.x did).

This closes issue #602.
2013-01-09 00:28:17 +01:00
Allan Odgaard
2f2cce3f3e Add ‘uuid’ to txmt URL scheme
This can be used to link to the “current document” even if that document has no path. Previously this was done by leaving out the ‘url’ parameter, which made it target the frontmost document — using ‘uuid’ is a more robust way to achieve the same.

A command can read the TM_DOCUMENT_UUID environment variable for the current document’s identifier.
2013-01-08 22:48:08 +01:00
Allan Odgaard
d4f664d4c8 Use factory method for DocumentController objects
We regularly iterate through all open windows and test if these are document controller windows. It will be easier to let the document controller class (or application delegate) manage a list of open document windows, as we anyway need some sort of owner with ARC (currently the instances own themselves and give up ownership in windowWillClose: which cause them to be released).
2013-01-08 22:48:07 +01:00
Allan Odgaard
ecc25b38d4 Improve handling of session state
We now remember values like file browser history even if the file browser is not shown while saving session state (but has previously been, or state was provided during setup). We also use the file browser and HTML output sizes stored in the session info (previously we only used values from NSUserDefaults).
2013-01-03 05:47:42 +01:00
Allan Odgaard
47fa0f040c Use Objective-C literals for YES/NO 2013-01-02 01:46:48 +01:00
Allan Odgaard
8bcf126aba Minor refactoring 2013-01-02 01:46:47 +01:00
Allan Odgaard
75be06e850 Offer double-click install of plug-ins
If the plug-in doesn’t set TMPlugInAPIVersion to 2 (in its Info.plist) a dialog will show, telling the user that the plug-in is not compatible with the current version of TextMate (which is most likely correct).

You can hold down option (⌥) to open the plug-in as a regular folder.

Addresses issue #392.
2012-12-30 03:40:54 +01:00
Allan Odgaard
6a79b5f432 Add preliminary bundle install support 2012-12-30 03:40:54 +01:00
Allan Odgaard
2024af398d Rework loading of plug-ins
We no longer require that the bundle identifier starts with ‘com.macromates’ instead the plug-in MUST set the TMPlugInAPIVersion key (in its Info.plist) to ‘2’ (the current API version).
2012-12-30 03:40:29 +01:00
Allan Odgaard
2a3b442bf2 ARC: Update TextMate (core application) 2012-12-28 02:47:19 +01:00
Allan Odgaard
1988240518 Remove old credits window 2012-12-25 01:11:54 +01:00
Allan Odgaard
05357539d0 fixup! Rename method: scope → scopeContext
Missed one case causing “Current Scope” in bundle item chooser to not have any effect.
2012-12-19 19:42:34 +01:00
Allan Odgaard
92c77ece36 Change long → int32_t for 68K struct
When building as 64 bit the ‘long’ type is 8 bytes which broke the “jump to selection” part of the ODBEditor protocol support (issue #499).
2012-12-16 21:27:06 +01:00
Robert Hencke
1ebe9d9373 Fix typo in comment (NSMneu → NSMenu) 2012-10-24 20:48:59 +07:00
Allan Odgaard
e1b3f71a69 Let about window show license (if any)
There is currently no way to add a TextMate (1.x) license to the key chain, but those who used TextMate r9147 or earlier should have one stored already.
2012-09-30 23:06:57 +02:00
Allan Odgaard
e97efb3f67 Use dispatch queues for signal actions 2012-09-30 15:25:44 +02:00
Allan Odgaard
456374342a Remove use of openssl constants 2012-09-30 15:25:44 +02:00
Allan Odgaard
ffbcd192ef Fix ⌘1-⌘n for about window
We have to go via OakSubmenuController because the menu item may not exist. The reason for this is related to not having old menu items exist after a delegate has disappeared, though it might be possible to improve.
2012-09-29 00:46:26 +02:00
Allan Odgaard
7af2a71de0 Conditionally show release notes during startup 2012-09-29 00:39:14 +02:00
Allan Odgaard
fcfec66214 Hookup About TextMate to about window 2012-09-29 00:39:14 +02:00
Rasmus Abrahamsen
eb248eb579 Combine about, changes, and credits window
This includes bundle changes.
2012-09-29 00:39:14 +02:00
Allan Odgaard
a29479bca7 Remove Credits / License menu item 2012-09-29 00:21:53 +02:00
Allan Odgaard
a0c4af64bd Remove trailing whitespace
Only removed from non-empty lines.
2012-09-25 14:16:50 +02:00
Allan Odgaard
983bce86aa Use @autoreleasepool blocks 2012-09-25 12:30:12 +02:00
Allan Odgaard
b5c8e3e247 Recent menu ignores files opened via mate
You can still create an alias for ‘mate’ that calls ‘mate --recent’.

The motivation for this change is that stuff you open via mate is generally SCM commit messages, the cron tab, included files (opened from within TextMate via bundle commands), and other such things. Additionally I think that if you open files via ‘mate’ you would just repeat the line in your shell, though I know not all users feel this way.

Folders opened via mate does go into the recent menu.
2012-09-21 16:23:35 +02:00
Allan Odgaard
8fd7b82cbd Remove CocoaSTL.h include 2012-09-20 12:22:20 +02:00
Allan Odgaard
848d197f7a Use DocumentController over document_t 2012-09-18 17:33:01 +02:00
Allan Odgaard
c26e5c2d36 Scope attributes are now given to editor_t
While presently it works the same, it allows us to provide better scope attributes e.g. for untitled documents (which lack SCM attributes).
2012-09-18 17:33:01 +02:00
Allan Odgaard
b49e35ab6a Harmonize “perform bundle item” method naming
We now have:

 - performBundleItem:
 - performBundleItemWithUUIDString:
 - performBundleItemWithUUIDStringFrom:

I’m leaning toward changing the prefix, as ‘perform’ is mainly action methods invoked as a direct response to some user action (with that action part of the name), but haven’t found a better prefix yet.
2012-09-10 22:47:58 +02:00
Allan Odgaard
b2acb02a7f Use std::function with cf::callback_t 2012-09-09 16:22:19 +02:00
Allan Odgaard
8f5ddc672f Move bundles pop-up menu to BundleMenu library 2012-09-06 23:10:56 +02:00
Allan Odgaard
cf5e9f1530 Leave autoenablesItems at its default value 2012-09-06 23:10:56 +02:00
Allan Odgaard
f57d35362e Rename method: scope → scopeContext
This is to avoid a clash as there is also another method called scope (WebKit / DOM).
2012-09-06 23:10:56 +02:00