Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
994 commits
Select commit Hold shift + click to select a range
e38dc44
Rewrite SoftwareUpdate singleton
sorbits May 24, 2020
fda314e
Move OakDownloadManager to SoftwareUpdate framework
sorbits May 24, 2020
a3cd283
Move OakCompareVersionStrings function to SoftwareUpdate framework
sorbits May 24, 2020
7369f78
Improve log message for a failed download
sorbits May 24, 2020
74e0349
Do not pass NSNull objects to OakSetupKeyViewLoop for non-existing views
sorbits May 25, 2020
3818da6
Remove support for NSNull in OakSetupKeyViewLoop
sorbits May 25, 2020
58d1cce
Do not rely on OakSetupKeyViewLoop to set initial first responder
sorbits May 25, 2020
d500f6e
Remove support for initial first responder in OakSetupKeyViewLoop
sorbits May 25, 2020
344ed58
Don’t set autorecalculatesKeyViewLoop to NO (as it is the default value)
sorbits May 25, 2020
df3b4bb
Don’t call OakSetupKeyViewLoop with just a single view
sorbits May 25, 2020
70ad04d
Improve check for setting first responder for bundles preferences
sorbits May 25, 2020
6aef0f0
Do not recalculate key view loop in OakTransitionViewController
sorbits May 25, 2020
670f5ba
Let preferences window recalculate key view loop and set first responder
sorbits May 25, 2020
e5dee67
Improve how we update key view loop in transition view controller
sorbits May 25, 2020
c41804c
Let ninja run tests in the console pool
sorbits May 30, 2020
b663d0b
Support passing arguments to ragel via RAGEL_FLAGS
sorbits May 30, 2020
a36bc31
Usage text for the process_plist script was using a wrong program name
sorbits May 30, 2020
9095325
Tweak layout constraints of footer in Select Bundle Item window
sorbits May 30, 2020
eaad76f
Minor tweak of log message
sorbits May 30, 2020
b1e41a7
Abort iterating over parent URLs if the path string grows in length
sorbits May 30, 2020
4f8a3e3
Use longest suffix match when more than one build rule can build a file
sorbits Jun 1, 2020
b96bfad
Files with .mm.rl extension are now built as Objective-C++
sorbits Jun 1, 2020
f700b8d
Remove API to set skip offset when performing a search
sorbits Jun 1, 2020
18d2fd6
Add simpler (low-level) API for performing a search
sorbits Jun 1, 2020
1807339
Use new find_t::each_match in document search
sorbits Jun 1, 2020
906aea3
Use new find_t::each_match in folder search
sorbits Jun 1, 2020
a69d4ac
Update find tests to use find_t::each_match
sorbits Jun 1, 2020
3125146
Remove find_t::match API
sorbits Jun 1, 2020
3d721f9
Use ‘valueForKey:’ to get ‘path’ from items in didSelectFavorite:
sorbits Jun 3, 2020
70988c6
Use a custom class for favorite items (instead of NSDictionary)
sorbits Jun 3, 2020
4ec10c0
Don’t annotate types and classes with PUBLIC
sorbits Jun 5, 2020
f000204
Remove PUBLIC macro
sorbits Jun 5, 2020
5246f16
Call os_log_error if AESendMessage fails
sorbits Jun 5, 2020
c93030b
Remove all debug output from custom log macros
sorbits Jun 5, 2020
bfd1bcf
Remove ‘to_s’ functions previously used by log statements
sorbits Jun 5, 2020
44fbea7
Avoid using BSTR macro in OakDocument.mm
sorbits Jun 5, 2020
95655fb
Move BSTR macro to crash/info.h
sorbits Jun 5, 2020
b63441b
Remove commented debug statements
sorbits Jun 5, 2020
e80ef1d
Remove use of OBJC_WATCH_LEAKS
sorbits Jun 5, 2020
066acad
Remove use of WATCH_LEAKS (C++)
sorbits Jun 5, 2020
e141a97
Remove include of <oak/debug/OakDebugLog.h>
sorbits Jun 5, 2020
b2ace31
Remove comment about _GLIBCXX_DEBUG
sorbits Jun 5, 2020
249f365
Remove majority of code from OakDebug framework
sorbits Jun 5, 2020
da04968
Change target file for OakDebug to not link as a bundle
sorbits Jun 5, 2020
75a08d1
Use os_log_error when assertions fail
sorbits Jun 7, 2020
f1a1e19
Handle file browser shortcuts in performKeyEquivalent:
sorbits Jun 9, 2020
f979462
Let file browser call copyAsPathname: when seeing ⌥⌘C
sorbits Jun 9, 2020
b0228b9
Remove redundant target setting from file browser context menu
sorbits Jun 9, 2020
6e35cb9
Only update file browser menu item titles when it is the explicit target
sorbits Jun 9, 2020
0f219ba
Set (visible) key equivalents for file browser context menu
sorbits Jun 9, 2020
fbc78d3
Remove initialization of libcurl
sorbits Jun 9, 2020
621e275
Begin-of-line zero-width search results would not show any content
sorbits Jun 9, 2020
a116254
Add “Create Link to Items” file browser context menu action
sorbits Jun 9, 2020
4e4d8ff
File browser’s field editor (rename) would stay after pressing return
sorbits Jun 12, 2020
b3afd94
Copying search results are again stored on clipboard as a single string
sorbits Jun 16, 2020
a25d240
NewApplication template: Change perform{FindPanel → TextFinder}Action:
sorbits Jun 16, 2020
7baf2b1
Improve how we add styles when syntax highlighting find/replace strings
sorbits Jun 18, 2020
3cf526f
Do not make software update fixtures in ./configure file
sorbits Sep 18, 2020
746b9ab
Do not declare a few ‘auto’ loop variables as also being ‘const’
sorbits Sep 27, 2020
0967e31
Send ‘length’ to attributed string instead of via string property
sorbits Sep 27, 2020
cb5d81d
Remove commented debug output lines
sorbits Sep 27, 2020
127f05f
Use os_log_error instead of custom debug output macro
sorbits Sep 27, 2020
0f4a857
Leave out kCTUnderlinePatternSolid because of warning mixing enums
sorbits Sep 27, 2020
e4e5444
Selections from regexp searches would be “anchored”
sorbits Sep 27, 2020
b5293ad
Use Security framework to decode license keys (instead of libressl)
sorbits Dec 28, 2020
e06109a
Remove dependency on libressl
sorbits Dec 28, 2020
ea09ac0
Add "Close Tabs to the Left" as alternate of "Close Tabs to the Right"
belkadan Jul 29, 2020
a52383a
Set the frame size via NSTitlebarAccessoryViewController's view property
Dec 12, 2020
2c528c3
Do not use ‘new metadata only’ option with replaceItemAtURL:…
sorbits Dec 29, 2020
f032db7
Set lineBreakMode for text fields in OakChooser windows
sorbits Dec 29, 2020
53897ce
Improve “estimated time remaining” code for software update
sorbits Jan 11, 2021
937b6e0
Use single quotes when using ‘notarize_pass’ and ‘notarize_user’
sorbits Jan 11, 2021
418de67
Update dialog plug-ins (class property dot notation)
sorbits Jan 11, 2021
4e922dd
Disable transformations with unchanged paths for assets in build dir
sorbits Jan 12, 2021
2c6a825
Fix usage summary for process_plist
sorbits Jan 12, 2021
ae9bdf5
Rename process_plist as it makes no assumption about input format
sorbits Jan 12, 2021
05ab01e
Add build rule that expands variables in InfoPlist.vstrings files
sorbits Jan 12, 2021
b24eea8
Introduce ${YEAR} variable in our InfoPlist.strings
sorbits Jan 12, 2021
8ed4b43
Remove “Add License” button from window chrome
sorbits Jan 12, 2021
bcd44a8
Ensure we are running on the main thread when updating property
sorbits Jan 13, 2021
bc66231
Remove stuff about libressl from README
sorbits Jan 13, 2021
c0a2115
Remove mercurial build dependency
sorbits Jan 13, 2021
eb59a21
Do not set NSWindowStyleMaskFullSizeContentView for clipboard history
sorbits Jan 15, 2021
4468362
Add leading/trailing padding for the save dialog’s encoding options
sorbits Jan 15, 2021
a7406b8
Use tertiary label color for shortcuts and tab triggers on macOS 10.16
sorbits Jan 15, 2021
c90a9bb
Prevent UTTypeConformsTo self-reference
infininight Jan 16, 2021
4606fde
Create default bundles archive in ninja file and store in build dir
sorbits Jan 16, 2021
6b6ff32
Avoid compiler warning by typecasting anonymous enum
sorbits Jan 17, 2021
a55e557
build: Catch exception raised when failing to delete old target
sorbits Jan 17, 2021
a8a84d3
build: Add “generator” name to output path when extension is unchanged
sorbits Jan 17, 2021
22918c5
build: Do not disable filters after first “generator”
sorbits Jan 17, 2021
918c4f3
Make bin/expand_variables work with UTF-8/16BE/16LE
sorbits Jan 17, 2021
978c5a3
build: Expand variables in InfoPlist.strings files
sorbits Jan 17, 2021
6d188e4
build: Bump file date after copying file to build directory
sorbits Jan 17, 2021
bbb16f5
Update dialog plug-ins (NSHumanReadableCopyright in InfoPlist.strings)
sorbits Jan 17, 2021
b42bbfc
Organize the sdk-compat.h file
sorbits Jan 17, 2021
88481bd
Add NSWindow’s new toolbarStyle property to sdk-compat.h
sorbits Jan 17, 2021
5168278
Set Preferences window toolbar style to NSWindowToolbarStylePreference
rdwampler Jan 16, 2021
bf19be7
fixup! Rename process_plist as it makes no assumption about input format
sorbits Jan 22, 2021
a482cd7
Add -o,--output option to bin/expand_variables
sorbits Jan 22, 2021
5d77c2a
Call expand_variables with -o instead of redirecting stdout
sorbits Jan 22, 2021
edec8f1
Merge Info.plist and InfoPlist.strings variable expansion build rules
sorbits Jan 22, 2021
8e6c60d
build: Remove Info.plist files from frameworks
sorbits Jan 24, 2021
ba1c99f
build: Introduce CP_InfoPlist and move Info.plist files out of resources
sorbits Jan 24, 2021
03f8939
Remove DefaultBundles.tbz from git ignore file
sorbits Jan 28, 2021
0e27430
Remove “GetoptLong” usage comment in ruby scripts
sorbits Jan 28, 2021
4d1aa7c
Define missing BSTR macro in test source
sorbits Jan 29, 2021
fa2077b
Remove non-matching tests/resources definitions from build files
sorbits Jan 30, 2021
9393ef6
The encoding pop-up button could create an NSMenuItem with nil as title
sorbits Jan 30, 2021
a02b95c
Use public modifier when logging exception name/reason
sorbits Jan 30, 2021
4972c10
Use ${YEAR} variable in NewApplication template’s InfoPlist.strings
sorbits Jan 30, 2021
7e69f5b
Fix compiler warnings by initializing struct members in correct order
sorbits Feb 4, 2021
5a9fc8d
Only use atomic save for remote volumes (by default)
sorbits Feb 4, 2021
f74aa3f
Fix truncated text in tool tips using Dark Mode on macOS 10.15
sorbits Feb 4, 2021
b9abd14
Checkin release notes for 2.0.16
sorbits Feb 4, 2021
1477e0f
Checkin release notes for 2.0.17
sorbits Feb 5, 2021
c6a92b2
Revert "Fix truncated text in tool tips using Dark Mode on macOS 10.15"
sorbits Feb 7, 2021
8d63cfb
Create bundle editor window in code
sorbits Feb 8, 2021
0695ec5
Rename property from indent to labelWidth
sorbits Feb 9, 2021
a3a6b2a
No longer use drawer for properties in bundle editor
sorbits Feb 9, 2021
5f5e8e1
Checkin release notes for v2.0.18
sorbits Feb 9, 2021
e11848b
Add syntax highlighting to readme
ZevEisenberg Jan 6, 2021
e921af4
Add new build system
sorbits Jan 25, 2021
f7d765b
Add build files (for new build system)
sorbits Feb 9, 2021
5acdb25
Update release notes script to no longer take new version as argument
sorbits Feb 9, 2021
94d3b9b
Remove old build files
sorbits Feb 9, 2021
7f9d5b3
Update git ignore
sorbits Feb 9, 2021
c185360
Update .tm_properties to reflect new build system
sorbits Feb 9, 2021
877a0c7
Update URLs in README.md
sorbits Feb 9, 2021
fa6256a
Update README.md with info about new build procedure
sorbits Feb 9, 2021
128d7dd
Update ./configure to use new build system
sorbits Feb 9, 2021
8fa217c
Update CI for new build system
sorbits Feb 9, 2021
bdef5e9
Remove ninja.deploy as this is no longer useful
sorbits Feb 9, 2021
83d6365
Add script to extract single section from release notes
sorbits Feb 10, 2021
956d98d
Abort after 5 seconds of ‘mate’ failing to connect to TextMate’s socket
sorbits Feb 11, 2021
b612521
Show error dialog incase socket() fails
sorbits Feb 11, 2021
c47ea0c
Increase maximum number of open files if the current limit is below 2048
sorbits Feb 11, 2021
2a3cfeb
Add release/deploy build rules to version control but disable by default
sorbits Feb 15, 2021
70d2671
Let bin/gen_build call ./configure to switch to new build file generator
sorbits Feb 15, 2021
2bdf90c
Limit tab size settings (for Onigmo submodule) to C files
sorbits Feb 15, 2021
3c2d590
Update GitHub build action to use macOS-latest and checkout@v2
sorbits Feb 16, 2021
755e5cc
Prevent tar from adding padding to the release archive
sorbits Feb 18, 2021
4d7eeeb
Ensure ⌘Z / ⇧⌘Z are not sent to file browser when it does not have focus
sorbits Feb 25, 2021
dbe6768
Checkin release notes for v2.0.19
sorbits Feb 25, 2021
9876e56
Do not strip comments (markdown headers) from git tag message
sorbits Feb 28, 2021
3d4c042
Extract changes (for tag message) into file instead of using a pipe
sorbits Feb 28, 2021
d71d049
Use extracted changes for GitHub release
sorbits Feb 28, 2021
9075087
Rave: Slightly more generalized handling of Cap’n Proto headers
sorbits Mar 3, 2021
7e9426c
Rave: Treat all values with a ‘${dir}/’ or ‘${HOME}/’ prefix as files
sorbits Mar 3, 2021
d769cee
Rave: Make variable match regexp a global constant
sorbits Mar 4, 2021
5784028
Rave: Defines can now reference defines declared later in the file
sorbits Mar 4, 2021
be513fc
Rave: Support notarizing single executables
sorbits Mar 5, 2021
337fd7c
Update dialog plug-in (log all calls to Dialog 1.x)
sorbits Mar 6, 2021
4d429c6
Update dialog plug-in (ability to run modal dialogs via Dialog 2.x)
sorbits Mar 6, 2021
52d5239
Change HTML output window back from NSPanel to NSWindow
sorbits Mar 7, 2021
b5c7170
Implement cancelOperation: for HTML output window (close via escape key)
sorbits Mar 7, 2021
651db91
Update resizing mask for bundle editor nibs
sorbits Mar 7, 2021
36e1d85
Rave: Fix issue with generated headers and universal builds
sorbits Mar 7, 2021
9a416e5
Ensure we do not mutate array while performing fast enumeration
sorbits Mar 7, 2021
f043952
Use “pane splitter divider” between bundle editor text view and browser
sorbits Mar 7, 2021
ae34471
Set default split view position after restoring window frame size
sorbits Mar 7, 2021
fed09bd
Add bundle editor views directly to the properties container view
sorbits Mar 7, 2021
8496e62
Use split view in bundle editor between properties and editor
sorbits Mar 7, 2021
eb2c26a
Collapse the browser in the bundle editor when its height gets below 50
sorbits Mar 7, 2021
20e3444
Clip NSBrowser border in bundle editor on macOS 10.15 and earlier
sorbits Mar 7, 2021
b2b4d12
Add some left padding to icons in bundle editor
sorbits Mar 7, 2021
df8ae27
Checkin release notes for v2.0.20
sorbits Mar 7, 2021
3a460d9
Set about window’s toolbar style to “preference” (macOS 11.0)
sorbits Mar 8, 2021
3453bdd
Ensure ⌘⌫ / [⌥]⌘V are not sent to file browser with focused text view
sorbits Mar 8, 2021
34d2e44
Strip ‘##’-prefix from release title used with GitHub
sorbits Mar 8, 2021
f533019
Better property names for Open With application info
sorbits Mar 8, 2021
4324aaf
Rework API for the Open With submenu
sorbits Mar 8, 2021
dfff5d2
The Open With submenu item is a shortcut for opening with default app
sorbits Mar 8, 2021
0259671
Checkin release notes for v2.0.21
sorbits Mar 8, 2021
8adf0b3
Rave: Link rules are now dependent on files referenced in LN_FLAGS
sorbits Mar 16, 2021
9dad220
Include ‘attr.project.rave’ in scope when project has a ‘default.rave’
sorbits Mar 16, 2021
33f07d7
Remove OakDebug.tmbundle
sorbits Mar 16, 2021
c723a9f
Fix dependency: OakTextView needs to link with Find framework
sorbits Mar 16, 2021
2b960ea
Rave: Fix typo in variable name
sorbits Mar 17, 2021
2624e59
Rave: Simplify code
sorbits Mar 17, 2021
a24b052
OakTabBarViewController: No implicit animation when re-ordering tabs
sorbits Mar 22, 2021
2b7a302
Remove OakBackgroundFillView’s support for NSImage
sorbits Mar 25, 2021
7f9fe4c
Change NSCompositingOperationSourceOver to NSCompositingOperationCopy
sorbits Mar 25, 2021
3c611f0
Autohide scrollbar in file browser
sorbits Mar 25, 2021
dc60a74
Include ServiceManagement among precompiled headers
sorbits Mar 25, 2021
89b7ca9
Remove unnecessary includes
sorbits Mar 27, 2021
64c5dd1
Avoid using NSEvent support code from the ns frameworks
sorbits Mar 27, 2021
4ba567f
Rename AppKit/OakSubmenuController → MenuBuilder/MBMenuDelegate
sorbits Mar 27, 2021
d4bb029
Rave: More robust relaunch of the application built
sorbits Mar 27, 2021
9562e46
Let the “update menu” selector of MBMenuDelegate be a parameter
sorbits Mar 27, 2021
659254d
Rave: Add ability to expand variables in files used as build arguments
sorbits Mar 28, 2021
f3751f2
Set com.apple.security.get-task-allow to true for debug builds
sorbits Mar 28, 2021
a55a0d1
Use segmented control in about window
sorbits Mar 29, 2021
6361705
Use macOS 11.0 instead of 10.16 in availability check
sorbits Mar 29, 2021
73aa268
Increase padding in front of pop-ups in text view status bar
sorbits Mar 29, 2021
88ca589
Increase padding for file browser’s top folder pop-up
sorbits Mar 29, 2021
26a56c6
Update some links in About window to use https
sorbits Mar 29, 2021
488d971
Add ability to stop find_t::each_match from going through all matches
sorbits Apr 16, 2021
b027886
Use std::nullopt instead of std::optional<std::string>()
sorbits Apr 16, 2021
8b81766
Use NSTableViewStylePlain for the snippet completion menu (macOS 11)
sorbits Apr 16, 2021
a8601fd
Use NSTableViewStylePlain for file browser and search results
sorbits Apr 16, 2021
c7dd98e
Disable floating group rows in file browser + search results (macOS 11)
sorbits Apr 16, 2021
a172522
Update dialog plug-in (use NSTableViewStylePlain on macOS 11)
sorbits Apr 16, 2021
2b3427b
Checkin release notes for v2.0.22
sorbits Apr 16, 2021
083297d
Remove unnecessary include
sorbits Apr 16, 2021
a252e3b
Do not rely on ‘parentItem’ NSMenu category extension
sorbits Apr 16, 2021
0fd87c1
Remove ‘parentItem’ NSMenu category extension
sorbits Apr 16, 2021
6d4b0ec
Default value for file browser’s “keep folders on top” now match Finder
sorbits Apr 16, 2021
05e4127
Create NSProgress object without implicitly adding as child of current
sorbits Apr 23, 2021
984f59b
Use enumeration for OakPerformTableViewAction… return values
sorbits Apr 23, 2021
46469b7
Use getter syntax for property declaration
sorbits Apr 23, 2021
1f68037
Move commit window shell command (helper) to the CommitWindow framework
sorbits Apr 25, 2021
965028a
Ensure closed sqlite3 connections are never reused
sorbits Apr 28, 2021
bdd8942
Find dialog’s “where” pop-up would not allow selecting leaf folders
sorbits May 2, 2021
866ae0f
Add TMFileReference framework
sorbits May 10, 2021
b3a4d57
Remove colorWithString: NSColor category extension
sorbits May 10, 2021
9bc2eb5
Remove tmDarkDividerColor NSColor category extension
sorbits May 10, 2021
3de3642
Make sure we set image size to 16×16 when using with NSMenuItem
sorbits May 10, 2021
7df99c2
Remove unnecessary use of “unique” group names
sorbits May 10, 2021
b838e4b
Show kUnknownFSObjectIcon for untitled documents in tab overflow menu
sorbits May 10, 2021
4290cdc
Use property (dot) syntax when setting a few menu item properties
sorbits May 10, 2021
fd742dc
Change naming convention for observer context constants
sorbits May 10, 2021
cbee7d8
Add function to switch between non/emphasized matched text colors
sorbits May 10, 2021
2e8becc
Let file browser’s SCMManager update status of TMFileReference objects
sorbits May 10, 2021
c7a7878
Use TMFileReference for file icons in bundle item chooser
sorbits May 10, 2021
33f006e
Use custom code over setIconForFile: NSMenuItem custom category method
sorbits May 10, 2021
f609a46
Use TMFileReference for a few icons in file browser
sorbits May 10, 2021
a5c6fe9
Ensure low content hugging priority for text field used in table view
sorbits May 10, 2021
5b0437d
Tweak implementation of FileItem’s localizedName
sorbits May 10, 2021
00b1032
Let OakDocument update TMFileReference’s modified/closable state
sorbits May 10, 2021
b1e88c3
Add icon property to TMFileReference
sorbits May 10, 2021
5867cf2
Use TMFileReference for icon and close button in file browser table view
sorbits May 10, 2021
5d10c1f
Do not update file browser’s openURLs and modifiedURLs properties
sorbits May 10, 2021
fd9d4f0
Remove openURLs and modifiedURLs properties from file browser
sorbits May 10, 2021
62c271c
Assign icon to *.rave files
sorbits May 10, 2021
fb8da46
Remove open/isOpen property from FileItem
sorbits May 10, 2021
5d87b8e
Move HTML/CSS/JS shown in about window to subfolder
sorbits May 17, 2021
2f09c45
Move embedded executables from Resources to MacOS directory
sorbits May 19, 2021
97caab6
Remove deployment target from all xib files
sorbits May 26, 2021
cb195b2
Don’t pass --minimum-deployment-target to ibtool in default build config
sorbits May 26, 2021
f89c042
Remove CAPNP_BIN and assert that capnp can be found via PATH
sorbits May 26, 2021
3826398
Assert that capnp includes/library can be found via default paths
sorbits May 26, 2021
a8f17b7
Setup “my” local.rave to find dependencies via my nix-profile
sorbits May 26, 2021
19c2271
Update ./configure script to write rudimentary ‘local.rave’ file
sorbits May 26, 2021
1af594a
Allow creating TMFileReference from an image instead of URL
sorbits Oct 12, 2021
ea73cc7
Change default size of image returned by TMFileReference: 48×48 → 16×16
sorbits Oct 12, 2021
ef89550
Bind file browser’s location icon to the image of a TMFileReference
sorbits Oct 12, 2021
346b52b
Remove image, modified, and SCMStatus properties from FileItem
sorbits Oct 12, 2021
c36ea5e
Add CLAUDE.md with project analysis and development guide
claude Mar 11, 2026
0caa2ec
Add LSP support research document
claude Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 18 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: CI

on: [push]

jobs:
build:
runs-on: macOS-latest

steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup
run: brew install boost capnp google-sparsehash multimarkdown ninja ragel
- name: Configure
run: ./configure
- name: Build
run: ninja TextMate
6 changes: 1 addition & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
build
build.ninja
cache
Applications/TextMate/resources/DefaultBundles.tbz
local.rave
Frameworks/license/src/revoked_serials.cc
*.capnp.c++
*.capnp.h
9 changes: 0 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
[submodule "bin/CxxTest"]
path = bin/CxxTest
url = https://github.com/textmate/cxxtest.git
[submodule "vendor/MASPreferences/vendor"]
path = vendor/MASPreferences/vendor
url = https://github.com/textmate/MASPreferences.git
[submodule "vendor/MGScopeBar/vendor"]
path = vendor/MGScopeBar/vendor
url = https://github.com/textmate/MGScopeBar.git
[submodule "Applications/TextMate/icons"]
path = Applications/TextMate/icons
url = https://github.com/textmate/document-icons.git
Expand All @@ -16,9 +10,6 @@
[submodule "PlugIns/dialog"]
path = PlugIns/dialog
url = https://github.com/textmate/dialog.git
[submodule "vendor/XcodeEditor/vendor"]
path = vendor/XcodeEditor/vendor
url = https://github.com/textmate/xcode-editor.git
[submodule "vendor/Onigmo/vendor"]
path = vendor/Onigmo/vendor
url = https://github.com/textmate/Onigmo.git
Expand Down
11 changes: 5 additions & 6 deletions .tm_properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ excludeDirectoriesInFolderSearch = '{bin/CxxTest,build,SyntaxMate.tmBundle}'
TM_ORGANIZATION_NAME = 'MacroMates'

TM_TODO_IGNORE = '/(build|CxxTest|PlugIns|vendor)/|\.(md|html)$'

TM_CXX_FLAGS = '$TM_CXX_FLAGS -I"$CWD/Shared/include" -I"${builddir:-$HOME/build/TextMate}/include"'
TM_OBJCXX_FLAGS = '$TM_OBJCXX_FLAGS -I"$CWD/Shared/include" -I"${builddir:-$HOME/build/TextMate}/include"'
TM_BUILD_DIR = '${builddir:-$HOME/build/${CWD/.*\///}}'
TM_FRAMEWORKS = 'authorization buffer BundleEditor BundleEditor BundleMenu bundles BundlesManager cf command CommitWindow crash CrashReporter document DocumentWindow editor encoding file FileBrowser Find HTMLOutput HTMLOutputWindow io layout license MenuBuilder network ns OakAppKit OakCommand OakDebug OakFilterList OakFoundation OakSystem OakTabBarView OakTextView parse plist Preferences regexp scm scope selection settings SoftwareUpdate text theme undo updater version'
TM_FRAMEWORK_INCLUDE = '${TM_FRAMEWORKS/\w+/-I"${TM_BUILD_DIR}\/release\/_Include\/$0\/include"/g}'
TM_CXX_FLAGS = '$TM_CXX_FLAGS -I"$CWD/Shared/include" ${TM_FRAMEWORK_INCLUDE}'
TM_OBJCXX_FLAGS = '$TM_OBJCXX_FLAGS -I"$CWD/Shared/include" ${TM_FRAMEWORK_INCLUDE}'

TM_NINJA_FILE = '${CWD}/build.ninja'
TM_NINJA_TARGET = 'TextMate/run'
Expand All @@ -24,9 +26,6 @@ tabSize = 3
softTabs = false
TM_C_POINTER = "* "

[ {*.,}target ]
fileType = 'source.tm-properties'

[ *.h ]
fileType = 'source.objc++'

Expand Down
12 changes: 12 additions & 0 deletions Applications/NewApplication/default.rave
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
target "${dirname}" {
require OakFoundation OakAppKit MenuBuilder

prefix "${target}.app/Contents"

files Info.plist "."
files resources/* "Resources"

sources src/*.{cc,mm}
executable "MacOS/${target}"
frameworks Cocoa
}
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/* Localized versions of Info.plist keys */

NSHumanReadableCopyright = "© MacroMates Ltd., ${YEAR}";
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1050" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
</dependencies>
<objects>
Expand Down
44 changes: 19 additions & 25 deletions Applications/NewApplication/src/AppDelegate.mm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#import "AppDelegate.h"
#import "WindowController.h"
#import <MenuBuilder/MenuBuilder.h>

@interface AppDelegate () <NSApplicationDelegate, NSWindowDelegate>
Expand Down Expand Up @@ -58,11 +59,11 @@ - (void)applicationWillFinishLaunching:(NSNotification*)aNotification
{ /* -------- */ },
{ @"Find",
.submenu = {
{ @"Find…", @selector(performFindPanelAction:), @"f", .tag = 1 },
{ @"Find and Replace…", @selector(performFindPanelAction:), @"f", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagOption, .tag = 12 },
{ @"Find Next", @selector(performFindPanelAction:), @"g", .tag = 2 },
{ @"Find Previous", @selector(performFindPanelAction:), @"G", .tag = 3 },
{ @"Use Selection for Find", @selector(performFindPanelAction:), @"e", .tag = 7 },
{ @"Find…", @selector(performTextFinderAction:), @"f", .tag = NSTextFinderActionShowFindInterface },
{ @"Find and Replace…", @selector(performTextFinderAction:), @"f", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagOption, .tag = NSTextFinderActionShowReplaceInterface },
{ @"Find Next", @selector(performTextFinderAction:), @"g", .tag = NSTextFinderActionNextMatch },
{ @"Find Previous", @selector(performTextFinderAction:), @"G", .tag = NSTextFinderActionPreviousMatch },
{ @"Use Selection for Find", @selector(performTextFinderAction:), @"e", .tag = NSTextFinderActionSetSearchString },
{ @"Jump to Selection", @selector(centerSelectionInVisibleArea:), @"j" },
}
},
Expand Down Expand Up @@ -107,13 +108,13 @@ - (void)applicationWillFinishLaunching:(NSNotification*)aNotification
.submenu = {
{ @"Font",
.systemMenu = MBMenuTypeFont, .submenu = {
{ @"Show Fonts", @selector(orderFrontFontPanel:), @"t", .target = NSFontManager.sharedFontManager },
{ @"Bold", @selector(addFontTrait:), @"b", .target = NSFontManager.sharedFontManager, .tag = 2 },
{ @"Italic", @selector(addFontTrait:), @"i", .target = NSFontManager.sharedFontManager, .tag = 1 },
{ @"Show Fonts", @selector(orderFrontFontPanel:), @"t", .target = NSFontManager.sharedFontManager },
{ @"Bold", @selector(addFontTrait:), @"b", .tag = NSBoldFontMask , .target = NSFontManager.sharedFontManager },
{ @"Italic", @selector(addFontTrait:), @"i", .tag = NSItalicFontMask , .target = NSFontManager.sharedFontManager },
{ @"Underline", @selector(underline:), @"u" },
{ /* -------- */ },
{ @"Bigger", @selector(modifyFont:), @"+", .target = NSFontManager.sharedFontManager, .tag = 3 },
{ @"Smaller", @selector(modifyFont:), @"-", .target = NSFontManager.sharedFontManager, .tag = 4 },
{ @"Bigger", @selector(modifyFont:), @"+", .tag = NSSizeUpFontAction, .target = NSFontManager.sharedFontManager },
{ @"Smaller", @selector(modifyFont:), @"-", .tag = NSSizeDownFontAction, .target = NSFontManager.sharedFontManager },
{ /* -------- */ },
{ @"Kern",
.submenu = {
Expand Down Expand Up @@ -176,11 +177,13 @@ - (void)applicationWillFinishLaunching:(NSNotification*)aNotification
},
{ @"View",
.submenu = {
{ @"Show Toolbar", @selector(toggleToolbarShown:), @"t", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagOption },
{ @"Customize Toolbar…", @selector(runToolbarCustomizationPalette:) },
{ @"Show Toolbar", @selector(toggleToolbarShown:), @"t", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagOption },
{ @"Customize Toolbar…", @selector(runToolbarCustomizationPalette:) },
{ /* -------- */ },
{ @"Show Sidebar", @selector(toggleSourceList:), @"s", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagControl },
{ @"Enter Full Screen", @selector(toggleFullScreen:), @"f", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagControl },
{ @"Show Sidebar", @selector(toggleSourceList:), @"s", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagControl },
{ @"Enter Full Screen", @selector(toggleFullScreen:), @"f", .modifierFlags = NSEventModifierFlagCommand|NSEventModifierFlagControl },
{ /* -------- */ },
{ @"Customize Touch Bar…", @selector(toggleTouchBarCustomizationPalette:) },
}
},
{ @"Window",
Expand All @@ -204,16 +207,7 @@ - (void)applicationWillFinishLaunching:(NSNotification*)aNotification

- (void)applicationDidFinishLaunching:(NSNotification*)aNotification
{
_window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 400) styleMask:(NSWindowStyleMaskTitled|NSWindowStyleMaskResizable|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable) backing:NSBackingStoreBuffered defer:NO];
_window.releasedWhenClosed = NO;
_window.delegate = self;
_window.title = @"New Application";
[_window center];
[_window makeKeyAndOrderFront:self];
}

- (void)windowWillClose:(NSNotification*)aNotification
{
[NSApp terminate:self];
WindowController* windowController = [[WindowController alloc] init];
[windowController showWindow:self];
}
@end
2 changes: 2 additions & 0 deletions Applications/NewApplication/src/ViewController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@interface ViewController : NSViewController
@end
31 changes: 31 additions & 0 deletions Applications/NewApplication/src/ViewController.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#import "ViewController.h"

@interface MyView : NSView
@end

@implementation MyView
- (instancetype)initWithFrame:(NSRect)aRect
{
if(self = [super initWithFrame:aRect])
{
}
return self;
}

- (NSSize)intrinsicContentSize
{
return NSMakeSize(100, 100);
}

- (void)drawRect:(NSRect)aRect
{
NSEraseRect(aRect);
}
@end

@implementation ViewController
- (void)loadView
{
self.view = [[MyView alloc] initWithFrame:NSZeroRect];
}
@end
2 changes: 2 additions & 0 deletions Applications/NewApplication/src/WindowController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@interface WindowController : NSWindowController
@end
64 changes: 64 additions & 0 deletions Applications/NewApplication/src/WindowController.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#import "WindowController.h"
#import "ViewController.h"

@interface WindowController () <NSWindowDelegate>
@property (nonatomic) NSWindowController* retainedSelf;
@property (nonatomic) ViewController* northEastViewController;
@property (nonatomic) ViewController* northWestViewController;
@property (nonatomic) ViewController* southEastViewController;
@property (nonatomic) ViewController* southWestViewController;
@end

@implementation WindowController
+ (void)initialize
{
NSWindow.allowsAutomaticWindowTabbing = NO;
}

- (instancetype)init
{
if(self = [self initWithWindow:[[NSWindow alloc] initWithContentRect:NSZeroRect styleMask:(NSWindowStyleMaskTitled|NSWindowStyleMaskResizable|NSWindowStyleMaskClosable|NSWindowStyleMaskMiniaturizable) backing:NSBackingStoreBuffered defer:NO]])
{
_retainedSelf = self;

self.northEastViewController = [[ViewController alloc] init];
self.northWestViewController = [[ViewController alloc] init];
self.southEastViewController = [[ViewController alloc] init];
self.southWestViewController = [[ViewController alloc] init];

NSWindow* window = self.window;
window.title = NSProcessInfo.processInfo.processName;
window.delegate = self;

NSDictionary* views = @{
@"northEast": self.northEastViewController.view,
@"northWest": self.northWestViewController.view,
@"southEast": self.southEastViewController.view,
@"southWest": self.southWestViewController.view,
};

NSView* contentView = window.contentView;
for(NSView* view in views.allValues)
{
view.translatesAutoresizingMaskIntoConstraints = NO;
[contentView addSubview:view];
}

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[northEast(==northWest@55)]-[northWest]-|" options:NSLayoutFormatAlignAllTop|NSLayoutFormatAlignAllBottom metrics:nil views:views]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[southEast(==southWest@55)]-[southWest]-|" options:NSLayoutFormatAlignAllTop|NSLayoutFormatAlignAllBottom metrics:nil views:views]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[northEast(==southEast@55)]-[southEast]-|" options:0 metrics:nil views:views]];

[window layoutIfNeeded];
[window center];

window.frameAutosaveName = @"Main";
}
return self;
}

- (void)windowWillClose:(NSNotification*)aNotification
{
_retainedSelf = nil;
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0];
}
@end
4 changes: 0 additions & 4 deletions Applications/NewApplication/target

This file was deleted.

5 changes: 5 additions & 0 deletions Applications/PrivilegedTool/default.rave
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
target "${dirname}" {
require authorization io text
sources src/*.cc
executable "${target}"
}
10 changes: 5 additions & 5 deletions Applications/PrivilegedTool/src/install.cc
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,11 @@ int install_tool (std::string const& toolPath)

if(!path::make_dir(path::parent(kAuthToolPath)))
return EX_CANTCREAT;
path::remove(kAuthToolPath);
if(!path::copy(toolPath, kAuthToolPath))
unlink(kAuthToolPath);
if(copyfile(toolPath.c_str(), kAuthToolPath, nullptr, COPYFILE_ALL | COPYFILE_NOFOLLOW_SRC) != 0)
return EX_IOERR;
chown(kAuthToolPath, 0, 0);
if(path::exists(kAuthPlistPath))
if(access(kAuthPlistPath, F_OK) == 0)
launch_control("unload", kAuthPlistPath);
if(!path::set_content(kAuthPlistPath, plist_content()))
return EX_IOERR;
Expand All @@ -119,8 +119,8 @@ int uninstall_tool ()
if(path::exists(kAuthPlistPath))
{
launch_control("unload", kAuthPlistPath);
path::remove(kAuthPlistPath);
unlink(kAuthPlistPath);
}
path::remove(kAuthToolPath);
unlink(kAuthToolPath);
return EX_OK;
}
43 changes: 11 additions & 32 deletions Applications/PrivilegedTool/src/launchd.cc
Original file line number Diff line number Diff line change
@@ -1,39 +1,18 @@
#include "launchd.h"
#include <launch.h> // There is no <x-man-page://3/launch> page <rdar://7072543>
#include <oak/debug.h>
#include <launch.h>

OAK_DEBUG_VAR(AuthServer_Launchd);

int get_socket (launch_data_t dict, char const* name)
int launchd_sockets ()
{
launch_data_t array = launch_data_dict_lookup(dict, name);
int* fds = nullptr;
size_t cnt = 0;
int rc = launch_activate_socket("MasterSocket", &fds, &cnt);

if(array == nullptr || (launch_data_get_type(array) == LAUNCH_DATA_ARRAY && launch_data_array_get_count(array) == 0))
{
D(DBF_AuthServer_Launchd, bug("no activity for %s\n", name););
return -1;
}
assert(rc == 0);
assert(fds != nullptr);
assert(cnt == 1);

assert(array != nullptr && launch_data_get_type(array) == LAUNCH_DATA_ARRAY);
D(DBF_AuthServer_Launchd, bug("handle %zu sockets (%s)", launch_data_array_get_count(array), name););
launch_data_t fdData = launch_data_array_get_index(array, 0);
D(DBF_AuthServer_Launchd, bug("data %p", fdData););
assert(fdData != nullptr && launch_data_get_type(fdData) == LAUNCH_DATA_FD);
int fd = launch_data_get_fd(fdData);
D(DBF_AuthServer_Launchd, bug("fd %d", fd););
assert(fd >= 0);

return fd;
}

int launchd_sockets ()
{
launch_data_t req = launch_data_new_string(LAUNCH_KEY_CHECKIN);
assert(req != nullptr);
launch_data_t res = launch_msg(req);
assert(res != nullptr && launch_data_get_type(res) == LAUNCH_DATA_DICTIONARY); // LAUNCH_DATA_ERRNO
launch_data_t allSockets = launch_data_dict_lookup(res, LAUNCH_JOBKEY_SOCKETS);
assert(allSockets != nullptr && launch_data_get_type(allSockets) == LAUNCH_DATA_DICTIONARY);
int res = rc == 0 && cnt == 1 ? fds[0] : -1;
free(fds);

return get_socket(allSockets, "MasterSocket");
return res;
}
Loading
Loading