From 42fd569046f1523b52c3aaa653f773b21c39ead7 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 2 Jul 2017 11:31:06 -0400 Subject: [PATCH] =?UTF-8?q?coloration=20syntaxique=20pour=20MEF++=20dans?= =?UTF-8?q?=20l'=C3=A9diteur=20Atom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++ grammars/mefpp.cson | 187 +++++++++++++++++++++++++++++++++++ package.json | 17 ++++ snippets/language-mefpp.cson | 7 ++ 4 files changed, 234 insertions(+) create mode 100644 README.md create mode 100644 grammars/mefpp.cson create mode 100644 package.json create mode 100644 snippets/language-mefpp.cson diff --git a/README.md b/README.md new file mode 100644 index 0000000..faf84c6 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Package language-mefpp + +Apporte la coloration syntaxique pour les fichiers de mise en données MEF++ (.champs) dans atom. Une grande partie des thèmes disponibles dans atom devraient supporter la coloration (cependant seulement testé avec "One Dark" et "Chester"). + + +## Installation +Copier le dossier language-mefpp dans votre $HOME/.atom/packages + +## Contribuer +Les régles pour éditer la coloration se trouve dans language-mefpp/grammars/mefpp.cson + +Vous pouvez également rajouter des "snippets" dans language-mefpp/snippets/language-mefpp.cson + +Grâce au fichier style.less de atom et via un peu de CSS, il est également possible de rajouter des modifications locales, du style + +```css +atom-text-editor { + .syntax--comment { + color: #6d7682; + } +} +``` +Google est votre ami pour le reste ! diff --git a/grammars/mefpp.cson b/grammars/mefpp.cson new file mode 100644 index 0000000..c542e36 --- /dev/null +++ b/grammars/mefpp.cson @@ -0,0 +1,187 @@ +'scopeName': 'source.mefpp' +'name': 'MEF++' +'fileTypes': ['champs'] + +'patterns': [ + { + 'match': '\\b(champgeosafe|champgeolin|champgeoquad)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(scalaire|vectoriel1d|vectoriel2d|vectoriel3d|to2sym|to2nsym|to2nsymaconstant|to4elasticite)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(scallin|scalquad|scalhierarchique|scalquadbulle|scalcrourav|scalquadbulleh|scalsommetfaceelement|scalsommetface3d|scalsommetaretefacex3_3d|scalqc|scalmini|scalmini3d|scalhermite3dordre3|scalhermite3dordre3Inc|scalp0isop1|scalp0isop2|scalp1isop1bulle|scalp1isop2|scalp1isop2bulle|scalconstelem|scalp1discelem|scalp1discelemb|scalp1discelemc|scallinelem|scalquadelem|scalp1nc|scalquadbulle|scalquadbulleh)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(v2dlin|v2dp1nc|v2dmini|v2dp1isop1bulle|v2dp1isop2|v2dquad|v2dcrourav|v2dcubique|v2dquartique|v2dconstelem|v2dlinelem|v2dhierarchique|v2dquadbulle|v2dquadbulleh|v2dquadelem|v3dlin|v3dp1nc|v3dmini|v3dp1isop1bulle|v3dp1isop2|v3dquad|v3dcrourav|v3dcubique|v3dquartique|v3dconstelem|v3dlinelem|v3dhierarchique|v3dquadbulle|v3dquadbulleh|v3dqc|v3dquadelem)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(to2symlin|to2symquad|to2symconstelem|to2symlinelem|to2symquadelem|to2nsymlin|to2nsymquad|to2nsymconstelem|to2nsymlinelem|to2nsymquadelem)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(empilementto2|empilementto2nsym|empilementto4|empilementv3d|empilementv2d|empilementto2_discelem|empilementto2nsym_discelem|empilementto4_discelem|empilementv3d_discelem|empilementv2d_discelem)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'support.function.general.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'variable.parameter.function.mefpp' + } + { + 'match': '\\b(booleen|chainecar)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'string.other.mefpp' + '2': + 'name': 'source.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(alias)' + 'captures': + '1': + 'name': 'string.other.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(solveur_lin_petsc|solveur_nlin_petsc|solveur_inst_nlin_petsc|solveur_hp|solveurlinpetsc|solveurnlinpetsc|solveurinstnlinpetsc|solveurhp)\\s+(\\w+)' + 'captures': + '1': + 'name': 'storage.type.mefpp' + '2': + 'name': 'entity.name.section.mefpp' + '3': + 'name': 'source.mefpp' + '4': + 'name': 'constant.other.general.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(problemeef|asgnFonctionsTestSUPG)' + 'captures': + '1': + 'name': 'variable.other.object.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(fcts_supg|scalh_ugn|schemaintg|pp_\\w+)\\s+([^\\s]+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'variable.other.object.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(formulation)(\\w+)' + 'captures': + '1': + 'name': 'variable.other.object.mefpp' + '2': + 'name': 'variable.other.object.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(dirichlet|neumann\\w+|neumann)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)' + 'captures': + '1': + 'name': 'storage.type.mefpp' + '2': + 'name': 'support.function.general.mefpp' + '4': + 'name': 'constant.other.general.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(TF\\w+|tf\\w+)\\s+(\\w+)\\s+([^\\n]+)' + 'captures': + '1': + 'name': 'variable.other.object.mefpp' + '3': + 'name': 'constant.other.general.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'match': '\\b(resoud|execute|ajoute\\w+|format_exportation|asgnDegreInterpolation|asgnExporteToujoursMaillage|forceMiseAJourMaillage|ksp_\\w+|pc_\\w+|mat_\\w+)' + 'captures': + '1': + 'name': 'entity.name.section.mefpp' + 'name': 'meta.function.environment.general.mefpp' + } + { + 'begin': '(\\{)\\s+(\\w+|\\"\\w+\\")' + 'captures': + '1': + 'name': 'source.mefpp' + '2': + 'name': 'variable.other.object.mefpp' + 'end': '(\\})' + 'name': 'meta.embedded.block.source' + 'patterns': [ + { + 'include': '$self' + } + ] + } + { + begin: '//' + end: '\\n' + name: 'comment.line.double-slash.mefpp' + } + { + begin: '#' + end: '\\n' + name: 'comment.line.number-sign.mefpp' + } + { + begin: '/\\*' + beginCaptures: + '0': + name: 'punctuation.definition.comment.begin.mefpp' + end: '\\*/' + endCaptures: + '0': + name: 'punctuation.definition.comment.end.mefpp' + name: 'comment.block.mefpp' + } +] diff --git a/package.json b/package.json new file mode 100644 index 0000000..f7e8520 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "language-mefpp", + "version": "0.0.0", + "description": "Support de la syntaxe MEF++ dans Atom", + "engines": { + "atom": "*" + }, + "dependencies": {}, + "repository": { + "type": "git", + "url": "" + }, + "bugs": { + "url": "" + }, + "license": "MIT" +} diff --git a/snippets/language-mefpp.cson b/snippets/language-mefpp.cson new file mode 100644 index 0000000..1ae93df --- /dev/null +++ b/snippets/language-mefpp.cson @@ -0,0 +1,7 @@ +'.source.mefpp': + 'exportation': + 'prefix': 'exportation' + 'body': '\\\{ exportation \n\t\\\n\\\}' + 'Actions': + 'prefix': 'actions' + 'body': '\\\{ Actions \n\t\\\n\\\}'