2017-01-19 2 views
0

Utilisation de la version pré-emballés Ace Editor et essayer d'ajouter un code de base mettant en évidence (mots-clés personnalisés) à l'éditeur JavaScript Ace.code éditeur ace point fort notation objet

S'il vous plaît ne pas trop lire dans l'exemple, c'est purement un exemple pour éviter de publier des données sensibles.

Mots-clés exemple: ajouté à la keywordMapper:

"options": "settings|options|global|user"; 

et a ajouté quelques css à la page qui l'utilise:

.ace-eclipse .ace_options {\ 
    color: rgb(255,20,147);\ 
}\ 

je me suis dit qu'il serait tout simplement mettre en évidence les keywrods si je peux obtenir ceci (sans mettre en évidence les points):
enter image description here

Mais rien que j'ai essayé fonctionne. Je peux seulement obtenir le premier mot (pre dot: '.') Correspondant. ".settings" ne correspondra pas (on pourrait le penser).

L'idée est que je vais mettre en œuvre complète automatique en fonction du jeton précédent, par exemple tapez "paramètres". pour obtenir une liste contenant "options" (et d'autres choses), cliquez sur les options et entrez "." pour obtenir une liste contenant "global | user", un autre "." pour montrer tous les paramètres dans chaque objet respectif.

J'ai expérimenté un peu en utilisant les règles, mais qui est assez déroutant, et le plus proche que je peux obtenir est-il travailler avec des points étant mis en évidence.

Toute aide est appréciée.

P.s. Avait un coup à l'exemple <![CDATA[ sur le site principal de l'ACE et ne pouvait même pas obtenir le code qu'ils affichent au travail.

C'est si déroutant et il n'y a pratiquement aucune documentation! Je ne peux pas aider, mais pense qu'il ne peut pas être si difficile, car il ya une tonne de "utilisateurs du monde réel" sur leur site.

Merci.

Répondre

1

keywordMapper est uniquement pour les mots-clés et des identifiants de haut niveau. Toutes les propriétés après le point sont traitées dans https://github.com/ajaxorg/ace/blob/v1.2.6/lib/ace/mode/javascript_highlight_rules.js#L210. vous devez donc ajouter une autre règle avant qu'il aime:

 { 
      token : "options", 
      regex : "settings|options|global|user" 
     }, 

Vous pouvez utiliser https://ace.c9.io/tool/mode_creator.html pour expérimenter avec le surligneur

Mais pour autocomplétion vous n'avez pas vraiment besoin de mettre en évidence des jetons, vous pouvez simplement utiliser leurs valeurs , au lieu des types.

+0

Merci pour le conseil, qui est l'un regex monstrueux, je ne l'ai dit, mais je l'ai essayé d'ajouter aux règles « start »; le jeton: "options" avec un peu de rexex mais pas de chance, suggérez-vous que je doive ajouter le code au jeton "support.function" dans la section "property" des règles? - La saisie semi-automatique et la mise en surbrillance sont également des exigences pour moi - j'allais utiliser l'événement editor.getSession() .on ('change' ...) pour appliquer mon autocomplétion personnalisée - y a-t-il un meilleur moyen d'y parvenir? – Steve

+0

a ajouté un peu plus d'informations sur les surligneurs à la réponse, pour voir http://stackoverflow.com/a/30047705/1743328 ont terminé, vous n'avez pas besoin d'utiliser le changement d'écoute pour ce –

+0

je vois maintenant que ma compréhension de cet objet était Vraiment loin.Merci pour le lien, il a fonctionné comme prévu suite à vos conseils, et aussi merci pour le lien vers la question de saisie semi-automatique. On dirait exactement ce dont j'ai besoin (une solution non "hacky"). – Steve