codemirror插件-文件比較組件merge


目的: 為了實現文件比較功能

引用文件

從github下載項目后,從以下路徑引用文件,其中部分github分支中codemirror.js 需要運行項目,自動合成

1 <link rel=stylesheet href="../lib/codemirror.css">
2 <link rel=stylesheet href="../addon/merge/merge.css">
3 <script src="../lib/codemirror.js"></script>
4 <script src="../mode/xml/xml.js"></script>
5 <script src="https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119/diff_match_patch.js"></script>
6 <script src="../addon/merge/merge.js"></script>

配置參數 

筆者在merge.js的 CodeMirror中注冊了如下方法

 1  var value, orig1, orig2, dv, panes = 2, highlight = true, connect = null, collapse = false;
 2   CodeMirror.k_init=function(id,newData,oldData){
 3     value=oldData;//左側 老文件
 4     orig1 = '';
 5     orig2=newData;//右側 新文件
 6     initUI();
 7 
 8     function initUI() {
 9       if (value == null) return;
10       var target = document.getElementById(id);
11       target.innerHTML = "";
12       var dv = CodeMirror.MergeView(target, {
13         value: value,
14         origLeft: panes == 3 && !collapse && !connect ? orig1 : null,
15         orig: orig2,
16         lineNumbers: true, //行號
17         mode: "text/html",
18         //theme:'3024-night',//修改主題
19         styleActiveLine: true,
20         matchBrackets: true,
21         highlightDifferences: highlight,
22         connect: connect,
23         collapseIdentical: collapse,
24         revertButtons:false,//事件比較替換
25       });
26     }
27   };

 然后在外部js中直接調用 

CodeMirror.k_init('codeMirror',jsonString.now_file_content,jsonString.old_file_content)

效果如下

 

 

單個文件查看

 1   CodeMirror.k_show=function(id,Data){
 2     value=Data;//左側 老文件
 3     initUI();
 4     function initUI() {
 5       if (value == null) return;
 6       var target = document.getElementById(id);
 7       target.innerHTML = "";
 8       var dv = CodeMirror(document.getElementById(id), {
 9         value: value,
10         lineNumbers: true,
11         mode: "text/html",
12         //theme:'3024-night',
13         styleActiveLine: true,
14         matchBrackets: true,
15       });
16     }
17   };
CodeMirror.k_show('codeMirror',jsonString.now_file_content)

效果如下

 

配置心得:

1)修改主題

引用 codemirror源碼中theme文件下的css,添加配置theme,例 theme:'3024-night'; //修改主題

2)修改不同部分背景顏色

若行內容不用,dom結構會有所不同,故我直接修改css,  兄弟選擇器確定元素

.CodeMirror-merge-r-chunk+.CodeMirror-gutter-wrapper+.CodeMirror-line {
  background-color: #888;
}
.CodeMirror-merge-r-chunk+.CodeMirror-gutter-wrapper+.CodeMirror-line span {
  background-image: none;
}

3)高度修改

修改merge.css ,

.CodeMirror-merge, .CodeMirror-merge .CodeMirror {
  height: 600px;
}

4)revertButtons參數 關閉中間替換事件,隱藏替換按鈕

 

 

 

 

 

 

http://codemirror.net/demo/merge.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM