Chamo est un éditeur de code source, même s'il peut être utilisé pour éditer n'importe quel fichier texte. Un système de "vues" permet d'éditer certains fichiers dans des "vues" spécialisées.
Chamo a une section dans la FAQ et une page de trucs et astuces.
Chaque fenêtre peut être, selon les besoins, découpée verticalement ou horizontalement (à la emacs) ou bien en utilisant des onglets (à la gedit). La navigation entre les vues et les onglets est facilitée par des commandes associables à des combinaisons de touches. Il est possible de sauvegarder la disposition et le découpage des fenêtres ainsi que le fichiers ouverts, de façon à retrouver la même disposition lors du prochain lancement de l'éditeur.
Un "minibuffer" à la emacs avec la complétion est utilisé pour lancer les commandes nécessitant des arguments (ouverture de fichier, recherche/remplacement, ...).
La vue d'édition de texte utilise GtkSourceView 2.X, et offre les fonctionnalités suivantes: support de l'internationalisation (UTF-8), accentuation de la syntaxe (par les couleurs, la fonte, ...) selon le langage (OCaml, C, C++, Makefile, ..., ou votre propre description de langage), gestion des Undo/Redo, gestion du presse-papier, recherche incrémentale avant/arrière, recherche/remplacement, gestion de l'historique des parties supprimées ("kill-ring"), ....
Un système d'association de code à des commandes et d'évaluation de commandes (sous une forme similaire aux commandes shell command arg1 arg2 ...) permet d'ajouter ses propres fonctionnalités. Il est possible d'ajouter et modifier tous les raccourcis clavier, et ceci spécifiquement pour chaque type de vue.
Dans la version bytecode de Chamo, la commande "eval" prend en argument du code OCaml qui est interprété et permet de faire toutes les modifications que l'on souhaite dans l'éditeur: ajout de modes, redéfinition de commandes, ... de la même façon qu'en Lisp dans Emacs. La commande "eval_file" évalue tout le code présent dans un fichier en argument.
Un mémo des raccourcis clavier par défaut est disponible ici
.
A compléter...
![]() | La vue "tdl" permet d'éditer des fichiers "todo list", au format utilisé par la bibliothèque Tdl incluse dans Cameleon. |
![]() | Un minibuffer semblable à celui d'emacs est utilisé pour les arguments des commandes (ouverture de fichier, changement de buffer, recherche, ...) et effectue la complétion automatique. |
| Divers fichiers permettent de configurer les raccourcis clavier. Ici il s'agit du fichier de configuration des fenêtres en général. Les raccourcis clavier pour les fenêtres sont complétés par ceux de la vue active, paramétrables eux aussi. | Fichier ~/.cameleon2/chamo.gui:
(* The size of histories in minibuffer *) minibuffer_history_size = 50 (* The key combination to use to reset the key stroke state *) abort_binding = "C-g" (* Common key bindings for windows *) window_key_bindings = [(["C-x"; "C-c"], close_active_window); (["C-n"], new_window); (["C-x"; "C-s"], save_active_view); (["C-x"; "C-w"], save_active_view_as); (["C-x"; "C-f"], open_file); (["C-b"], cycle_view); (["C-Tab"], cycle_tab); (["SC-Tab"], rev_cycle_tab); (["C-x"; "C-t"], new_tab); (["C-v"], split_vertically); (["C-x"; "S-3"], split_vertically); (["C-h"], split_horizontally); (["C-x"; "S-2"], split_horizontally); (["C-x"; "S-0"], destroy_active_view); (["C-x"; "C-x"; l], print_key_bindings); (["C-y"], paste); (["C-c"], copy); (["C-w"], cut); (["A-x"], prompt_command)] |
La version native de Chamo ne permet pas d'interpréter du code OCaml et donc de modifier au vol son comportement. Il est cependant possible de créer sa propre version native de Chamo incluant des modifications personnelles. L'outil make_my_chamo est fait pour ça. Ce script permet de compiler une version de chamo en incluant des modules supplémentaires de façon à étendre ou personnaliser le comportement de Chamo tout en gardant le bénéfice du code natif.
L'utilisation est la suivante:
make_my_chamo -o outfile [options] module1 [module2 [module3 ...]]
Par exemple, la commande suivante crée un exécutable natif ~/bin/mychamo.x incluant le module de configuration par défaut ~/.cameleon2/chamo_init.ml:
make_my_chamo -o ~/bin/mychamo.x ~/.cameleon2/chamo_init.ml
Le script lance une commande de compilation utilisant le compilateur OCaml générant du code natif (ocamlopt). Toutes les options de ce compilateur sont utilisables dans les paramètres de make_my_chamo.
