haskeline-0.6.3: A command-line interface for user input, written in Haskell.

System.Console.Haskeline.Completion

Contents

- Word completion
- Filename completion

Synopsis

- type CompletionFunc m = (String, String) -> m (String, [Completion])
- data Completion = Completion {
  - replacement :: String
  - display :: String
  - isFinished :: Bool
  }
- noCompletion :: Monad m => CompletionFunc m
- simpleCompletion :: String -> Completion
- completeWord :: Monad m => Maybe Char -> [Char] -> (String -> m [Completion]) -> CompletionFunc m
- completeWordWithPrev :: Monad m => Maybe Char -> [Char] -> (String -> String -> m [Completion]) -> CompletionFunc m
- completeQuotedWord :: Monad m => Maybe Char -> [Char] -> (String -> m [Completion]) -> CompletionFunc m -> CompletionFunc m
- completeFilename :: MonadIO m => CompletionFunc m
- listFiles :: MonadIO m => FilePath -> m [Completion]
- filenameWordBreakChars :: String

# Documentation

type CompletionFunc m = (String, String) -> m (String, [Completion])

Performs completions from the given line state.

The first `String` argument is the contents of the line to the left of the cursor, reversed. The second `String` argument is the contents of the line to the right of the cursor.

The output `String` is the unused portion of the left half of the line, reversed.

data Completion

Constructors

Completion |

Fields

replacement :: String

  Text to insert in line.

display :: String

  Text to display when listing alternatives.

isFinished :: Bool

  Whether this word should be followed by a space, end quote, etc.

Instances

Show Completion |

noCompletion :: Monad m => CompletionFunc m

Disable completion altogether.

simpleCompletion :: String -> Completion

Create a finished completion out of the given word.

# Word completion

completeWord

Arguments

:: Monad m |
=> Maybe Char | An optional escape character
-> [Char] | Characters which count as whitespace
-> (String -> m [Completion]) | Function to produce a list of possible completions
-> CompletionFunc m |

A custom `CompletionFunc` which completes the word immediately to the left of the cursor.

A word begins either at the start of the line or after an unescaped whitespace character.

completeWordWithPrev

Arguments

:: Monad m |
=> Maybe Char | An optional escape character
-> [Char] | Characters which count as whitespace
-> (String -> String -> m [Completion]) | Function to produce a list of possible completions. The first argument is the line contents to the left of the word, reversed. The second argument is the word to be completed.
-> CompletionFunc m |

A custom `CompletionFunc` which completes the word immediately to the left of the cursor, and takes into account the line contents to the left of the word.

A word begins either at the start of the line or after an unescaped whitespace character.

completeQuotedWord

Arguments

:: Monad m |
=> Maybe Char | An optional escape character
-> [Char] | Characters which set off quotes
-> (String -> m [Completion]) | Function to produce a list of possible completions
-> CompletionFunc m | Alternate completion to perform if the cursor is not at a quoted word
-> CompletionFunc m |

# Filename completion

completeFilename :: MonadIO m => CompletionFunc m

listFiles :: MonadIO m => FilePath -> m [Completion]

List all of the files or folders beginning with this path.

filenameWordBreakChars :: String