# jprefixmatch.tcl

## Introduction

The jprefixmatch.tcl library is distributed as part of the jstools package. It contains procedures to do prefix expansion like that done for filename completion by `tcsh`(1) and Emacs, or for command disambiguation under VMS.

This document describes jprefixmatch.tcl version 4.0/4.0.

## Usage

### Accessing the Library

In order to use the jprefixmatch.tcl library, it (and any other libraries it depends on) must be in your Tcl `auto_path`, described in `tclvars`(n). Information about how to arrange that, and other conventions common to the jstools libraries, is in the Usage section of The jstools Libraries.

## Credits and Copyright

### Author

Jay Sekora

`js@calumet.org`

`http://shore.net/~js/`

### Copyright

The library is copyright © 1992-1995 by Jay Sekora, but may be freely redistributed under the conditions at the top of the file.

## Overview

### Procedures

`j:longest_match` - find the longest common initial string in a list

`j:expand_filename` - expand filename prefix as much as possible

## j:longest_match

### Usage

`j:longest_match` l

### Argument

l - list of strings

### Description

This procedure finds and returns the longest common initial string in list l. If there's no common initial string, it returs the empty list `{}`. It's used by `j:expand_filename` for filename completion, but could also be used for things like handling abbreviations.

## j:expand_filename

### Usage

`j:expand_filename` f

### Argument

f - initial filename prefix to be expanded

### Description

This procedure tries to do filename completion on the prefix f, as in Emacs and `tcsh`. It returns the longest initial substring common to those filenames in the current directory that match f. It also can be used for globbing; if f contains globbing metacharacters (``*`', ``?`', initial ``~`', or ``[`...`]`'), they will be expanded as in the shell.

## Bugs and Limitations

* The expansion of globbing metacharacters, while occasionally useful, is unlikely to be intuitive to a user. (You might want to check for these in your code before calling `j:expand_filename`.)

``