From 2af29c99342988ae722bef3fe95ef66b21e3ef45 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Thu, 25 Oct 2012 11:45:58 -0700 Subject: [PATCH] Extensions have a src and specs directory now. Move existing extension specs. Move the extensions spec code inside of the extension's spec directory. Move source code to the extension's src directory --- .../select-list-spec.coffee | 0 spec/spec-suite.coffee | 10 +- src/app/window.coffee | 2 +- src/extensions/autocomplete/index.coffee | 2 +- .../spec}/autocomplete-spec.coffee | 0 .../{ => src}/autocomplete.coffee | 0 .../autocomplete/{ => src}/keymap.coffee | 0 src/extensions/command-panel/commands.pegjs | 20 +- src/extensions/command-panel/index.coffee | 2 +- .../spec}/command-interpreter-spec.coffee | 2 +- .../spec}/command-panel-spec.coffee | 0 .../{ => src}/command-interpreter.coffee | 0 .../{ => src}/command-panel.coffee | 8 +- .../{ => src}/commands/address-range.coffee | 2 +- .../{ => src}/commands/address.coffee | 4 +- .../{ => src}/commands/command.coffee | 0 .../commands/composite-command.coffee | 0 .../commands/current-selection-address.coffee | 2 +- .../{ => src}/commands/eof-address.coffee | 2 +- .../{ => src}/commands/line-address.coffee | 2 +- .../{ => src}/commands/regex-address.coffee | 2 +- .../select-all-matches-in-project.coffee | 4 +- .../commands/select-all-matches.coffee | 4 +- .../{ => src}/commands/substitution.coffee | 4 +- .../{ => src}/commands/zero-address.coffee | 2 +- .../command-panel/{ => src}/keymap.coffee | 0 .../command-panel/{ => src}/operation.coffee | 0 .../{ => src}/preview-list.coffee | 0 src/extensions/event-palette/index.coffee | 2 +- .../spec}/event-palette-spec.coffee | 0 .../{ => src}/event-palette.coffee | 0 .../event-palette/{ => src}/keymap.coffee | 0 src/extensions/fuzzy-finder/index.coffee | 2 +- .../spec}/fuzzy-finder-spec.coffee | 0 .../{ => src}/fuzzy-finder.coffee | 0 .../fuzzy-finder/{ => src}/keymap.coffee | 0 src/extensions/keybindings-view/index.coffee | 1 - .../keybindings-view/keybindings-view.coffee | 33 -- src/extensions/keybindings-view/keymap.coffee | 5 - src/extensions/markdown-preview/index.coffee | 2 +- .../spec}/markdown-preview-spec.coffee | 0 .../markdown-preview/{ => src}/keymap.coffee | 0 .../{ => src}/markdown-preview.coffee | 0 src/extensions/snippets/index.coffee | 2 +- src/extensions/snippets/snippets.pegjs | 2 +- .../snippets/spec}/snippets-spec.coffee | 0 .../snippets/{ => src}/keymap.coffee | 0 .../{ => src}/snippet-expansion.coffee | 0 .../snippets/{ => src}/snippet.coffee | 0 .../snippets/{ => src}/snippets.coffee | 2 +- .../strip-trailing-whitespace/index.coffee | 1 + .../strip-trailing-whitespace-spec.coffee | 0 .../src}/strip-trailing-whitespace.coffee | 0 src/extensions/tree-view/index.coffee | 2 +- .../tree-view/spec}/tree-view-spec.coffee | 0 .../tree-view/{ => src}/dialog.coffee | 0 .../tree-view/{ => src}/directory-view.coffee | 2 +- .../tree-view/{ => src}/file-view.coffee | 0 .../tree-view/{ => src}/keymap.coffee | 0 src/extensions/tree-view/src/tree-view.coffee | 292 ++++++++++++++++++ src/extensions/vim-mode/index.coffee | 6 +- .../vim-mode/spec}/vim-mode-spec.coffee | 0 .../vim-mode/{ => src}/commands.coffee | 0 .../vim-mode/{ => src}/motions.coffee | 0 .../vim-mode/{ => src}/operators.coffee | 0 src/extensions/wrap-guide/index.coffee | 2 +- .../wrap-guide/spec}/wrap-guide-spec.coffee | 0 .../wrap-guide/{ => src}/wrap-guide.coffee | 0 68 files changed, 346 insertions(+), 84 deletions(-) rename spec/{extensions => app}/select-list-spec.coffee (100%) rename {spec/extensions => src/extensions/autocomplete/spec}/autocomplete-spec.coffee (100%) rename src/extensions/autocomplete/{ => src}/autocomplete.coffee (100%) rename src/extensions/autocomplete/{ => src}/keymap.coffee (100%) rename {spec/extensions => src/extensions/command-panel/spec}/command-interpreter-spec.coffee (99%) rename {spec/extensions => src/extensions/command-panel/spec}/command-panel-spec.coffee (100%) rename src/extensions/command-panel/{ => src}/command-interpreter.coffee (100%) rename src/extensions/command-panel/{ => src}/command-panel.coffee (94%) rename src/extensions/command-panel/{ => src}/commands/address-range.coffee (85%) rename src/extensions/command-panel/{ => src}/commands/address.coffee (76%) rename src/extensions/command-panel/{ => src}/commands/command.coffee (100%) rename src/extensions/command-panel/{ => src}/commands/composite-command.coffee (100%) rename src/extensions/command-panel/{ => src}/commands/current-selection-address.coffee (73%) rename src/extensions/command-panel/{ => src}/commands/eof-address.coffee (77%) rename src/extensions/command-panel/{ => src}/commands/line-address.coffee (79%) rename src/extensions/command-panel/{ => src}/commands/regex-address.coffee (95%) rename src/extensions/command-panel/{ => src}/commands/select-all-matches-in-project.coffee (83%) rename src/extensions/command-panel/{ => src}/commands/select-all-matches.coffee (83%) rename src/extensions/command-panel/{ => src}/commands/substitution.coffee (87%) rename src/extensions/command-panel/{ => src}/commands/zero-address.coffee (72%) rename src/extensions/command-panel/{ => src}/keymap.coffee (100%) rename src/extensions/command-panel/{ => src}/operation.coffee (100%) rename src/extensions/command-panel/{ => src}/preview-list.coffee (100%) rename {spec/extensions => src/extensions/event-palette/spec}/event-palette-spec.coffee (100%) rename src/extensions/event-palette/{ => src}/event-palette.coffee (100%) rename src/extensions/event-palette/{ => src}/keymap.coffee (100%) rename {spec/extensions => src/extensions/fuzzy-finder/spec}/fuzzy-finder-spec.coffee (100%) rename src/extensions/fuzzy-finder/{ => src}/fuzzy-finder.coffee (100%) rename src/extensions/fuzzy-finder/{ => src}/keymap.coffee (100%) delete mode 100644 src/extensions/keybindings-view/index.coffee delete mode 100644 src/extensions/keybindings-view/keybindings-view.coffee delete mode 100644 src/extensions/keybindings-view/keymap.coffee rename {spec/extensions => src/extensions/markdown-preview/spec}/markdown-preview-spec.coffee (100%) rename src/extensions/markdown-preview/{ => src}/keymap.coffee (100%) rename src/extensions/markdown-preview/{ => src}/markdown-preview.coffee (100%) rename {spec/extensions => src/extensions/snippets/spec}/snippets-spec.coffee (100%) rename src/extensions/snippets/{ => src}/keymap.coffee (100%) rename src/extensions/snippets/{ => src}/snippet-expansion.coffee (100%) rename src/extensions/snippets/{ => src}/snippet.coffee (100%) rename src/extensions/snippets/{ => src}/snippets.coffee (96%) create mode 100644 src/extensions/strip-trailing-whitespace/index.coffee rename {spec/extensions => src/extensions/strip-trailing-whitespace/spec}/strip-trailing-whitespace-spec.coffee (100%) rename src/extensions/{ => strip-trailing-whitespace/src}/strip-trailing-whitespace.coffee (100%) rename {spec/extensions => src/extensions/tree-view/spec}/tree-view-spec.coffee (100%) rename src/extensions/tree-view/{ => src}/dialog.coffee (100%) rename src/extensions/tree-view/{ => src}/directory-view.coffee (98%) rename src/extensions/tree-view/{ => src}/file-view.coffee (100%) rename src/extensions/tree-view/{ => src}/keymap.coffee (100%) create mode 100644 src/extensions/tree-view/src/tree-view.coffee rename {spec/extensions => src/extensions/vim-mode/spec}/vim-mode-spec.coffee (100%) rename src/extensions/vim-mode/{ => src}/commands.coffee (100%) rename src/extensions/vim-mode/{ => src}/motions.coffee (100%) rename src/extensions/vim-mode/{ => src}/operators.coffee (100%) rename {spec/extensions => src/extensions/wrap-guide/spec}/wrap-guide-spec.coffee (100%) rename src/extensions/wrap-guide/{ => src}/wrap-guide.coffee (100%) diff --git a/spec/extensions/select-list-spec.coffee b/spec/app/select-list-spec.coffee similarity index 100% rename from spec/extensions/select-list-spec.coffee rename to spec/app/select-list-spec.coffee diff --git a/spec/spec-suite.coffee b/spec/spec-suite.coffee index 26d0e02b3..10e41ef5a 100644 --- a/spec/spec-suite.coffee +++ b/spec/spec-suite.coffee @@ -1,4 +1,12 @@ fs = require 'fs' require 'spec-helper' -require path for path in fs.listTree(window.resourcePath + "/spec") when /-spec\.coffee$/.test path +# Run extension specs +for extensionPath in fs.listTree(require.resolve("extensions")) + for path in fs.listTree(fs.join(extensionPath, "spec")) when /-spec\.coffee$/.test path + require path + +# Run core specs +for path in fs.listTree(require.resolve("spec")) when /-spec\.coffee$/.test path + require path + diff --git a/src/app/window.coffee b/src/app/window.coffee index a028dc86f..79e468176 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -74,7 +74,7 @@ windowAdditions = throw new Error("Extension '#{name}' does not exist at path '#{extensionPath}'") unless fs.exists(extensionPath) extension = rootView.activateExtension(require(extensionPath), config) - extensionKeymapPath = fs.join(fs.directory(extensionPath), "keymap.coffee") + extensionKeymapPath = fs.join(fs.directory(extensionPath), "src/keymap.coffee") require extensionKeymapPath if fs.exists(extensionKeymapPath) extension catch e diff --git a/src/extensions/autocomplete/index.coffee b/src/extensions/autocomplete/index.coffee index 4cee041e6..6e5aedd1f 100644 --- a/src/extensions/autocomplete/index.coffee +++ b/src/extensions/autocomplete/index.coffee @@ -1 +1 @@ -module.exports = require 'autocomplete/autocomplete.coffee' +module.exports = require 'autocomplete/src/autocomplete.coffee' diff --git a/spec/extensions/autocomplete-spec.coffee b/src/extensions/autocomplete/spec/autocomplete-spec.coffee similarity index 100% rename from spec/extensions/autocomplete-spec.coffee rename to src/extensions/autocomplete/spec/autocomplete-spec.coffee diff --git a/src/extensions/autocomplete/autocomplete.coffee b/src/extensions/autocomplete/src/autocomplete.coffee similarity index 100% rename from src/extensions/autocomplete/autocomplete.coffee rename to src/extensions/autocomplete/src/autocomplete.coffee diff --git a/src/extensions/autocomplete/keymap.coffee b/src/extensions/autocomplete/src/keymap.coffee similarity index 100% rename from src/extensions/autocomplete/keymap.coffee rename to src/extensions/autocomplete/src/keymap.coffee diff --git a/src/extensions/command-panel/commands.pegjs b/src/extensions/command-panel/commands.pegjs index 7761003eb..4f6d3e2b3 100644 --- a/src/extensions/command-panel/commands.pegjs +++ b/src/extensions/command-panel/commands.pegjs @@ -1,14 +1,14 @@ { - var CompositeCommand = require('command-panel/commands/composite-command') - var Substitution = require('command-panel/commands/substitution'); - var ZeroAddress = require('command-panel/commands/zero-address'); - var EofAddress = require('command-panel/commands/eof-address'); - var LineAddress = require('command-panel/commands/line-address'); - var AddressRange = require('command-panel/commands/address-range'); - var CurrentSelectionAddress = require('command-panel/commands/current-selection-address') - var RegexAddress = require('command-panel/commands/regex-address') - var SelectAllMatches = require('command-panel/commands/select-all-matches') - var SelectAllMatchesInProject = require('command-panel/commands/select-all-matches-in-project') + var CompositeCommand = require('command-panel/src/commands/composite-command') + var Substitution = require('command-panel/src/commands/substitution'); + var ZeroAddress = require('command-panel/src/commands/zero-address'); + var EofAddress = require('command-panel/src/commands/eof-address'); + var LineAddress = require('command-panel/src/commands/line-address'); + var AddressRange = require('command-panel/src/commands/address-range'); + var CurrentSelectionAddress = require('command-panel/src/commands/current-selection-address') + var RegexAddress = require('command-panel/src/commands/regex-address') + var SelectAllMatches = require('command-panel/src/commands/select-all-matches') + var SelectAllMatchesInProject = require('command-panel/src/commands/select-all-matches-in-project') } start = expressions:(expression+) { diff --git a/src/extensions/command-panel/index.coffee b/src/extensions/command-panel/index.coffee index 4d7dbb69f..f3622c933 100644 --- a/src/extensions/command-panel/index.coffee +++ b/src/extensions/command-panel/index.coffee @@ -1 +1 @@ -module.exports = require 'command-panel/command-panel' +module.exports = require 'command-panel/src/command-panel' diff --git a/spec/extensions/command-interpreter-spec.coffee b/src/extensions/command-panel/spec/command-interpreter-spec.coffee similarity index 99% rename from spec/extensions/command-interpreter-spec.coffee rename to src/extensions/command-panel/spec/command-interpreter-spec.coffee index fc7441b75..427a34bc4 100644 --- a/spec/extensions/command-interpreter-spec.coffee +++ b/src/extensions/command-panel/spec/command-interpreter-spec.coffee @@ -1,4 +1,4 @@ -CommandInterpreter = require 'command-panel/command-interpreter' +CommandInterpreter = require 'command-panel/src/command-interpreter' Project = require 'project' Buffer = require 'buffer' EditSession = require 'edit-session' diff --git a/spec/extensions/command-panel-spec.coffee b/src/extensions/command-panel/spec/command-panel-spec.coffee similarity index 100% rename from spec/extensions/command-panel-spec.coffee rename to src/extensions/command-panel/spec/command-panel-spec.coffee diff --git a/src/extensions/command-panel/command-interpreter.coffee b/src/extensions/command-panel/src/command-interpreter.coffee similarity index 100% rename from src/extensions/command-panel/command-interpreter.coffee rename to src/extensions/command-panel/src/command-interpreter.coffee diff --git a/src/extensions/command-panel/command-panel.coffee b/src/extensions/command-panel/src/command-panel.coffee similarity index 94% rename from src/extensions/command-panel/command-panel.coffee rename to src/extensions/command-panel/src/command-panel.coffee index 4cc535e9e..c15f061f1 100644 --- a/src/extensions/command-panel/command-panel.coffee +++ b/src/extensions/command-panel/src/command-panel.coffee @@ -1,8 +1,8 @@ {View, $$$} = require 'space-pen' -CommandInterpreter = require 'command-panel/command-interpreter' -RegexAddress = require 'command-panel/commands/regex-address' -CompositeCommand = require 'command-panel/commands/composite-command' -PreviewList = require 'command-panel/preview-list' +CommandInterpreter = require 'command-panel/src/command-interpreter' +RegexAddress = require 'command-panel/src/commands/regex-address' +CompositeCommand = require 'command-panel/src/commands/composite-command' +PreviewList = require 'command-panel/src/preview-list' Editor = require 'editor' {SyntaxError} = require('pegjs').parser diff --git a/src/extensions/command-panel/commands/address-range.coffee b/src/extensions/command-panel/src/commands/address-range.coffee similarity index 85% rename from src/extensions/command-panel/commands/address-range.coffee rename to src/extensions/command-panel/src/commands/address-range.coffee index 45cb5afda..3e4291011 100644 --- a/src/extensions/command-panel/commands/address-range.coffee +++ b/src/extensions/command-panel/src/commands/address-range.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/commands/address.coffee b/src/extensions/command-panel/src/commands/address.coffee similarity index 76% rename from src/extensions/command-panel/commands/address.coffee rename to src/extensions/command-panel/src/commands/address.coffee index b15c07d63..ae1b768d3 100644 --- a/src/extensions/command-panel/commands/address.coffee +++ b/src/extensions/command-panel/src/commands/address.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/commands/command' -Operation = require 'command-panel/operation' +Command = require 'command-panel/src/commands/command' +Operation = require 'command-panel/src/operation' $ = require 'jquery' module.exports = diff --git a/src/extensions/command-panel/commands/command.coffee b/src/extensions/command-panel/src/commands/command.coffee similarity index 100% rename from src/extensions/command-panel/commands/command.coffee rename to src/extensions/command-panel/src/commands/command.coffee diff --git a/src/extensions/command-panel/commands/composite-command.coffee b/src/extensions/command-panel/src/commands/composite-command.coffee similarity index 100% rename from src/extensions/command-panel/commands/composite-command.coffee rename to src/extensions/command-panel/src/commands/composite-command.coffee diff --git a/src/extensions/command-panel/commands/current-selection-address.coffee b/src/extensions/command-panel/src/commands/current-selection-address.coffee similarity index 73% rename from src/extensions/command-panel/commands/current-selection-address.coffee rename to src/extensions/command-panel/src/commands/current-selection-address.coffee index 5a230f842..6fd873123 100644 --- a/src/extensions/command-panel/commands/current-selection-address.coffee +++ b/src/extensions/command-panel/src/commands/current-selection-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/commands/eof-address.coffee b/src/extensions/command-panel/src/commands/eof-address.coffee similarity index 77% rename from src/extensions/command-panel/commands/eof-address.coffee rename to src/extensions/command-panel/src/commands/eof-address.coffee index f84213420..c98dff4b3 100644 --- a/src/extensions/command-panel/commands/eof-address.coffee +++ b/src/extensions/command-panel/src/commands/eof-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/commands/line-address.coffee b/src/extensions/command-panel/src/commands/line-address.coffee similarity index 79% rename from src/extensions/command-panel/commands/line-address.coffee rename to src/extensions/command-panel/src/commands/line-address.coffee index aaebc7a40..2c2e87b48 100644 --- a/src/extensions/command-panel/commands/line-address.coffee +++ b/src/extensions/command-panel/src/commands/line-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/commands/regex-address.coffee b/src/extensions/command-panel/src/commands/regex-address.coffee similarity index 95% rename from src/extensions/command-panel/commands/regex-address.coffee rename to src/extensions/command-panel/src/commands/regex-address.coffee index f8c32ff48..064fabab0 100644 --- a/src/extensions/command-panel/commands/regex-address.coffee +++ b/src/extensions/command-panel/src/commands/regex-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/commands/select-all-matches-in-project.coffee b/src/extensions/command-panel/src/commands/select-all-matches-in-project.coffee similarity index 83% rename from src/extensions/command-panel/commands/select-all-matches-in-project.coffee rename to src/extensions/command-panel/src/commands/select-all-matches-in-project.coffee index 6e09abbe9..7ea56a70e 100644 --- a/src/extensions/command-panel/commands/select-all-matches-in-project.coffee +++ b/src/extensions/command-panel/src/commands/select-all-matches-in-project.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/commands/command' -Operation = require 'command-panel/operation' +Command = require 'command-panel/src/commands/command' +Operation = require 'command-panel/src/operation' $ = require 'jquery' module.exports = diff --git a/src/extensions/command-panel/commands/select-all-matches.coffee b/src/extensions/command-panel/src/commands/select-all-matches.coffee similarity index 83% rename from src/extensions/command-panel/commands/select-all-matches.coffee rename to src/extensions/command-panel/src/commands/select-all-matches.coffee index fb5017f25..78ebe9b8e 100644 --- a/src/extensions/command-panel/commands/select-all-matches.coffee +++ b/src/extensions/command-panel/src/commands/select-all-matches.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/commands/command' -Operation = require 'command-panel/operation' +Command = require 'command-panel/src/commands/command' +Operation = require 'command-panel/src/operation' $ = require 'jquery' module.exports = diff --git a/src/extensions/command-panel/commands/substitution.coffee b/src/extensions/command-panel/src/commands/substitution.coffee similarity index 87% rename from src/extensions/command-panel/commands/substitution.coffee rename to src/extensions/command-panel/src/commands/substitution.coffee index 403cb3731..89529dbb3 100644 --- a/src/extensions/command-panel/commands/substitution.coffee +++ b/src/extensions/command-panel/src/commands/substitution.coffee @@ -1,5 +1,5 @@ -Command = require 'command-panel/commands/command' -Operation = require 'command-panel/operation' +Command = require 'command-panel/src/commands/command' +Operation = require 'command-panel/src/operation' $ = require 'jquery' module.exports = diff --git a/src/extensions/command-panel/commands/zero-address.coffee b/src/extensions/command-panel/src/commands/zero-address.coffee similarity index 72% rename from src/extensions/command-panel/commands/zero-address.coffee rename to src/extensions/command-panel/src/commands/zero-address.coffee index f40b6d377..313f1cd5b 100644 --- a/src/extensions/command-panel/commands/zero-address.coffee +++ b/src/extensions/command-panel/src/commands/zero-address.coffee @@ -1,4 +1,4 @@ -Address = require 'command-panel/commands/address' +Address = require 'command-panel/src/commands/address' Range = require 'range' module.exports = diff --git a/src/extensions/command-panel/keymap.coffee b/src/extensions/command-panel/src/keymap.coffee similarity index 100% rename from src/extensions/command-panel/keymap.coffee rename to src/extensions/command-panel/src/keymap.coffee diff --git a/src/extensions/command-panel/operation.coffee b/src/extensions/command-panel/src/operation.coffee similarity index 100% rename from src/extensions/command-panel/operation.coffee rename to src/extensions/command-panel/src/operation.coffee diff --git a/src/extensions/command-panel/preview-list.coffee b/src/extensions/command-panel/src/preview-list.coffee similarity index 100% rename from src/extensions/command-panel/preview-list.coffee rename to src/extensions/command-panel/src/preview-list.coffee diff --git a/src/extensions/event-palette/index.coffee b/src/extensions/event-palette/index.coffee index 7e31326a8..3247616d9 100644 --- a/src/extensions/event-palette/index.coffee +++ b/src/extensions/event-palette/index.coffee @@ -1 +1 @@ -module.exports = require 'event-palette/event-palette' \ No newline at end of file +module.exports = require 'event-palette/src/event-palette' \ No newline at end of file diff --git a/spec/extensions/event-palette-spec.coffee b/src/extensions/event-palette/spec/event-palette-spec.coffee similarity index 100% rename from spec/extensions/event-palette-spec.coffee rename to src/extensions/event-palette/spec/event-palette-spec.coffee diff --git a/src/extensions/event-palette/event-palette.coffee b/src/extensions/event-palette/src/event-palette.coffee similarity index 100% rename from src/extensions/event-palette/event-palette.coffee rename to src/extensions/event-palette/src/event-palette.coffee diff --git a/src/extensions/event-palette/keymap.coffee b/src/extensions/event-palette/src/keymap.coffee similarity index 100% rename from src/extensions/event-palette/keymap.coffee rename to src/extensions/event-palette/src/keymap.coffee diff --git a/src/extensions/fuzzy-finder/index.coffee b/src/extensions/fuzzy-finder/index.coffee index c1518b670..3dd4e515f 100644 --- a/src/extensions/fuzzy-finder/index.coffee +++ b/src/extensions/fuzzy-finder/index.coffee @@ -1 +1 @@ -module.exports = require 'fuzzy-finder/fuzzy-finder' +module.exports = require 'fuzzy-finder/src/fuzzy-finder' diff --git a/spec/extensions/fuzzy-finder-spec.coffee b/src/extensions/fuzzy-finder/spec/fuzzy-finder-spec.coffee similarity index 100% rename from spec/extensions/fuzzy-finder-spec.coffee rename to src/extensions/fuzzy-finder/spec/fuzzy-finder-spec.coffee diff --git a/src/extensions/fuzzy-finder/fuzzy-finder.coffee b/src/extensions/fuzzy-finder/src/fuzzy-finder.coffee similarity index 100% rename from src/extensions/fuzzy-finder/fuzzy-finder.coffee rename to src/extensions/fuzzy-finder/src/fuzzy-finder.coffee diff --git a/src/extensions/fuzzy-finder/keymap.coffee b/src/extensions/fuzzy-finder/src/keymap.coffee similarity index 100% rename from src/extensions/fuzzy-finder/keymap.coffee rename to src/extensions/fuzzy-finder/src/keymap.coffee diff --git a/src/extensions/keybindings-view/index.coffee b/src/extensions/keybindings-view/index.coffee deleted file mode 100644 index fc9229496..000000000 --- a/src/extensions/keybindings-view/index.coffee +++ /dev/null @@ -1 +0,0 @@ -module.exports = require 'keybindings-view/keybindings-view' diff --git a/src/extensions/keybindings-view/keybindings-view.coffee b/src/extensions/keybindings-view/keybindings-view.coffee deleted file mode 100644 index de51dda39..000000000 --- a/src/extensions/keybindings-view/keybindings-view.coffee +++ /dev/null @@ -1,33 +0,0 @@ -{$$} = require 'space-pen' -ScrollView = require 'scroll-view' - -module.exports = -class KeybindingsView extends ScrollView - @activate: (rootView, state) -> - requireStylesheet 'keybinding-view.css' - @instance = new this(rootView) - - @content: (rootView) -> - @div class: 'keybindings-view', tabindex: -1, => - @ul outlet: 'keybindingList' - - initialize: (@rootView) -> - super - @rootView.on 'keybindings-view:attach', => @attach() - @on 'keybindings-view:detach', => @detach() - - attach: -> - @keybindingList.empty() - @keybindingList.append $$ -> - for keystroke, command of rootView.activeKeybindings() - @li => - @span class: 'keystroke', "#{keystroke}" - @span ":" - @span "#{command}" - - @rootView.append(this) - @focus() - - detach: -> - super() - @rootView.focus() diff --git a/src/extensions/keybindings-view/keymap.coffee b/src/extensions/keybindings-view/keymap.coffee deleted file mode 100644 index de373a6e8..000000000 --- a/src/extensions/keybindings-view/keymap.coffee +++ /dev/null @@ -1,5 +0,0 @@ -window.keymap.bindKeys '*', - 'ctrl-?': 'keybindings-view:attach' - -window.keymap.bindKeys ".keybindings-view", - 'escape': 'keybindings-view:detach' diff --git a/src/extensions/markdown-preview/index.coffee b/src/extensions/markdown-preview/index.coffee index 34a21825f..5dca810d4 100644 --- a/src/extensions/markdown-preview/index.coffee +++ b/src/extensions/markdown-preview/index.coffee @@ -1 +1 @@ -module.exports = require 'markdown-preview/markdown-preview' +module.exports = require 'markdown-preview/src/markdown-preview' diff --git a/spec/extensions/markdown-preview-spec.coffee b/src/extensions/markdown-preview/spec/markdown-preview-spec.coffee similarity index 100% rename from spec/extensions/markdown-preview-spec.coffee rename to src/extensions/markdown-preview/spec/markdown-preview-spec.coffee diff --git a/src/extensions/markdown-preview/keymap.coffee b/src/extensions/markdown-preview/src/keymap.coffee similarity index 100% rename from src/extensions/markdown-preview/keymap.coffee rename to src/extensions/markdown-preview/src/keymap.coffee diff --git a/src/extensions/markdown-preview/markdown-preview.coffee b/src/extensions/markdown-preview/src/markdown-preview.coffee similarity index 100% rename from src/extensions/markdown-preview/markdown-preview.coffee rename to src/extensions/markdown-preview/src/markdown-preview.coffee diff --git a/src/extensions/snippets/index.coffee b/src/extensions/snippets/index.coffee index 912e393e5..e50906a0c 100644 --- a/src/extensions/snippets/index.coffee +++ b/src/extensions/snippets/index.coffee @@ -1 +1 @@ -module.exports = require 'extensions/snippets/snippets.coffee' +module.exports = require 'snippets/src/snippets.coffee' diff --git a/src/extensions/snippets/snippets.pegjs b/src/extensions/snippets/snippets.pegjs index 2d2950130..8d3ea766f 100644 --- a/src/extensions/snippets/snippets.pegjs +++ b/src/extensions/snippets/snippets.pegjs @@ -1,5 +1,5 @@ { - var Snippet = require('extensions/snippets/snippet'); + var Snippet = require('snippets/src/snippet'); var Point = require('point'); } diff --git a/spec/extensions/snippets-spec.coffee b/src/extensions/snippets/spec/snippets-spec.coffee similarity index 100% rename from spec/extensions/snippets-spec.coffee rename to src/extensions/snippets/spec/snippets-spec.coffee diff --git a/src/extensions/snippets/keymap.coffee b/src/extensions/snippets/src/keymap.coffee similarity index 100% rename from src/extensions/snippets/keymap.coffee rename to src/extensions/snippets/src/keymap.coffee diff --git a/src/extensions/snippets/snippet-expansion.coffee b/src/extensions/snippets/src/snippet-expansion.coffee similarity index 100% rename from src/extensions/snippets/snippet-expansion.coffee rename to src/extensions/snippets/src/snippet-expansion.coffee diff --git a/src/extensions/snippets/snippet.coffee b/src/extensions/snippets/src/snippet.coffee similarity index 100% rename from src/extensions/snippets/snippet.coffee rename to src/extensions/snippets/src/snippet.coffee diff --git a/src/extensions/snippets/snippets.coffee b/src/extensions/snippets/src/snippets.coffee similarity index 96% rename from src/extensions/snippets/snippets.coffee rename to src/extensions/snippets/src/snippets.coffee index e445cf5aa..bfbe4aca1 100644 --- a/src/extensions/snippets/snippets.coffee +++ b/src/extensions/snippets/src/snippets.coffee @@ -1,7 +1,7 @@ fs = require 'fs' PEG = require 'pegjs' _ = require 'underscore' -SnippetExpansion = require 'snippets/snippet-expansion' +SnippetExpansion = require 'snippets/src/snippet-expansion' module.exports = name: 'Snippets' diff --git a/src/extensions/strip-trailing-whitespace/index.coffee b/src/extensions/strip-trailing-whitespace/index.coffee new file mode 100644 index 000000000..358fbbf1a --- /dev/null +++ b/src/extensions/strip-trailing-whitespace/index.coffee @@ -0,0 +1 @@ +module.exports = require 'strip-trailing-whitespace/src/strip-trailing-whitespace' \ No newline at end of file diff --git a/spec/extensions/strip-trailing-whitespace-spec.coffee b/src/extensions/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee similarity index 100% rename from spec/extensions/strip-trailing-whitespace-spec.coffee rename to src/extensions/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee diff --git a/src/extensions/strip-trailing-whitespace.coffee b/src/extensions/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee similarity index 100% rename from src/extensions/strip-trailing-whitespace.coffee rename to src/extensions/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee diff --git a/src/extensions/tree-view/index.coffee b/src/extensions/tree-view/index.coffee index 26740b31b..a57ff5b90 100644 --- a/src/extensions/tree-view/index.coffee +++ b/src/extensions/tree-view/index.coffee @@ -1 +1 @@ -module.exports = require 'tree-view/tree-view' +module.exports = require 'tree-view/src/tree-view' diff --git a/spec/extensions/tree-view-spec.coffee b/src/extensions/tree-view/spec/tree-view-spec.coffee similarity index 100% rename from spec/extensions/tree-view-spec.coffee rename to src/extensions/tree-view/spec/tree-view-spec.coffee diff --git a/src/extensions/tree-view/dialog.coffee b/src/extensions/tree-view/src/dialog.coffee similarity index 100% rename from src/extensions/tree-view/dialog.coffee rename to src/extensions/tree-view/src/dialog.coffee diff --git a/src/extensions/tree-view/directory-view.coffee b/src/extensions/tree-view/src/directory-view.coffee similarity index 98% rename from src/extensions/tree-view/directory-view.coffee rename to src/extensions/tree-view/src/directory-view.coffee index 0fd70521d..cb708fef8 100644 --- a/src/extensions/tree-view/directory-view.coffee +++ b/src/extensions/tree-view/src/directory-view.coffee @@ -1,5 +1,5 @@ {View, $$} = require 'space-pen' -FileView = require 'tree-view/file-view' +FileView = require 'tree-view/src/file-view' Directory = require 'directory' $ = require 'jquery' diff --git a/src/extensions/tree-view/file-view.coffee b/src/extensions/tree-view/src/file-view.coffee similarity index 100% rename from src/extensions/tree-view/file-view.coffee rename to src/extensions/tree-view/src/file-view.coffee diff --git a/src/extensions/tree-view/keymap.coffee b/src/extensions/tree-view/src/keymap.coffee similarity index 100% rename from src/extensions/tree-view/keymap.coffee rename to src/extensions/tree-view/src/keymap.coffee diff --git a/src/extensions/tree-view/src/tree-view.coffee b/src/extensions/tree-view/src/tree-view.coffee new file mode 100644 index 000000000..363f66726 --- /dev/null +++ b/src/extensions/tree-view/src/tree-view.coffee @@ -0,0 +1,292 @@ +{View, $$} = require 'space-pen' +ScrollView = require 'scroll-view' +Directory = require 'directory' +DirectoryView = require 'tree-view/src/directory-view' +FileView = require 'tree-view/src/file-view' +Dialog = require 'tree-view/src/dialog' +Native = require 'native' +fs = require 'fs' +$ = require 'jquery' +_ = require 'underscore' + +module.exports = +class TreeView extends ScrollView + @activate: (rootView, state) -> + requireStylesheet 'tree-view.css' + + if state + @instance = TreeView.deserialize(state, rootView) + else + @instance = new TreeView(rootView) + @instance.attach() + + @deactivate: () -> + @instance.deactivate() + + @serialize: -> + @instance.serialize() + + @content: (rootView) -> + @div class: 'tree-view tool-panel', tabindex: -1, => + if rootView.project.getRootDirectory() + @subview 'root', new DirectoryView(directory: rootView.project.getRootDirectory(), isExpanded: true) + + @deserialize: (state, rootView) -> + treeView = new TreeView(rootView) + treeView.root.deserializeEntryExpansionStates(state.directoryExpansionStates) + treeView.selectEntryForPath(state.selectedPath) + treeView.focusAfterAttach = state.hasFocus + treeView.scrollTopAfterAttach = state.scrollTop + treeView.attach() if state.attached + treeView + + root: null + focusAfterAttach: false + scrollTopAfterAttach: -1 + selectedPath: null + + initialize: (@rootView) -> + super + @on 'click', '.entry', (e) => @entryClicked(e) + @command 'core:move-up', => @moveUp() + @command 'core:move-down', => @moveDown() + @command 'core:close', => @detatch() + @command 'tree-view:expand-directory', => @expandDirectory() + @command 'tree-view:collapse-directory', => @collapseDirectory() + @command 'tree-view:open-selected-entry', => @openSelectedEntry(true) + @command 'tree-view:move', => @moveSelectedEntry() + @command 'tree-view:add', => @add() + @command 'tree-view:remove', => @removeSelectedEntry() + @command 'tool-panel:unfocus', => @rootView.focus() + @command 'tree-view:directory-modified', => + if @hasFocus() + @selectEntryForPath(@selectedPath) if @selectedPath + else + @selectActiveFile() + @rootView.command 'tree-view:toggle', => @toggle() + @rootView.command 'tree-view:reveal-active-file', => @revealActiveFile() + @rootView.on 'active-editor-path-change', => @selectActiveFile() + @rootView.project.on 'path-change', => @updateRoot() + + @selectEntry(@root) if @root + + afterAttach: (onDom) -> + @focus() if @focusAfterAttach + @scrollTop(@scrollTopAfterAttach) if @scrollTopAfterAttach > 0 + + serialize: -> + directoryExpansionStates: @root?.serializeEntryExpansionStates() + selectedPath: @selectedEntry()?.getPath() + hasFocus: @hasFocus() + attached: @hasParent() + scrollTop: @scrollTop() + + deactivate: -> + @root?.unwatchEntries() + + toggle: -> + if @hasFocus() + @detach() + else + if @hasParent() + @focus() + else + @attach() + + attach: -> + @rootView.horizontal.prepend(this) + @focus() + + detach: -> + @scrollTopAfterAttach = @scrollTop() + super + @rootView.focus() + + hasFocus: -> + @is(':focus') + + entryClicked: (e) -> + entry = $(e.currentTarget).view() + switch e.originalEvent?.detail ? 1 + when 1 + @selectEntry(entry) + @openSelectedEntry(false) if (entry instanceof FileView) + when 2 + if entry.is('.selected.file') + @rootView.getActiveEditor().focus() + else if entry.is('.selected.directory') + entry.toggleExpansion() + + false + + updateRoot: -> + @root?.remove() + if @rootView.project.getRootDirectory() + @root = new DirectoryView(directory: @rootView.project.getRootDirectory(), isExpanded: true) + @append(@root) + else + @root = null + + selectActiveFile: -> + activeFilePath = @rootView.getActiveEditor()?.getPath() + @selectEntryForPath(activeFilePath) if activeFilePath + + revealActiveFile: -> + @attach() + @focus() + + return unless activeFilePath = @rootView.getActiveEditor()?.getPath() + + project = @rootView.project + activePathComponents = project.relativize(activeFilePath).split('/') + currentPath = project.getPath().replace(/\/$/, '') + for pathComponent in activePathComponents + currentPath += '/' + pathComponent + entry = @entryForPath(currentPath) + if entry.hasClass('directory') + entry.expand() + else + @selectEntry(entry) + + entryForPath: (path) -> + fn = (bestMatchEntry, element) -> + entry = $(element).view() + regex = new RegExp("^" + _.escapeRegExp(entry.getPath())) + if regex.test(path) and entry.getPath().length > bestMatchEntry.getPath().length + entry + else + bestMatchEntry + + @find(".entry").toArray().reduce(fn, @root) + + selectEntryForPath: (path) -> + @selectEntry(@entryForPath(path)) + + moveDown: -> + selectedEntry = @selectedEntry() + if selectedEntry + if selectedEntry.is('.expanded.directory') + return if @selectEntry(selectedEntry.find('.entry:first')) + until @selectEntry(selectedEntry.next()) + selectedEntry = selectedEntry.parents('.entry:first') + break unless selectedEntry.length + else + @selectEntry(@root) + + @scrollToEntry(@selectedEntry()) + + moveUp: -> + selectedEntry = @selectedEntry() + if selectedEntry + if previousEntry = @selectEntry(selectedEntry.prev()) + if previousEntry.is('.expanded.directory') + @selectEntry(previousEntry.find('.entry:last')) + else + @selectEntry(selectedEntry.parents('.directory').first()) + else + @selectEntry(@find('.entry').last()) + + @scrollToEntry(@selectedEntry()) + + expandDirectory: -> + selectedEntry = @selectedEntry() + selectedEntry.view().expand() if (selectedEntry instanceof DirectoryView) + + collapseDirectory: -> + selectedEntry = @selectedEntry() + if directory = selectedEntry.closest('.expanded.directory').view() + directory.collapse() + @selectEntry(directory) + + openSelectedEntry: (changeFocus) -> + selectedEntry = @selectedEntry() + if (selectedEntry instanceof DirectoryView) + selectedEntry.view().toggleExpansion() + else if (selectedEntry instanceof FileView) + @rootView.open(selectedEntry.getPath(), { changeFocus }) + + moveSelectedEntry: -> + entry = @selectedEntry() + return unless entry + oldPath = entry.getPath() + + dialog = new Dialog + prompt: "Enter the new path for the file:" + path: @rootView.project.relativize(oldPath) + select: true + onConfirm: (newPath) => + newPath = @rootView.project.resolve(newPath) + directoryPath = fs.directory(newPath) + try + fs.makeTree(directoryPath) unless fs.exists(directoryPath) + fs.move(oldPath, newPath) + dialog.close() + catch e + dialog.showError("Error: " + e.message + " Try a different path:") + + @rootView.append(dialog) + + removeSelectedEntry: -> + entry = @selectedEntry() + return unless entry + + entryType = if entry instanceof DirectoryView then "directory" else "file" + atom.confirm( + "Are you sure you would like to delete the selected #{entryType}?", + "You are deleting #{entry.getPath()}", + "Move to Trash", (=> Native.moveToTrash(entry.getPath())), + "Cancel", null + "Delete", (=> fs.remove(entry.getPath())) + ) + + add: -> + selectedPath = @selectedEntry().getPath() + directoryPath = if fs.isFile(selectedPath) then fs.directory(selectedPath) else selectedPath + relativeDirectoryPath = @rootView.project.relativize(directoryPath) + relativeDirectoryPath += '/' if relativeDirectoryPath.length > 0 + + dialog = new Dialog + prompt: "Enter the path for the new file/directory. Directories end with '/':" + path: relativeDirectoryPath + select: false + onConfirm: (relativePath) => + endsWithDirectorySeparator = /\/$/.test(relativePath) + path = @rootView.project.resolve(relativePath) + try + if fs.exists(path) + pathType = if fs.isFile(path) then "file" else "directory" + dialog.showError("Error: A #{pathType} already exists at path '#{path}'. Try a different path:") + else if endsWithDirectorySeparator + fs.makeTree(path) + dialog.cancel() + @entryForPath(path).buildEntries() + @selectEntryForPath(path) + else + fs.write(path, "") + @rootView.open(path) + dialog.close() + catch e + dialog.showError("Error: " + e.message + " Try a different path:") + + @rootView.append(dialog) + + selectedEntry: -> + @find('.selected')?.view() + + selectEntry: (entry) -> + return false unless entry.get(0) + entry = entry.view() unless entry instanceof View + @selectedPath = entry.getPath() + @find('.selected').removeClass('selected') + entry.addClass('selected') + + scrollToEntry: (entry) -> + displayElement = if (entry instanceof DirectoryView) then entry.header else entry + + top = @scrollTop() + displayElement.position().top + bottom = top + displayElement.outerHeight() + + if bottom > @scrollBottom() + @scrollBottom(bottom) + if top < @scrollTop() + @scrollTop(top) diff --git a/src/extensions/vim-mode/index.coffee b/src/extensions/vim-mode/index.coffee index abeaf11c1..4c87423eb 100644 --- a/src/extensions/vim-mode/index.coffee +++ b/src/extensions/vim-mode/index.coffee @@ -1,8 +1,8 @@ _ = require 'underscore' $ = require 'jquery' -operators = require 'vim-mode/operators' -commands = require 'vim-mode/commands' -motions = require 'vim-mode/motions' +operators = require 'vim-mode/src/operators' +commands = require 'vim-mode/src/commands' +motions = require 'vim-mode/src/motions' module.exports = class VimMode diff --git a/spec/extensions/vim-mode-spec.coffee b/src/extensions/vim-mode/spec/vim-mode-spec.coffee similarity index 100% rename from spec/extensions/vim-mode-spec.coffee rename to src/extensions/vim-mode/spec/vim-mode-spec.coffee diff --git a/src/extensions/vim-mode/commands.coffee b/src/extensions/vim-mode/src/commands.coffee similarity index 100% rename from src/extensions/vim-mode/commands.coffee rename to src/extensions/vim-mode/src/commands.coffee diff --git a/src/extensions/vim-mode/motions.coffee b/src/extensions/vim-mode/src/motions.coffee similarity index 100% rename from src/extensions/vim-mode/motions.coffee rename to src/extensions/vim-mode/src/motions.coffee diff --git a/src/extensions/vim-mode/operators.coffee b/src/extensions/vim-mode/src/operators.coffee similarity index 100% rename from src/extensions/vim-mode/operators.coffee rename to src/extensions/vim-mode/src/operators.coffee diff --git a/src/extensions/wrap-guide/index.coffee b/src/extensions/wrap-guide/index.coffee index 57a87beb6..f8a95c569 100644 --- a/src/extensions/wrap-guide/index.coffee +++ b/src/extensions/wrap-guide/index.coffee @@ -1 +1 @@ -module.exports = require 'wrap-guide/wrap-guide' +module.exports = require 'wrap-guide/src/wrap-guide' diff --git a/spec/extensions/wrap-guide-spec.coffee b/src/extensions/wrap-guide/spec/wrap-guide-spec.coffee similarity index 100% rename from spec/extensions/wrap-guide-spec.coffee rename to src/extensions/wrap-guide/spec/wrap-guide-spec.coffee diff --git a/src/extensions/wrap-guide/wrap-guide.coffee b/src/extensions/wrap-guide/src/wrap-guide.coffee similarity index 100% rename from src/extensions/wrap-guide/wrap-guide.coffee rename to src/extensions/wrap-guide/src/wrap-guide.coffee