@@ -1057,8 +1057,9 @@ window.CodeMirror = (function() {
10571057 var lineObj = getLine ( doc , lineNo ) ;
10581058 var found = coordsCharInner ( cm , lineObj , lineNo , x , y ) ;
10591059 var merged = collapsedSpanAtEnd ( lineObj ) ;
1060- if ( merged && found . ch == lineRight ( lineObj ) )
1061- lineNo = merged . find ( ) . to . line ;
1060+ var mergedPos = merged && merged . find ( ) ;
1061+ if ( merged && found . ch >= mergedPos . from . ch )
1062+ lineNo = mergedPos . to . line ;
10621063 else
10631064 return found ;
10641065 }
@@ -3360,10 +3361,11 @@ window.CodeMirror = (function() {
33603361 else updateLineHeight ( line , 0 ) ;
33613362 }
33623363 addMarkedSpan ( line , span ) ;
3363- if ( marker . collapsed && curLine == from . line && lineIsHidden ( line ) )
3364- updateLineHeight ( line , 0 ) ;
33653364 ++ curLine ;
33663365 } ) ;
3366+ if ( marker . collapsed ) doc . iter ( from . line , to . line + 1 , function ( line ) {
3367+ if ( lineIsHidden ( line ) ) updateLineHeight ( line , 0 ) ;
3368+ } ) ;
33673369
33683370 if ( marker . readOnly ) {
33693371 sawReadOnlySpans = true ;
@@ -3538,9 +3540,12 @@ window.CodeMirror = (function() {
35383540 return true ;
35393541 }
35403542 }
3541- window . lineIsHidden = lineIsHidden ;
35423543 function lineIsHiddenInner ( line , span ) {
3543- if ( span . to == null || span . marker . inclusiveRight && span . to == line . text . length )
3544+ if ( span . to == null ) {
3545+ var end = span . marker . find ( ) . to , endLine = getLine ( lineDoc ( line ) , end . line ) ;
3546+ return lineIsHiddenInner ( endLine , getMarkedSpanFor ( endLine . markedSpans , span . marker ) ) ;
3547+ }
3548+ if ( span . marker . inclusiveRight && span . to == line . text . length )
35443549 return true ;
35453550 for ( var sp , i = 0 ; i < line . markedSpans . length ; ++ i ) {
35463551 sp = line . markedSpans [ i ] ;
@@ -4083,6 +4088,11 @@ window.CodeMirror = (function() {
40834088 return no ;
40844089 }
40854090
4091+ function lineDoc ( line ) {
4092+ for ( var d = line . parent ; d . parent ; d = d . parent ) { }
4093+ return d ;
4094+ }
4095+
40864096 function lineAtHeight ( chunk , h ) {
40874097 var n = 0 ;
40884098 outer: do {
0 commit comments