diff --git a/build/tasks/license-overrides.coffee b/build/tasks/license-overrides.coffee index f21c7eee9..ee1f13479 100644 --- a/build/tasks/license-overrides.coffee +++ b/build/tasks/license-overrides.coffee @@ -60,3 +60,18 @@ module.exports = ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. """ + + 'jschardet@1.1.0': + license: 'LGPL' + source: 'README.md in the repository' + sourceText: """ + JsChardet + ========= + + Port of python's chardet (http://chardet.feedparser.org/). + + License + ------- + + LGPL + """ diff --git a/package.json b/package.json index af4dd1446..1e9ca0bb8 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "nslog": "^1.0.1", "oniguruma": "^3.0.4", "optimist": "0.4.0", - "pathwatcher": "^2.1.3", + "pathwatcher": "^2.3.2", "property-accessors": "^1", "q": "^1.0.1", "random-words": "0.0.1", @@ -58,7 +58,7 @@ "serializable": "^1", "space-pen": "3.8.0", "temp": "0.7.0", - "text-buffer": "^3.3.0", + "text-buffer": "^3.4", "theorist": "^1.0.2", "underscore-plus": "^1.6.1", "vm-compatibility-layer": "0.1.0" @@ -82,6 +82,7 @@ "command-palette": "0.27.0", "deprecation-cop": "0.11.0", "dev-live-reload": "0.34.0", + "encoding-selector": "0.2.0", "exception-reporting": "0.20.0", "feedback": "0.33.0", "find-and-replace": "0.141.0", diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index 37f31a4d2..7a6a8e5ff 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -157,6 +157,19 @@ describe "TextEditor", -> expect(observed).toEqual [__filename, undefined] + describe "encoding", -> + it "notifies ::onDidChangeEncoding observers when the editor encoding changes", -> + observed = [] + editor.onDidChangeEncoding (encoding) -> observed.push(encoding) + + editor.setEncoding('utf16le') + editor.setEncoding('utf16le') + editor.setEncoding('utf16be') + editor.setEncoding() + editor.setEncoding() + + expect(observed).toEqual ['utf16le', 'utf16be', 'utf8'] + describe "cursor", -> describe ".getLastCursor()", -> it "returns the most recently created cursor", -> diff --git a/src/text-editor.coffee b/src/text-editor.coffee index c8500bb4c..1707ae86a 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -134,9 +134,11 @@ class TextEditor extends Model @emitter.emit 'did-change-title', @getTitle() @emit "path-changed" @emitter.emit 'did-change-path', @getPath() + @subscribe @buffer.onDidChangeEncoding => + @emitter.emit 'did-change-encoding', @getEncoding() @subscribe @buffer.onDidDestroy => @destroy() - # TODO: remove these thwne we remove the deprecations. They are old events. + # TODO: remove these when we remove the deprecations. They are old events. @subscribe @buffer.onDidStopChanging => @emit "contents-modified" @subscribe @buffer.onDidConflict => @emit "contents-conflicted" @subscribe @buffer.onDidChangeModified => @emit "modified-status-changed" @@ -260,6 +262,14 @@ class TextEditor extends Model onDidChangeSoftWrapped: (callback) -> @displayBuffer.onDidChangeSoftWrapped(callback) + # Extended: Calls your `callback` when the buffer's encoding has changed. + # + # * `callback` {Function} + # + # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. + onDidChangeEncoding: (callback) -> + @emitter.on 'did-change-encoding', callback + # Extended: Calls your `callback` when the grammar that interprets and # colorizes the text has been changed. Immediately calls your callback with # the current grammar. @@ -568,6 +578,16 @@ class TextEditor extends Model # Essential: Returns the {String} path of this editor's text buffer. getPath: -> @buffer.getPath() + # Extended: Returns the {String} character set encoding of this editor's text + # buffer. + getEncoding: -> @buffer.getEncoding() + + # Extended: Set the character set encoding to use in this editor's text + # buffer. + # + # * `encoding` The {String} character set encoding name such as 'utf8' + setEncoding: (encoding) -> @buffer.setEncoding(encoding) + # Essential: Returns {Boolean} `true` if this editor has been modified. isModified: -> @buffer.isModified()