Atom editor 为新文件设置默认语言

Atom editor 为新文件设置默认语言,atom-editor,Atom Editor,Atom中新创建的文件总是“纯文本”。如何更改此设置,使新文件自动使用另一种语言,例如“Shell脚本(Bash)”?我之所以要这样做,是因为自动缩进不适用于纯文本文件。以下代码添加到您的init.coffee,将满足您的要求: atom.workspace.observettexteditors(编辑器)-> 默认范围='source.shell' original=editor.getGrammar() #如果编辑器具有“null”语法(也称为unset) 如果是原创的?原文是atom.gr

Atom中新创建的文件总是“纯文本”。如何更改此设置,使新文件自动使用另一种语言,例如“Shell脚本(Bash)”?我之所以要这样做,是因为自动缩进不适用于纯文本文件。

以下代码添加到您的
init.coffee
,将满足您的要求:

atom.workspace.observettexteditors(编辑器)->
默认范围='source.shell'
original=editor.getGrammar()
#如果编辑器具有“null”语法(也称为unset)
如果是原创的?原文是atom.grammars.grammarForScopeName('text.plain.null grammar')
默认语法=atom.grammars.grammarForScopeName(默认范围)
如果默认语法?#检查所需语法是否已加载
编辑器.setGrammar(默认语法)
其他的
#语法尚未加载,因此在加载语法时添加回调
回调=atom.grammars.onDidAddGrammar(语法)->
如果grammar.id是默认的\u范围
#加载语法后,设置它并处理回调
编辑:setGrammar(语法)
callback.dispose()
注意事项:

  • init.coffee
    文件中,您可以自定义Atom,而无需编写包
  • observettexteditors
    方法为当前打开的和未来的编辑器设置一个回调,在每个
    TextEditor
    创建时调用该回调
  • 上述代码:
  • 检查创建编辑器时使用的语法
  • 当且仅当它是默认(“null”)语法时,它会在加载后将编辑器的语法设置为Shell语法
  • 处理回调后,检查语法加载
这将解决在新窗口中打开的第一个文件出现的
类型错误:无法调用未定义的
的方法“getScore”


要默认为不同的语法,只需更改
default\u scope='source.shell'
行以使用任何语法的作用域。

看看这段代码:(然后可以将'text.html.basic'更改为所需的语法)


参考请参见:范围描述符@

首先,CTRL+SHIFT+L是您的朋友。不幸的是,这不是一个永久的解决方案,但很高兴知道

当然,我们更喜欢一个更持久的解决方案。由于Atom中API的变化,其他几个答案现在已经过时了。下面是一个更为更新的版本。灵感最初来自于,但这里的其他答案似乎也遵循同样的概念

将其放入init.coffee文件(
文件->打开init脚本
):

基本上,您定义了一个文件类型数组,以及要与之关联的语法(也称为语法突出显示)。找到每个编辑器,找出它是否已经有一个选定的语法,如果没有,尝试给它一个,如果我们找到一个


我遇到的一个问题是,只有在启动Atom之后打开文件时,语法高亮显示才有效;如果你打开一个导致Atom启动的文件(比如双击你最喜欢的操作系统中的图标),在你重新打开它之前,该文件的语法高亮显示将不会生效。

也有这个问题,有一个名为的插件可以帮你做到这一点


在atom中搜索默认语言,安装并打开其设置。在默认语言字段中键入希望Atom默认使用的语言的名称,例如Shell脚本(如果有疑问,请从语言选择菜单复制)。下次打开没有扩展名(或shebang)的脚本时,它将默认为您设置的语言。

您需要在
config.cson
文件中创建映射

"*":
  core:
    customFileTypes:
      "source.shell": [
         "sh"
         "shell"
      ]

用于将.sh和.shell文件映射到shell脚本语法。

这会导致一个错误
TypeError:无法调用未定义的方法“getScore”,请参阅:@shrx有趣,我在代码的其他迭代中得到了这个结果。这可能是一个语法尚未加载的时间问题。稍后我还要再看一看。
CTRL+SHIFT+L
就是我要找的。谢谢@vee
extname = require("path").extname
fileTypes =
  ".wxs": "text.xml"
  ".wxi": "text.xml"
  ".wixobj": "text.xml"

nullGrammar = atom.grammars.selectGrammar("text.plain.null-grammar")
atom.workspace.observeTextEditors (editor) ->
  grammar = atom.grammars.selectGrammar(fileTypes[extname(editor.getPath())])
  editor.setGrammar grammar  if editor.getGrammar() is nullGrammar and grammar isnt nullGrammar
"*":
  core:
    customFileTypes:
      "source.shell": [
         "sh"
         "shell"
      ]