Un autre éditeur de texte est possible : feuille de route

RastaPopoulos <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
Je synthétise là toutes mes recherches du jour.

Cahier des charges :
- Dans l'éditeur lui-même, avoir une vue plus sémantique de ce que l'on 
tape (WYSIWY Mean !)
- Pouvoir mettre en plein écran
- Pouvoir prévisualiser le vrai rendu HTML final (avec les images, 
modèles, etc)
- Pouvoir éditer côte à côte avec la prévisu
- Être pérenne et que le noyau puisse reconnaitre plusieurs syntaxes

Des gens ont fait ça pour Markdown mais malheureusement QUE pour 
Markdown. Mais en fait quasiment tout ce qui est important est géré en 
sous-main par CodeMirror !
https://simplemde.com/

Leur éditeur est en fait relativement simple :
=> c'est CodeMirror à 80%
+ ils ajoutent une CSS qui ne change pas juste la couleur pour la 
syntaxe, mais aussi la taille, pour les titres, gras, italique, etc
+ ils ajoutent une barre de boutons
+ ils ajoutent un système de prévisu (seul ou côte à côte)

CodeMirror est entre l'autre l'éditeur de code de Chrome et Firefox, et 
de milles autres choses. Il est à priori (très) pérenne, modulaire, et 
sait gérer plusieurs syntaxes en les déclarant dans un module JS (un 
"mode"). En plus de la reconnaissance de syntaxe, il gère déjà plein de 
plugins comme raccourcis claviers, continuer une liste quand on fait 
Entrée, etc.

Pour SPIP je propose cela :
- faire un mode CodeMirror qui gère uniquement les modèles SPIP, et 
peut-être les liens (ce qui permettrait de l'utiliser avec d'autres 
syntaxes que SPIP, notamment dans Markdown)
- faire un mode CodeMirror pour tous les trucs SPIP autre que modèles
- faire une CSS qui rend plus sémantique la saisie SPIP (agrandir les 
intertitres, etc)
- récupérer la CSS pour la saisie Markdown de SimpleMDE
- trouver une barre de boutons se basant déjà sur CodeMirror : les 
boutons ne feraient qu'appeler des comportements CodeMirror
- re-implémenter notre système de prévisu + de fullscreen et côte à côte 
dans cette nouvelle barre (= comme SimpleMDE !), sachant que nous la 
prévisu ça appelle un truc serveur, alors que SimpleMDE il semble que 
c'est tout en JS client.

Je pense que le plus gros est de faire les deux modes de syntaxes SPIP 
pour CodeMirror. Mais une personne a fait un projet très cool qui 
apparemment fonctionne déjà : une déclaration de grammaire en JSON, 
beaucoup mieux que la programmation JS des modes de CodeMirror :
https://github.com/foo123/codemirror-grammar
Et ça marche !

Pour le reste, on doit pouvoir s'inspirer de SimpleMDE mais en 
généralisant :
1) Ce serait bien d'avoir une barre de bouton pour SPIP *et* pour 
Markdown en même temps (en fait avoir deux déclarations, suivant le mode 
voulu)
2) Avoir notre prévisu-serveur.

Comme on le remarque, je propose deux choses qui permettent de garder 
Markdown sous la main :
1) séparer la déclaration des modèles (et peut-être des liens)
2) avoir deux déclarations de boutons

Cela permettra d'office, avec le même éditeur, la même base commune, de 
savoir gérer à la fois SPIP et Markdown. Cela me semble important à 
prendre en compte dès le début.

Je vais peut-être garder tout ça dans un ticket…

-- 
RastaPopoulos

_______________________________________________
liste: http://listes.rezo.net/mailman/listinfo/spip-dev
doc: http://www.spip.net/
dev: http://trac.rezo.net/trac/spip/
irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.