如果嵌入需要正确的大括号嵌套,如何在 Ace 编辑器中进行嵌入突出显示?

2024-01-19

考虑以下 Razor 代码:

    <div>@(Model.GetSomething())</div>

显然,只有考虑到所有括号,才能正确识别 Razor 块。
如果我进行朴素嵌入(基于 PHP 的做法):

    var RazorLangHighlightRules = function() {
        CSharpHighlightRules.call(this);
    };

    oop.inherits(RazorLangHighlightRules, CSharpHighlightRules);

    var RazorHighlightRules = function() {
        HtmlHighlightRules.call(this);

        var razorStartRules = [{
            token : "meta.block-marker.razor",
            regex : "@\\(",
            push  : "csharp-start"
        }];

        var endRules = [{
            token : "meta.block-marker.razor",
            regex : "\\)",
            next  : "pop"
        }];

        console.log(this.$rules);
        for (var key in this.$rules)
            this.$rules[key].unshift.apply(this.$rules[key], razorStartRules);

        this.embedRules(RazorLangHighlightRules, "csharp-", endRules, ["start"]);
        this.normalizeRules();
    };

    oop.inherits(RazorHighlightRules, HtmlHighlightRules);

我得到第一个) from GetSomething()被识别为 Razor 块的右大括号,这是不正确的。

在 Ace 中这样做的正确方法是什么?


您需要为每个状态添加一个状态堆栈(并删除)

endRules = [{ 
    regex: "[()]",
    onMatch: function(val, state, stack) {
        this.next = "";
        console.log(stack, this.next, val);
        if (val == "(") {
            stack.unshift("csharp-start", state);
            return "paren";
        }
        // val == ")"
        stack.shift();
        this.next = stack.shift() || "start";
        return this.next == "csharp-start" ? "paren" : "meta.block-marker.razor";
    }
}]

也可以看看将 Javascript 添加到自定义语言 - ACE 编辑器 https://stackoverflow.com/questions/24513783/add-javascript-into-custom-language-ace-editor/24516791#24516791

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果嵌入需要正确的大括号嵌套,如何在 Ace 编辑器中进行嵌入突出显示? 的相关文章

  • 当我尝试在 ace.js 中创建 Range 对象时,抛出“非法构造函数”错误

    我正在尝试为以下对象创建一个 Range 对象ace js我的代码中的编辑器 但它不起作用 它以我无法弄清楚的方式失败了 在Ace 文档 这个构造函数是 new Range Number startRow Number startColum
  • Ace 编辑器无法与 bootstrap 配合使用

    我使用引导程序默认示例主题 http getbootstrap com examples jumbotron narrow 我想过去 ace 编辑器而不是中央块 但 ace 编辑器不起作用 空白区域 div class container
  • 是否可以序列化 Ace Session 对象?

    我想序列化并存储 Ace Session 对象 这样我就可以打开一个 文件 并恢复所有内容 值 选择 光标位置 模式等 我试过了JSON stringify session 它会抛出一个循环错误 有任何想法吗 最简单的版本是 var ses
  • Ace 编辑器:自定义语法错误间距

    只是想知道 是否可以自定义语法错误槽 另外 是否可以突出显示有语法错误的文本 例如下面我试图检查的值myString反对字符串 chetan 但不带引号 现在这是一个语法错误 目前 我们在行号之前的装订线中显示错误 但是是否可以自定义 ac
  • 如何在验证错误时删除 ace 编辑器的内容

    我的问题与将焦点集中在 ace 编辑器上 https stackoverflow com questions 22459162 set focus on ace editor 这次我想在验证错误时删除内容 我用过这样的图案 0 4 and
  • 在 jQuery UI 可调整大小组件中嵌入 Ace 编辑器

    我正在尝试通过将 ace 编辑器嵌入到可调整大小的组件中来调整其大小 我一直在尝试使用 jQuery UI 可调整大小组件 但无法让 ace 编辑器出现在可调整大小组件内 Code
  • 与 Ace Editor 分开的托管模式文件

    我想将 ACE Editor 与桌面应用程序捆绑在一起 并将其呈现在 WebView 中 艾斯正在奔跑file 协议 有没有办法将模式文件与ace js 例如ace js将位于应用程序包内 Application MyApp app 但模式
  • Ace 编辑器不会格式化编辑器 div 内的数据

    我嵌入了一些JSON编辑器 div 内的数据 就像这里 http jsfiddle net P3TwV 11 http jsfiddle net P3TwV 11 但如小提琴所示 JSON 没有被格式化 它只是将数据放在一行中 我希望我在单
  • 如何使用 requirejs 从 CDN 加载 ace 编辑器主题?

    我正在尝试加载ace http ace c9 io来自带有 requirejs 的 CDN 的主题 Here http plnkr co edit CqQo6VDr0MyuyBkMIyQ4 p preview是一个plunkr 它说明了我的
  • 将 Javascript 添加到自定义语言 - ACE 编辑器

    我正在使用 ACE 编辑器来使用 JSON 作为基础的自定义元语言 但我想在用户输入类似内容时添加Javascript 自定义 函数 参数 javascript 代码 这个想法是使用 JS 已经使用的样式来突出显示 javascript 代
  • 如何阻止 Ace 在当前目录中查找主题和模式?

    我一直在开发一个 MVC Web 应用程序 该应用程序使用 Cloud9 提供的 Ace 浏览器内代码编辑器 ace js 脚本和设置 ace 编辑器的脚本都位于我的 BundleConfig 上的 ScriptBundle 中 捆绑包加载
  • 为 ace 编辑器设置值,而不选择整个编辑器

    所以你可以设置 ace 编辑器的值setValue但设置值后 编辑器会选择编辑器的整个值 如何禁用此功能 这意味着当我将 ace editor 的值设置为Hello world 它不会突出显示Hello world setValue后可以使
  • ACE 编辑器自动补全大写关键字

    我有一个带有自定义突出显示模式的 ACE 编辑器 基于 sql 模式 一切都工作正常 但我以大写形式定义关键字 当自动完成程序显示可用选项时 它们全部都是小写形式 我检查了旧的 sql 模式 在修改之前 行为完全相同 有什么方法可以将此选项
  • 更改 RStudio 编辑器主题

    我正在尝试更改 RStudio 编辑器主题 以便我可以设置自己的颜色 我在 Windows 10 上使用 RStudio 版本 0 99 473 我已经评论过有什么方法可以将 Rstudio 中的颜色更改为默认选项以外的颜色吗 https
  • Ace 代码编辑器动态设置语言 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试通过下拉菜单来选择语言来实现 Ace 代码编辑器 我的下拉菜单有一个模式 ID 我已经让编辑器正常工作 但我无法像我希望
  • Ace编辑器使用javascript触发事件

    有没有类似的东西 editor getSession trigger change 我想要这个的原因是因为编辑器进出新的 所以当它返回视图时我需要它做正常的 更改 事情 但我不想等待用户输入 目前我有 editor getSession o
  • 使用画布元素作为文本区域

    我正在寻找有关如何使用类似于文本区域的画布元素的直接描述 我见过这样的项目Ace http ace ajax org 只是想知道如何像文本区域一样写入该区域 只是纯文本 没有什么花哨的 提前致谢 Ace 曾经是 Mozilla Skywri
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • ACE 中的双重语法突出显示

    我想使用 ACE 编辑器在 python 脚本中启用 JS 语法突出显示 具体来说 我想要这样的东西 python stuff foo dict foo 其中 script 标签中的所有内容都针对 JS 进行格式化 其余部分针对 pytho
  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r

随机推荐

  • GPUImage 色度键滤镜

    我正在尝试使用 GPUImage 框架的色键过滤器 我按照 Filtershowcase 示例进行操作 但显然我错过了一些东西 因为它只显示视频 但没有绿屏抠出效果 这是我对摄像机 滤镜的初始化 camera GPUImageStillCa
  • 检测多 SIM 设备中来电的目标 SimCard

    我读过很多帖子并尝试过很多解决方案 但所有帖子的共同点是它们都已经过时了 至少我找不到适用于较新版本的 Android 的解决方案 Post 1 https stackoverflow com a 21454296 6444297 结果 i
  • 以 DRY 方式扩展 SLICK 表

    我有一个关于 Slick Scala 的有趣问题 我希望你们中的一位好心人能够帮助我 我有几个表 并通过扩展在 SLICK 案例类中 case class A case class B case class C 共享这些共同领域 id St
  • 使用Jquery查找父div的id

    我有一些像这样的html div p Volume p div
  • Rails - 操作电缆上的服务器阻塞

    我有一个在开发中完美运行的 Rails 应用程序 我已部署到服务器 应用程序加载并正确显示其登陆和关于页面 但是 当我使用 Action Cable 访问页面时 服务器会阻塞 从网页发出的最后一个请求与 Action Cable 相关 并且
  • Android 中背景为 AnimationDrawable 的按钮状态

    我在 Android 中制作自定义按钮已经有一段时间了 事情很简单 只需为按钮状态制作图像资源并为其制作一个选择器 一切都很顺利而且美好 现在我遇到了新的情况 我制作了一个可绘制的动画并将其设置为按钮的背景
  • 如何在 Eclipse 编辑器插件中显示语法错误

    如何在 Eclipse 编辑器插件中指示语法错误 例如 非法的标记序列 就像在 Eclipse Java 编辑器中一样 即通过红色蠕动下划线 滚动条上可以跳转到的红色标记以及解释性消息您将鼠标悬停在其中一个上吗 我正在为自定义文件格式 特别
  • 当子属性更改时如何触发 NgComponent 的更新

    我是 AngularDart 和 Dart 的完全初学者 我遵循了教程 但我似乎找不到答案 我有两个可以完美工作的 NgComponents
  • ggplot2——自动放大geom_smooth(使用coord_cartesian)

    geom smooth很棒 很大程度上是因为它平均了很多变化 然而 正因为如此 当它缩小时 很难看出它在 x 轴上的变化 我正在制作大约 1000 个我需要的图表ggplot2放大通过coord cartesian 然而 每个图表都有不同的
  • 使用时间选择器设置时间

    有两个编辑文本 单击编辑文本时间选择器应该弹出 如何使用时间选择器选择日期并在两个编辑文本中设置日期 我已经用谷歌搜索了 timepicker 但我不知道如何在单击 edittext 时启动时间选择器并且 设置时间 XML
  • Python:替换重音符号(é 到 e)、删除 [^a-zA-Z\d\s] 和 lower() 的有效方法[重复]

    这个问题在这里已经有答案了 使用Python 3 3 我想做以下事情 替换特殊字母字符 例如 e 锐号 和 o 带有基本字符的扬抑符 例如 从 到 o 删除除字母数字和字母数字之间的空格之外的所有字符 人物 转换为小写 这是我到目前为止所拥
  • pecl 安装以前的 php 版本

    我已将 MacBook 升级为 Mavericks 并破坏了我的开发环境 我现在遇到的问题是我的 pear pecl 仍然尝试安装我以前的 5 3 版本的 PHP 而不是版本 5 4 PHP版本 php v PHP 5 4 17 cli b
  • OSGi + 休眠

    数据库操作不是分散在四个 osgi 包中 而是全部执行略有不同的操作 我想创建一个 简单的 OSGi 包来负责所有持久性问题 我觉得这并不像听起来那么简单 因为 每个包都有唯一的类加载器 所以我真正感激的是如果有人知道此类问题的解决方案 我
  • 如何在 Rust 中对“选项”分配进行分组?

    我有一个代码块 需要一次分配多个可选变量 任何值出现的可能性都很小None 因此单独处理每个失败的案例并不是特别有用 目前我这样写支票 if let Some a foo a if let Some b foo b if let Some
  • 在 datagridview 中显示 Yes/NO 而不是 True/False

    datagridview以一种形式显示数据库表的内容 表类型的一列是布尔值 因此在datagridview中显示true false 但我想自定义它以显示是 否 你建议哪种方式 当谈到自定义格式时 我想到了两种可能的解决方案 1 手柄Cel
  • cakephp 3 用于关联数据的 queryBuilder

    我有2张桌子 Table 1 product prices id price description pack display created modified Table 2 payment infos id payer pay date
  • 如何将html保存到数据库字段

    我有一个小编辑器 http www leigeber com 2010 02 javascript wysiwyg editor 我的用户可以使用此编辑器的网页 我将 html 保存到我的数据库中 我在将此 html 保存到我的数据库时遇到
  • UICollectionView 中的多个部分

    我正在使用集合视图为我的医院构建一个 iOS 应用程序 但是 根据目的 我需要在专科诊所使用多个部分 如果只是 1 部分 我已经完成了代码 当我尝试将其分成 2 个部分时 它总是返回一个 nil 值 请检查我下面的代码 public fun
  • 什么是表分区?

    什么情况下我们应该使用表分区 一个例子可能会有所帮助 我们每天从 124 家杂货店收集数据 每天的数据都与其他日期完全不同 我们按日期对数据进行分区 这使我们能够更快地 因为oracle可以使用分区索引并快速消除所有不相关的天数 这还使备份
  • 如果嵌入需要正确的大括号嵌套,如何在 Ace 编辑器中进行嵌入突出显示?

    考虑以下 Razor 代码 div Model GetSomething div 显然 只有考虑到所有括号 才能正确识别 Razor 块 如果我进行朴素嵌入 基于 PHP 的做法 var RazorLangHighlightRules fu