@@ -71,14 +71,16 @@ export default class BreakpointManager {
71
71
this . onUncaught = false
72
72
this . compiledMode = false
73
73
74
- this . subs . add ( atom . workspace . observeTextEditors ( ed => {
75
- this . subs . add ( ed . observeGrammar ( ( ) => {
76
- if ( this . appliesToEditor ( ed ) ) {
77
- this . init ( ed )
78
- } else {
79
- this . deinit ( ed )
80
- }
81
- } ) )
74
+ this . subs . add ( atom . workspace . observeActiveTextEditor ( ed => {
75
+ if ( ed && ed . observeGrammar ) {
76
+ this . subs . add ( ed . observeGrammar ( ( ) => {
77
+ if ( this . appliesToEditor ( ed ) ) {
78
+ this . init ( ed )
79
+ } else {
80
+ this . deinit ( ed )
81
+ }
82
+ } ) )
83
+ }
82
84
} ) )
83
85
}
84
86
@@ -100,22 +102,30 @@ export default class BreakpointManager {
100
102
}
101
103
102
104
init ( ed ) {
105
+ if ( ed . gutterWithName ( this . name ) !== null ) return
103
106
ed . addGutter ( {
104
107
name : this . name ,
105
108
priority : 0
106
109
} )
107
110
108
- // click on gutter creates new bp
109
111
const editorElement = atom . views . getView ( ed )
112
+ let hasListener = false
110
113
114
+ // click on gutter creates new bp
111
115
const addClickListener = ( ) => {
116
+ if ( hasListener ) return
117
+
112
118
const gutterElement = editorElement . querySelector ( `.gutter[gutter-name="${ this . name } "]` )
113
119
114
120
if ( gutterElement == null ) {
115
- window . requestAnimationFrame ( addClickListener )
121
+ setTimeout ( ( ) => {
122
+ process . nextTick ( ( ) => window . requestAnimationFrame ( addClickListener ) )
123
+ } , 1000 )
124
+
116
125
return
117
126
}
118
127
128
+ hasListener = true
119
129
gutterElement . addEventListener ( 'click' , event => {
120
130
if ( ! ed || ! ed . getPath ( ) ) {
121
131
atom . notifications . addError ( 'Need a saved file to add a breakpoint' )
0 commit comments