2014-07-09 5 views
4

Les fichiers nouvellement créés dans Atom sont toujours "Texte brut". Comment puis-je changer cela pour que les nouveaux fichiers soient automatiquement dans une autre langue, par exemple "Shell Script (Bash)"? Je veux le faire car l'indentation automatique ne fonctionne pas avec les fichiers texte brut.Définir la langue par défaut pour les nouveaux fichiers

Répondre

5

Également ce problème, il y a un plugin appelé default-language qui va le faire pour vous.

Recherche atome pour la langue par défaut, installez et ouvrez ses paramètres. Tapez le nom de la langue que vous voulez par défaut Atom, par exemple. Shell Script (en cas de doute, copiez dans le menu de sélection de la langue) dans le champ Langue par défaut. La prochaine fois que vous ouvrirez un script sans extension (ou shebang), il sera défini par défaut sur la langue que vous avez définie.

5

Le code suivant, ajouté à votre init.coffee, fera ce que vous vous demandez:

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')) 

choses à noter:

  • Le fichier est init.coffee où vous pouvez personnaliser Atom sans avoir à écrire un package
  • La méthode observeTextEditors définit un rappel qui est appelé à chaque création TextEditor pour les éditeurs actuellement ouverts et futurs
  • Le code ci-dessus:
    1. Vérifie la grammaire que l'éditeur a été créé avec
    2. Si et seulement si elle est la valeur par défaut (« null ») la grammaire, il définit la grammaire de l'éditeur à la grammaire Shell
+0

Ceci provoque une erreur 'TypeError: Impossible d'appeler la méthode 'getScore' de undefined', voir: http://pastebin.com/yzN2hPUu – shrx

+0

@shrx Intéressant, je l'ai eu avec d'autres itérations du code. Ce pourrait être un problème de synchronisation où les grammaires ne sont pas encore chargées. Je vais devoir revoir cela plus tard. – Lee

+0

des nouvelles à ce sujet? – shrx

1

Jetez un oeil à ce morceau de code: (vous pouvez pouvez changer « text.html.basic » à la syntaxe selon vous avez besoin)

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') 

Pour référence s'il vous plaît voir: Descripteurs Scope @https://atom.io/docs/latest/advanced/scopes-and-scope-descriptors

1

Tout d'abord, CTRL + MAJ + L est votre ami. Ce n'est malheureusement pas une solution permanente, mais agréable à connaître.

Bien sûr, nous préférerions une solution plus permanente. Quelques autres réponses sont maintenant obsolètes en raison des changements d'API dans Atom. Voici une version plus à jour. Inspiration est venu initialement de this discussion, mais les autres réponses semblent suivre le même concept.

place dans votre fichier 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 

Fondamentalement, vous définissez ont un éventail de types de fichiers, et les grammaires (Alias ​​de mise en évidence de la syntaxe) que vous souhaitez les associer. Trouvez chaque éditeur, découvrez s'il a déjà une grammaire sélectionnée, et si ce n'est pas le cas, essayez de lui en donner une si nous en trouvons une.

Le seul problème que j'ai eu avec cela est que la coloration syntaxique ne fonctionne que si vous ouvrez les fichiers après vous avez déjà lancé Atom; Si vous ouvrez un fichier qui entraîne le lancement d'Atom (disons en double-cliquant sur son icône dans votre système d'exploitation préféré), la mise en évidence de la syntaxe n'aura pas lieu pour ce fichier tant que vous ne l'aurez pas rouvert.

0

Vous devez créer un mappage dans votre fichier config.cson.

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

Pour mapper les fichiers .sh et .shell à la syntaxe du script shell.

Questions connexes