2014-07-09 169 views
4

Atom中新创建的文件始终为“纯文本”。我怎样才能改变这个,以便新的文件将自动以另一种语言,例如“Shell Script(Bash)”?我想这样做,因为自动缩进不适用于纯文本文件。设置新文件的默认语言

回答

5

也有这个问题,有一个名为default-language的插件会为你做这个。

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

5

下面的代码,添加到您的init.coffee,会做什么你问:

atom.workspace.observeTextEditors (editor) -> 
    original = editor.getGrammar() 
    if original? and original is atom.grammars.grammarForScopeName('text.plain.null-grammar') 
    editor.setGrammar(atom.grammars.grammarForScopeName('source.shell')) 

注意事项:

  • init.coffee文件是可以自定义的Atom,而不必编写程序包
  • observeTextEditors方法设置回调,该回调在为当前打开和将来的编辑创建时调用
  • 上面的代码:
    1. 检查该编辑用
    2. 如果创建且仅当它是默认的(“零”)语法,它集编辑器的语法壳牌语法文法
+0

这导致错误'TypeError:无法调用未定义的方法'getScore',请参阅:http://pastebin.com/yzN2hPUu – shrx

+0

@shrx有趣的是,我通过代码的其他迭代得到了这一点。这可能是语法尚未加载的时间问题。我稍后必须再看一遍。 – Lee

+0

关于此的任何消息? – shrx

1

看一看这段代码:(您可以就可以改变“text.html.basic”你需要哪个语法)

editor = atom.workspace.getActiveTextEditor() 
cursor = editor.getLastCursor() 
valueAtCursor = atom.config.get(cursor.getScopeDescriptor(), 'my-package.my-setting') 
valueForLanguage = atom.config.get(editor.getRootScopeDescriptor('text.html.basic'), 'my-package.my-setting') 

参考请参阅:范围描述符@https://atom.io/docs/latest/advanced/scopes-and-scope-descriptors

1

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

当然,我们更喜欢更持久的解决方案。由于Atom中的API更改,其他一些答案现在已经过时。以下是更新的版本。灵感最初来自this discussion,但这里的其他答案似乎也遵循相同的概念。

将此放在您的init.coffee文件(File -> Open Your Init Script):

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 

基本上,你必须定义文件类型的数组,并且要与他们相关联的语法(AKA语法高亮)。找到每个编辑器,找出它是否已经有选定的语法,如果没有,尝试给它一个,如果我们找到一个。

我遇到过的一个问题是,语法突出显示只适用于在已经启动Atom后打开文件;如果你打开一个导致Atom启动的文件(比如说双击它最喜欢的操作系统中的图标),那么在你重新打开它之前,语法高亮将不会用于该文件。

0

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

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

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