Gfishline est un prompt Linux inspiré de fish.
				
			
		| .gitignore | ||
| completer.go | ||
| fishline.go | ||
| formater.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
| splitter.go | ||
gfishline
Gfishline est un prompt Linux inspiré de fish.
Il supporte la coloration syntaxique et l’autocomplétion.
Utilisation typique
Gfishline peut être utilisé de la façon suivante :
package main
import (
    "fmt"
    "os"
    "gitea.zaclys.net/bvaudour/gfishline"
)
func main() {
    prompt := "\033[1;31m> \033[m"
    fl := gfishline.New()
    // Les deux lignes ci-dessous permettent d’utiliser la complétion et le formatage par défaut.
    //
    // Pour une complétion plus élaborée, utilisez fl.SetCompleter(cb) où cb est une fonction de la forme
    // `func (word []string, wordIndex []string, isSpaceIndex bool) (choices []string)`.
    //
    // Pour un formatage plus élaboré, utilisez fl.SetFormater(cb) où cb est une fonction de la forme
    // `func (in [string) (out [string])`.
    fl.SetCommands("help", "exit", "print")
    fl.SetOptions("--help", "-h")
    defer fl.Close()
    for {
        input := fl.Prompt(prompt) // fl.PromptPassword(prompt) pour masquer ce qui est saisi
        if result, ok := input.Ok(); ok {
            //@TODO Do some stuff with input
            if result == "exit" {
                return
            }
        } else if err, ok := input.Err(); ok {
            fmt.Printf("\033[1,31mErreur système : %s\033[m\n", err)
            os.Exit(1)
        }
    }
}
Raccourcis clavier disponibles
| Raccourci clavier | Action | 
|---|---|
| Ctrl+A, Home | Retour au début de la saisie | 
| Ctrl+E, End | Retour à la fin de la saisie | 
| Ctrl+B, Left | Déplacement d’un caractère vers la gauche | 
| Ctrl+F, Right | Déplacement d’un caractère vers la droite | 
| Alt+B, Ctrl+Left | Déplacement d’un mot vers la gauche | 
| Alt+F, Ctrl+Right | Déplacement d’un mot vers la droite | 
| Ctrl+U | Suppression de tous les caractères du début de la ligne au curseur (curseur non compris) | 
| Ctrl+K | Suppression de tous les carctères du curseur (compris) à la fin de la ligne | 
| Ctrl+D (si saisie commencée), Del | Suppression du caractère sous le curseur | 
| Ctrl+D (si ligne vide) | Termine l’application (EOF) | 
| Ctrl+H, Backspace | Suppression du caractère avant le curseur | 
| Alt+D, Alt+Del | Suppression du prochain mot | 
| Alt+Backspace | Suppression du précédent mot | 
| Ctrl+C | Termine l’application (avec erreur) | 
| Ctrl+P, Up (si ligne vide au départ) | Remonte à l’historique précédent | 
| Ctrl+N, Down (si ligne vide au départ) | Descend dans l’historique | 
| Ctrl+R, Up (si ligne non vide) | Recherche dans l’historique (par préfixe de ligne) à partir de la fin | 
| Ctrl+S, Down (si ligne non vide) | Recherche dans l’historique (par préfixe de ligne) à partir du début | 
| Ctrl+Y | Copie le dernier élément supprimé | 
| Alt+Y | Remonte dans l’historique des éléments supprimés et les copie (implique Ctrl+Y précédemment lancé) | 
| Ctrl+G, Cancel | Annule les dernières actions temporaires (historique, recherche, copie, historique de copie) | 
| Tab, Up (si complétion commencée) | Complétion suivante | 
| Shift+Tab, Down (si complétion commencée) | Complétion précédente | 
| Left (si complétion commencée) | Complétion à gauche | 
| Right (si complétion commencée) | Complétion à droite |