修改文本编辑器

This commit is contained in:
jmal 2020-05-24 16:13:15 +08:00
parent 8a2083381a
commit e28df1cf21
2 changed files with 67 additions and 24 deletions

View File

@ -7,21 +7,39 @@
<script> <script>
// htmlmixed mode // htmlmixed mode
require('codemirror/mode/vue/vue.js') const modulesFiles = require.context("codemirror/mode", true, /\.js$/);
require('codemirror/mode/xml/xml.js')
require('codemirror/mode/javascript/javascript.js') // you do not need `import app from './modules/app'`
require('codemirror/mode/css/css.js')
require('codemirror/mode/shell/shell.js') // it will auto require all vuex module from modules file
require('codemirror/mode/yaml/yaml.js')
require('codemirror/mode/swift/swift.js') const modules = modulesFiles.keys().reduce((modules, modulePath) => {
require('codemirror/mode/sql/sql.js')
require('codemirror/mode/sass/sass.js') // set './app.js' => 'app'
require('codemirror/mode/sas/sas.js')
require('codemirror/mode/php/php.js') const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
require('codemirror/mode/css/css.js')
require('codemirror/mode/markdown/markdown.js') const value = modulesFiles(modulePath);
require('codemirror/mode/go/go.js')
require('codemirror/mode/dart/dart.js') modules[moduleName] = value.default;
return modules;
}, {});
// require('codemirror/mode/xml/xml.js')
// require('codemirror/mode/javascript/javascript.js')
// require('codemirror/mode/css/css.js')
// require('codemirror/mode/shell/shell.js')
// require('codemirror/mode/yaml/yaml.js')
// require('codemirror/mode/swift/swift.js')
// require('codemirror/mode/sql/sql.js')
// require('codemirror/mode/sass/sass.js')
// require('codemirror/mode/sas/sas.js')
// require('codemirror/mode/php/php.js')
// require('codemirror/mode/css/css.js')
// require('codemirror/mode/markdown/markdown.js')
// require('codemirror/mode/go/go.js')
// require('codemirror/mode/dart/dart.js')
// require('codemirror/mode/clike/clike.js') // require('codemirror/mode/clike/clike.js')
// theme // theme
@ -29,11 +47,28 @@
require('codemirror/theme/ayu-dark.css') require('codemirror/theme/ayu-dark.css')
require('codemirror/theme/3024-day.css') require('codemirror/theme/3024-day.css')
require('codemirror/theme/3024-night.css') require('codemirror/theme/3024-night.css')
require('codemirror/theme/ambiance.css')
require('codemirror/theme/seti.css')
// require hint addon for javacript // 支持代码折叠
require('codemirror/addon/fold/foldgutter.css')
require('codemirror/addon/fold/foldcode.js')
require('codemirror/addon/fold/foldgutter.js')
require('codemirror/addon/fold/brace-fold.js')
require('codemirror/addon/fold/comment-fold.js')
// 全屏模式
require('codemirror/addon/display/fullscreen.css')
require('codemirror/addon/display/fullscreen.js')
// 自动补全
require('codemirror/addon/hint/show-hint.js') require('codemirror/addon/hint/show-hint.js')
require('codemirror/addon/hint/show-hint.css') require('codemirror/addon/hint/show-hint.css')
require('codemirror/addon/hint/javascript-hint.js') require('codemirror/addon/hint/javascript-hint.js')
require('codemirror/addon/hint/anyword-hint.js')
require('codemirror/addon/hint/html-hint.js')
require('codemirror/addon/hint/xml-hint.js')
require('codemirror/addon/hint/css-hint.js')
// Crtl-F 搜索 // Crtl-F 搜索
import 'codemirror/addon/dialog/dialog'; import 'codemirror/addon/dialog/dialog';
@ -70,7 +105,6 @@
} }
}, },
ready: function () { ready: function () {
console.log(6789)
let that = this let that = this
this.editor = CodeMirror.fromTextArea(this.$el.querySelector('textarea'), this.options) this.editor = CodeMirror.fromTextArea(this.$el.querySelector('textarea'), this.options)
this.editor.setValue(this.value) this.editor.setValue(this.value)

View File

@ -58,14 +58,19 @@
computed: { computed: {
options: function () { options: function () {
return { return {
mode: this.codeMode, mode: this.codeMode,//代码高亮
// tabSize: 2, // tabSize: 2, // table键缩进
styleActiveLine: true, styleActiveLine: true,
lineNumbers: true, lineNumbers: true, //显示行号
lineWrapping: this.lineWrapping, lineWrapping: this.lineWrapping,//代码折叠
foldGutter: true,
gutters:["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
readOnly: this.readOnly, readOnly: this.readOnly,
theme: 'idea', theme: 'idea',
extraKeys: {'Ctrl-Z': 'autocomplete'}, // theme: 'default',
fullScreen: false, // 全屏
matchBrackets: true, //括号匹配
extraKeys: {'Ctrl-I': 'autocomplete'}, //智能提示
} }
} }
}, },
@ -95,13 +100,17 @@
message: '<span>&nbsp;&nbsp;正在加载数据...</span>' message: '<span>&nbsp;&nbsp;正在加载数据...</span>'
}) })
this.codeMode = 'javascript' this.codeMode = 'text/javascript'
let suffix = a.suffix let suffix = a.suffix
const modeIndex = modeInfo.findIndex(item => item.ext && item.ext.includes(suffix)) const modeIndex = modeInfo.findIndex(item => item.ext && item.ext.includes(suffix))
if(modeIndex > -1){ if(modeIndex > -1){
const mode = modeInfo[modeIndex].mode const mode = modeInfo[modeIndex].mode
if(CodeMirror.modes.hasOwnProperty(mode)){ if(CodeMirror.modes.hasOwnProperty(mode)){
this.codeMode = mode let mime = modeInfo[modeIndex].mime
if(!mime){
mime = modeInfo[modeIndex].mimes[0]
}
this.codeMode = mime
}else{ }else{
this.$message.warning("暂不支持的文件类型:",modeInfo[modeIndex].mime) this.$message.warning("暂不支持的文件类型:",modeInfo[modeIndex].mime)
} }