@@ -18,7 +18,13 @@ var CodeMirror = React.createClass({
1818		onScroll : React . PropTypes . func , 
1919		options : React . PropTypes . object , 
2020		path : React . PropTypes . string , 
21- 		value : React . PropTypes . string 
21+ 		value : React . PropTypes . string , 
22+ 		preserveScrollPosition : React . PropTypes . bool 
23+ 	} , 
24+ 	getDefaultProps : function  getDefaultProps ( )  { 
25+ 		return  { 
26+ 			preserveScrollPosition : false 
27+ 		} ; 
2228	} , 
2329	getCodeMirrorInstance : function  getCodeMirrorInstance ( )  { 
2430		return  this . props . codeMirrorInstance  ||  require ( 'codemirror' ) ; 
@@ -49,7 +55,13 @@ var CodeMirror = React.createClass({
4955	} , 
5056	componentWillReceiveProps : function  componentWillReceiveProps ( nextProps )  { 
5157		if  ( this . codeMirror  &&  nextProps . value  !==  undefined  &&  this . codeMirror . getValue ( )  !==  nextProps . value )  { 
52- 			this . codeMirror . setValue ( nextProps . value ) ; 
58+ 			if  ( this . props . preserveScrollPosition )  { 
59+ 				var  prevScrollPosition  =  this . codeMirror . getScrollInfo ( ) ; 
60+ 				this . codeMirror . setValue ( nextProps . value ) ; 
61+ 				this . codeMirror . scrollTo ( prevScrollPosition . left ,  prevScrollPosition . top ) ; 
62+ 			}  else  { 
63+ 				this . codeMirror . setValue ( nextProps . value ) ; 
64+ 			} 
5365		} 
5466		if  ( typeof  nextProps . options  ===  'object' )  { 
5567			for  ( var  optionName  in  nextProps . options )  { 
0 commit comments