diff --git a/plugins/sidebar/file-list.js b/plugins/sidebar/file-list.js index 6e99345..220e197 100644 --- a/plugins/sidebar/file-list.js +++ b/plugins/sidebar/file-list.js @@ -12,10 +12,10 @@ const FileList = React.createClass({ componentWillUnmount: function(){ if(this.remove_nextFile) { this.remove_nextFile(); - }; + }; if(this.remove_previousFile) { this.remove_previousFile(); - }; + }; }, previousFile: function(){ this.changeFile({ direction: 'prev' }); @@ -24,17 +24,17 @@ const FileList = React.createClass({ this.changeFile({ direction: 'next' }); }, changeFile: function(move) { - const space = this.props.workspace; - const filename = space.filename.deref(); + const { workspace, loadFile } = this.props; + const filename = workspace.filename.deref(); - space.directory.forEach(function(x, i) { + workspace.directory.forEach(function(x, i) { if(x.get('name') === filename) { - if(i === space.directory.size - 1) { + if(i === workspace.directory.size - 1) { i = -1; } const shift = move.direction === 'prev' ? i - 1 : i + 1; - const switchFile = space.directory.getIn([shift, 'name']); - space.loadFile(switchFile); + const switchFile = workspace.directory.getIn([shift, 'name']); + loadFile(switchFile); } }); }, diff --git a/plugins/sidebar/file-operations.js b/plugins/sidebar/file-operations.js index e052a9c..c544e1d 100644 --- a/plugins/sidebar/file-operations.js +++ b/plugins/sidebar/file-operations.js @@ -40,18 +40,17 @@ const FileOperations = React.createClass({ .catch(this.handleError); }, createFile: function(name){ - const space = this.props.workspace; - const overlay = this.props.overlay; + const { workspace, overlay, loadFile } = this.props; if(!name){ return; } - space.filename.update(() => name); - space.current.update(() => ''); + workspace.filename.update(() => name); + workspace.current.update(() => ''); // TODO: these should transparently accept cursors for all non-function params - space.saveFile(space.filename.deref(), space.current) - .tap(() => this.handleSuccess(`'${name}' created successfully`)) + workspace.saveFile(workspace.filename.deref(), workspace.current) + .tap(() => loadFile(name, () => this.handleSuccess(`'${name}' created successfully`))) .catch(this.handleError) .finally(overlay.hide); }, @@ -160,10 +159,10 @@ const FileOperations = React.createClass({ componentWillUnmount: function(){ if(this.remove_saveFile) { this.remove_saveFile(); - }; + }; if(this.remove_closeDialog) { this.remove_closeDialog(); - }; + }; }, render: function(){ return ( diff --git a/plugins/sidebar/file.js b/plugins/sidebar/file.js index 95bdbd0..fd57aa5 100644 --- a/plugins/sidebar/file.js +++ b/plugins/sidebar/file.js @@ -7,8 +7,8 @@ const styles = require('./styles'); const File = React.createClass({ openFile: function(filename){ - const space = this.props.workspace; - space.loadFile(filename); + const { loadFile, config } = this.props; + loadFile(filename); }, render: function(){ const { filename, temp } = this.props; diff --git a/plugins/sidebar/index.js b/plugins/sidebar/index.js index 44eeb51..eb44c42 100644 --- a/plugins/sidebar/index.js +++ b/plugins/sidebar/index.js @@ -9,6 +9,8 @@ const File = require('./file'); const FileOperations = require('./file-operations'); const ProjectOperations = require('./project-operations'); +function noop(){} + function sidebar(app, opts, done){ const space = app.workspace; @@ -18,6 +20,23 @@ function sidebar(app, opts, done){ const logger = app.logger; const irken = app; + function loadFile(filename, cb = noop){ + if(filename){ + space.loadFile(filename, (err) => { + if(err){ + cb(err); + return; + } + + userConfig.set('last-file', filename); + + cb(); + }); + } else { + cb(); + } + } + app.view('sidebar', function(el, cb){ console.log('sidebar render'); const directory = space.directory; @@ -25,11 +44,11 @@ function sidebar(app, opts, done){ const Component = ( - + {space.cwd.deref()} - {directory.map((file) => )} + {directory.map((file) => )} - + ); @@ -37,8 +56,9 @@ function sidebar(app, opts, done){ }); const cwd = userConfig.get('cwd') || opts.defaultProject; + const lastFile = userConfig.get('last-file'); - space.changeDir(cwd, done); + space.changeDir(cwd, () => loadFile(lastFile, done)); } module.exports = sidebar;