mirror of
https://github.com/atom/atom.git
synced 2026-01-24 06:18:03 -05:00
Extract EventEmitter mixin
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
_ = require 'underscore'
|
||||
fs = require 'fs'
|
||||
Range = require 'range'
|
||||
EventEmitter = require 'event-emitter'
|
||||
|
||||
module.exports =
|
||||
class Buffer
|
||||
@@ -90,14 +91,6 @@ class Buffer
|
||||
if not @path then throw new Error("Tried to save buffer with no url")
|
||||
fs.write @path, @getText()
|
||||
|
||||
on: (eventName, handler) ->
|
||||
@eventHandlers ?= {}
|
||||
@eventHandlers[eventName] ?= []
|
||||
@eventHandlers[eventName].push(handler)
|
||||
|
||||
trigger: (eventName, event) ->
|
||||
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)
|
||||
|
||||
modeName: ->
|
||||
extension = if @path then @path.split('/').pop().split('.').pop() else null
|
||||
switch extension
|
||||
@@ -109,3 +102,4 @@ class Buffer
|
||||
when 'css' then 'css'
|
||||
else 'text'
|
||||
|
||||
_.extend(Buffer.prototype, EventEmitter)
|
||||
|
||||
8
src/atom/event-emitter.coffee
Normal file
8
src/atom/event-emitter.coffee
Normal file
@@ -0,0 +1,8 @@
|
||||
module.exports =
|
||||
on: (eventName, handler) ->
|
||||
@eventHandlers ?= {}
|
||||
@eventHandlers[eventName] ?= []
|
||||
@eventHandlers[eventName].push(handler)
|
||||
|
||||
trigger: (eventName, event) ->
|
||||
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)
|
||||
@@ -1,4 +1,5 @@
|
||||
_ = require 'underscore'
|
||||
EventEmitter = require 'event-emitter'
|
||||
|
||||
module.exports =
|
||||
class Highlighter
|
||||
@@ -59,10 +60,4 @@ class Highlighter
|
||||
tokensForRow: (row) ->
|
||||
@lines[row].tokens
|
||||
|
||||
on: (eventName, handler) ->
|
||||
@eventHandlers ?= {}
|
||||
@eventHandlers[eventName] ?= []
|
||||
@eventHandlers[eventName].push(handler)
|
||||
|
||||
trigger: (eventName, event) ->
|
||||
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)
|
||||
_.extend(Highlighter.prototype, EventEmitter)
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
_ = require 'underscore'
|
||||
Point = require 'point'
|
||||
EventEmitter = require 'event-emitter'
|
||||
|
||||
getWordRegex = -> /\b[^\s]+/g
|
||||
|
||||
module.exports =
|
||||
@@ -6,6 +9,8 @@ class LineWrapper
|
||||
constructor: (@maxLength, @highlighter) ->
|
||||
@buffer = @highlighter.buffer
|
||||
@buildWrappedLines()
|
||||
@highlighter.on 'change', (e) =>
|
||||
@wrappedLines[e.oldRange.start.row] = @buildWrappedLineForBufferRow(e.newRange.start.row)
|
||||
|
||||
setMaxLength: (@maxLength) ->
|
||||
@buildWrappedLines()
|
||||
@@ -83,3 +88,5 @@ class LineWrapper
|
||||
for screenLine in wrappedLine.screenLines
|
||||
return screenLine if currentScreenRow == screenRow
|
||||
currentScreenRow++
|
||||
|
||||
_.extend(LineWrapper.prototype, EventEmitter)
|
||||
|
||||
Reference in New Issue
Block a user