根据ace中的文件路径确定语言(模式)

determine language (mode) by filepath in ace

本文关键字:语言 模式 路径 ace 文件 根据      更新时间:2023-09-26

我正在使用Ace-Editor修改几个不同的文件。为了确定正确的模式,我编写了一个简单的开关,如下所示:

function getMode(path){
    switch( getFileExtension(path) ){
        case "html": return "html";
        case "htm":  return "html";
        case "css":  return "css";
        case "bat":  return "batchfile";
        ...
        default: return "text";
    }
}

但是,为了涵盖ace中所有支持的语言,我必须经常更新这个列表。

如果Ace能告诉我哪个模式是正确的,那就太好了,所以我在Ace中找到了function getModeForPath(path): https://github.com/ajaxorg/ace/blob/master/lib/ace/ext/modelist.js#L11

如何在我自己的代码中调用和使用这个函数?或者说这个函数应该怎么用?

编辑:

我想做的是,做一个小的下拉框,用户可以在其中选择语言。默认语言由文件路径决定。(类似sublime)

如果您使用的是ace构建库中的预构建版本,请将src/ext-modelist.js文件包含在ace中,然后执行

var modelist = require("ace/ext/modelist")
modelist.getModeForPath(path)

参见https://github.com/ajaxorg/ace/blob/v1.1.5/demo/kitchen-sink/demo.js#L306-L311