标签: codemirror

为CodeMirror创建新模式

我想只突出显示如下的关键字:( {KEYWORD} 基本上是单个{}括号之间的大写单词)

我尝试通过复制Mustache Overlay演示中的代码,并将双括号替换为单个括号:

CodeMirror.defineMode('mymode', function(config, parserConfig) {
  var mymodeOverlay = {
    token: function(stream, state) {
      if (stream.match("{")) {
        while ((ch = stream.next()) != null)
          if (ch == "}" && stream.next() == "}") break;
        return 'mymode';
      }
      while (stream.next() != null && !stream.match("{", false)) {}
      return null;
    }
  };
  return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mymodeOverlay);
});
Run Code Online (Sandbox Code Playgroud)

但它不是很好:)

有任何想法吗?

javascript regex codemirror

9
推荐指数
1
解决办法
5777
查看次数

jQuery热键......不那么全球化

基本上,我正在使用Resig先生的jQuery Hotkeys插件来捕获和处理类似的快捷方式ctrl+o......

好吧,也许我不uderstand的概念,但我的印象是一个ctrl+o触发任何地方里面的文件将通过文件热键处理程序被捕获.

例如,以下代码一般工作...

jQuery(document).bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)

但是,如果用户在输入框内部触发热键,则会失败.

它只适用于我执行以下操作:

jQuery('body, input').bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)

这对我的健康非常不利,因为它涉及每次在DOM中添加新输入框时绑定该死的处理程序.更糟糕的是,在CodeMirror等复杂小部件的情况下,我不知道要绑定什么.

Dunno,如果我的问题有道理,也许我使用了错误的方法?我也试着结合下面的对象,但它没有工作:window,document,body,div[contains the whole page]

NB:你可以在这里试一试.

jquery events dom hotkeys codemirror

9
推荐指数
1
解决办法
1941
查看次数

可以在ipython笔记本中使用Vim(类似绑定).Jupyter的任何解决方法?

有可能通过普遍遵循的方式讲解了使用在IPython的笔记本codemirror的vim的模式,在这里,我很享受它,但是它2.X因为笔记本的接口"偷"的快捷键是不可能的.事实上,codemirror的vim模式中的"Esc"是Ctrl-c,但它仍然不能正常工作.

我对Javascript一无所知,但似乎是codemirror的vim.js所在

...\IPython的\ HTML \静\分量\ codemirror

以某种方式将Ctrl-c映射到Esc,但是这个Esc可能是由ipython notebook占用的.

混合ipython笔记本和vim键盘绑定是一个很好的环境.2.x中有解决方法吗?因此,我仍在使用1.2.1.

编辑(3.x/Jupyter的解决方案):

~~ Vimception对3.x(Jupyter)不起作用,但我发现这个人做得很好.这很完美.~~

EDIT2

请看@Λlisue的答案.他值得+100.

javascript vim ipython codemirror ipython-notebook

9
推荐指数
2
解决办法
2312
查看次数

如何在browserify中要求代码镜像的模式,主题或插件

有没有人尝试通过browserify使用代码镜像?

我发现没有任何东西是可见的,即使它已经生成了所有的html标签.

代码 :

var CodeMirror = require('codemirror');
require('codemirror/mode/javascript/javascript.js');

  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    extraKeys: {
      "Ctrl-Space": "autocomplete"
    },
    mode: {
      name: "javascript",
      globalVars: true
    }
  });
Run Code Online (Sandbox Code Playgroud)

我想知道我应该如何要求js模式?

javascript codemirror npm browserify

9
推荐指数
1
解决办法
4938
查看次数

如何获取和替换CodeMirror中双花括号内的文本

我想创建一个输入,用户只能写纯文本,但我可以在那里获得该文本的一部分并用一些HTML替换它.

因此,举例来说,我要像一个文本转换Lorem Ipsum {{dolor}}Lorem Ipsum <some html with data from JS object>

我有一个带有一些数据的对象.

var data = {
    dolor: {
        icon: 'https://placehold.it/16x16/',
        text: 'Dolor text'
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用它来获取自定义文本和图像,所以 {{dolor}}应该转换为类似的东西

<span class="image">
    <img src="https://placehold.it/16x16/">
    Dolor text
</span>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的方法是使用CodeMirror,定义一个新模式并检测花括号,但现在我不知道如何获取这些大括号之间的内容,我不知道如何修改输出的HTML(因为CodeMirror只添加了一个cm-NameOfModeCSS类到文本).

这就是我所拥有的

var data = {
	dolor: {
		icon: 'https://placehold.it/16x16/',
		text: 'Dolor text'
	}
}

CodeMirror.defineMode( 'uoVariable', function( config, parserConfig ){
	var uoVariable = {
		token: function( stream, state ){
			var character;

			// console.log( state.inString );

			if ( stream.match( …
Run Code Online (Sandbox Code Playgroud)

javascript codemirror

9
推荐指数
1
解决办法
429
查看次数

如何通过javascript设置CodeMirror编辑器的值?

如何通过javascript命令设置CodeMirror编辑器的值?我只需要为它设置一个文本.但是如何?..非常感谢你的帮助!

javascript codemirror

8
推荐指数
1
解决办法
7401
查看次数

CodeMirror.禁用垂直滚动条

我目前正在使用CodeMirror在浏览器的文本区域中编辑CODE.如果我有超过20行代码,它会向右添加一个垂直滚动条.但我不需要这个滚动条.相反,我需要编辑器大小垂直增长.

有人可以帮忙吗?

javascript syntax-highlighting codemirror

8
推荐指数
2
解决办法
8605
查看次数

如何将CodeMirror集成到KnockoutJS中?

我想将CodeMirror JavaScript编辑器集成到KnockoutJS中.我知道还有Ace,但在我看来,使用CodeMirror会更容易.

我已经为JQueryUI小部件和QTip集成了自定义绑定,但这些是我在Internet上找到的代码片段,然后我只需要修改非常小的部分.

不幸的是,似乎我已经达到了我对Javascript的限制所以我在这里转向JavaScript Sith Masters.我不一定希望为我写的全部内容,指针和关于如何继续的建议会有很大的帮助.

我有一段代码:

HTML(我删除了textarea上已有的自定义绑定,这里没关系)

<body>
    <textarea id="code" cols="60" rows="8" 
              data-bind="value: condition, 
              tooltip: 'Enter the conditions', 
              codemirror: { 'lineNumbers': true, 'matchBrackets': true, 'mode': 'text/typescript' }"></textarea>
</body>
Run Code Online (Sandbox Code Playgroud)

CodeMirror的自定义绑定处理程序的开始:

ko.bindingHandlers.codemirror = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var options = valueAccessor() || {};
        var editor = CodeMirror.fromTextArea($(element)[0], options);
    }
};
Run Code Online (Sandbox Code Playgroud)

目前,这不会产生JS错误,但会显示2个文本区域而不是1个.

那我接下来该怎么办?

javascript codemirror knockout.js

8
推荐指数
1
解决办法
2711
查看次数

如何重置Codemirror编辑器?

我想重置Codemirror编辑器的所有内容.理想情况下,这应该清除textarea,删除所有标记并清除历史记录.

实现这一目标的最佳方法是什么?

codemirror

8
推荐指数
1
解决办法
8470
查看次数

如何在CodeMirror中触发键盘事件?

我使用不同的文本字段作为CodeMirror的代理.我想使用的功能,例如closebrackets.js,它们通过键盘事件激活,如keydown,keypresskeyup.我尝试了几种不同的方法来触发这些事件,但没有一种方法导致CodeMirror接收任何东西:

kc = 219
e = $.Event 'keydown', { which: kc }
$( myCodeMirror.getInputField() ).trigger e
Run Code Online (Sandbox Code Playgroud)

不行.没有事件被触发.

cmIF = $( myCodeMirror.getInputField() )

textArea = $('<textarea></textArea>')
$('body').append textArea
textArea.keydown (e) ->
    cmIF.focus()
    return

kc = 219
e = $.Event 'keydown', { which: kc }
textArea.trigger e
Run Code Online (Sandbox Code Playgroud)

尝试转发来自不同文本区域的事件.不行.CM不会触发事件.

$( myCodeMirror.getWrapperElement() ).children().each (index) ->
    $(this).trigger e
    return
Run Code Online (Sandbox Code Playgroud)

试图在CMs包装器的每个子节点上触发事件.不行.没有发生CM事件.

我在这做错了什么?如何在CodeMirror实例上触发键盘事件?

javascript jquery events codemirror coffeescript

8
推荐指数
1
解决办法
3814
查看次数