Skip to content
Linenoise bindings for Perl 6
C Perl 6 Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
.gitignore
.gitmodules
.travis.yml
Build.pm
LICENSE
META6.json
Makefile.in
README.md
constant-helper.c
fill-constants.pl
linenoise.c
linenoise.h

README.md

Name

Linenoise

Author

Rob Hoelz

Synopsis

use Linenoise;

while (my $line = linenoise '> ').defined {
    say "got a line: $line";
}

Description

This module provides bindings to linenoise (https://github.com/antirez/linenoise) for Perl 6 via NativeCall.

Installation

You can install via zef:

$ zef install Linenoise

Note that since this module has binary components, you'll need a working C compiler. Everything you need can be found under the build-essential package on Debian-based Linux distributions, such as Ubuntu.

Examples

Basic History

use Linenoise;

my constant HIST_FILE = '.myhist';
my constant HIST_LEN  = 10;

linenoiseHistoryLoad(HIST_FILE);
linenoiseHistorySetMaxLen(HIST_LEN);

while (my $line = linenoise '> ').defined {
    linenoiseHistoryAdd($line);
    say "got a line: $line";
}

linenoiseHistorySave(HIST_FILE);

Tab Completion

use Linenoise;

my @commands = <help quit list get set>;

linenoiseSetCompletionCallback(-> $line, $c {
    my ( $prefix, $last-word ) = find-last-word($line);

    for @commands.grep(/^ "$last-word" /).sort -> $cmd {
        linenoiseAddCompletion($c, $prefix ~ $cmd);
    }
});

while (my $line = linenoise '> ').defined {
    say "got a line: $line";
}
You can’t perform that action at this time.