mirror of
https://github.com/atom/atom.git
synced 2026-01-23 13:58:08 -05:00
editor managers a pool of edit sessions
This commit is contained in:
@@ -7,6 +7,9 @@ activeWindow = App.activeWindow
|
||||
|
||||
ace = require 'ace/ace'
|
||||
|
||||
{EditSession} = require 'ace/edit_session'
|
||||
{UndoManager} = require 'ace/undomanager'
|
||||
|
||||
module.exports =
|
||||
class Editor extends Pane
|
||||
filename: null
|
||||
@@ -30,6 +33,8 @@ class Editor extends Pane
|
||||
'Alt-Shift-.' : 'end'
|
||||
'Ctrl-L' : 'consolelog'
|
||||
|
||||
sessions: {}
|
||||
|
||||
initialize: ->
|
||||
@ace = ace.edit "editor"
|
||||
@ace.setTheme require "ace/theme/twilight"
|
||||
@@ -53,6 +58,7 @@ class Editor extends Pane
|
||||
return @saveAs() if not @filename
|
||||
|
||||
File.write @filename, @ace.getSession().getValue()
|
||||
@sessions[@filename] = @ace.getSession()
|
||||
activeWindow.setDirty false
|
||||
@ace._emit 'save', { @filename }
|
||||
|
||||
@@ -64,14 +70,15 @@ class Editor extends Pane
|
||||
if File.isDirectory @filename
|
||||
File.changeWorkingDirectory @filename
|
||||
activeWindow.setTitle _.last @filename.split '/'
|
||||
@ace.getSession().setValue ""
|
||||
@ace.setSession @newSession()
|
||||
activeWindow.setDirty false
|
||||
else
|
||||
if /png|jpe?g|gif/i.test @filename
|
||||
App.openURL @filename
|
||||
else
|
||||
activeWindow.setTitle _.last @filename.split '/'
|
||||
@ace.getSession().setValue File.read @filename
|
||||
@sessions[@filename] or= @newSession File.read @filename
|
||||
@ace.setSession @sessions[@filename]
|
||||
activeWindow.setDirty false
|
||||
@ace._emit 'open', { @filename }
|
||||
|
||||
@@ -87,6 +94,11 @@ class Editor extends Pane
|
||||
@ace.resize()
|
||||
, timeout
|
||||
|
||||
newSession: (code) ->
|
||||
doc = new EditSession code or ''
|
||||
doc.setUndoManager new UndoManager
|
||||
doc
|
||||
|
||||
copy: ->
|
||||
editor = @ace
|
||||
text = editor.getSession().doc.getTextRange editor.getSelectionRange()
|
||||
|
||||
Reference in New Issue
Block a user