问题标签 [codemirror-modes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在同一页面上使用 codemirror 突出显示多种语言源代码?
我正在编写一个教程页面,我需要在其中突出显示不同语言(HTML、CSS、Javascript、jQuery)的不同源代码
目前,如果我提到mode:"jQuery"
我想将部分代码突出显示为 HTML,部分突出显示为 CSS,部分突出显示为 jQuery 等。我该怎么做?
我当前的代码:
// 代码镜像函数**
这就是我想在同一页面上强调的内容
// 在 CSS 模式下高亮代码
// 高亮 HTML 模式下的代码
// 在 jQuery 模式下高亮代码
我不能使用自动模式或自动选择,因为它不是由用户选择来检测的。我需要提到模式可能是手动的。如何使用相同的功能实现这一点?
codemirror - 使用 codemirror 简单模式实现基于缩进的解析
我想使用 codemirror 简单模式为基于缩进的语言实现解析器。我如何匹配一个有缺陷的人。也就是说,我希望解析器的状态在一行被缩进时改变。
reactjs - 如何在这个 React + Browserify 环境中应用 Codemirror 模式
我正在开发一个基于这个样板的应用程序:react-app-boilerplate
我正在使用react-codemirror 模块
我想将 javascript 模式应用于 codemirror,但是当我简单地插入在http://codemirror.net/mode/javascript/javascript.js找到的外部脚本时,我得到一个“CodeMirror 未定义”错误
我不确定如何在此配置中将所有内容连接在一起,我试图从 javascript.js 文件中的 react-codemirror 中要求 CodeMirror 对象,但没有成功。
javascript - 如何在 CodeMirror 中使用令牌使某些行只读
我想尝试使用令牌并使某些代码行只读。例如;
我想让注释行 // 可编辑,其余为只读。我在这方面完全是菜鸟,所以我需要一些帮助。非常感谢。
javascript - Codemirror:自己的模块关键字
我尝试为我们自己的 codemirror 脚本语言编写我的 owm 模块。知道我挂在我们的关键字上。
我有这个测试代码:
我们的一些关键词是:
- 窗户
- SELECT_MULTIPLE
- NO_SIZE
- 迅速的
- 日期
- 按钮
- 选择
- 系统对象
- 称呼
- 放置对象
对于我的正则表达式,我使用一个名为 cons 的数组,其中包含所有关键字。
然后我像这样加入所有数组条目:
直到那里一切正常。我得到的正则表达式在普通的 javascript match() 中工作。我什至使用 jQuery 获取我网站的文本,然后使用正则表达式,得到了我想要的。
但是,当我这样做时:
在 Codemirror 中,SessionDate 的日期也匹配。
这是我的整个 Codemirror 模式:
编辑:
如所要求的,这是一个工作的plunker:
http://plnkr.co/edit/bPyuJd?p=preview
在那里你可以看到,我没有关键字“SessionDate”,但是由于关键字“Date”,“SessionDate”的“Date”也被突出显示。
javascript - Codemirror如何创建模式
所以我最近才进入 codemirror,因为我的网站需要一个文本编辑器,但这意味着我对该程序知之甚少。我让编辑器使用 javascript 模式,但我需要为编辑器创建一些语法,我相信这意味着我必须为编辑器创建一个模式,但我在执行此操作时遇到了麻烦。我已经阅读了几次手册,但有些东西对我来说并没有点击,可能是因为我从未使用过这样的东西。无论如何,现在我只需要通过创建简单的加法、减法和乘法函数来掌握它。如果有人能让我继续前进,我将不胜感激。
javascript - 如何将覆盖限制在特定范围内?
我想在我的编辑器中添加一个仅适用于给定范围的叠加层(例如,从第 3 行第 44 列到第 8 行第 5 列)。
问题是我无法想出任何方法来找到我的token()
方法中的当前行,因为覆盖是无状态的,所以我无法将当前行存储在状态中。
multiplex.js
我仔细研究了and中的扩展overlay.js
,并试图了解嵌套模式是如何工作的,但我无法找到一种方法来使用这些工具中的任何一个来帮助我。请记住,我仍然希望它表现得像一个叠加层,因此不会干扰基本模式。
我的替代方法是扫描元素以查找添加的类并手动修改它们,使用element.getBoundingClientRect()
并cm.coorsChar()
检查它们的位置。但这很丑陋,需要手动刷新,并且当标记的元素跨越我的范围边界时会导致错误。关于如何正确解决这个问题的任何想法?
codemirror - 在 CodeMirror 中延迟执行覆盖
有没有办法控制覆盖标记化的开始时间?另一种选择是阻止覆盖运行,然后再激活它。删除和添加覆盖会导致整个文档被处理两次,所以这并没有真正的帮助。
背景:我正在构建一个代码编辑器,其中标记化依赖于重新评估代码,该代码被延迟以保持编辑器响应。