On Sat, 14 Mar 2015 19:45:32 -0400 Richard Hipp <drh at sqlite.org> wrote:
> On 3/14/15, Skip Montanaro <skip at pobox.com> wrote: > > > > > Then I retrieved that statement with Ctl-P, then clear the id with > > Ctl-B ESC-Del. I then entered the id of the next record to correct, > > backed up and adjusted the date, and hit enter. > > > > Imagine my surprise when what I actually typed (without checking, > > obviously!) was something like this: > > > > update swimmeet set end="1991-04-21" where 4193; > > > > The sqlite3 command-line shell program will link against a variety of > (third-party) command-line editing libraries: > > (1) GNU readline > (2) Editline > (3) Linenoise (https://github.com/antirez/linenoise) ... > For reference, I am using /usr/bin/sqlite3 on a Mac > > Do you know which one your particular build of sqlite3 is using? Survey says? Editline. $ ldd $(which sqlite3) | sed 's/(..*$//' /usr/bin/sqlite3: /usr/lib/libncurses.5.4.dylib /usr/lib/libsqlite3.dylib /usr/lib/libedit.2.dylib /usr/lib/libSystem.B.dylib The manpage for editline doesn't define what characters comprise a word. GNU readline defines word characters as "alphanumeric", presumably [[:alnum:]]. Source code for editline that I have handy includes this definition in chared.c: /* ce__isword(): * Return if p is part of a word according to emacs */ protected int ce__isword(Int p) { return Isalnum(p) || Strchr(STR("*?_-.[]~="), p) != NULL; } These appear to be the word-break characters according to edltline (on NetBSD). To the OP: Your intuition that '=' is not a word character seems to be right. To investigate further ISTM you need the source code for your library. I don't see any configuration option that SQLIte could use, even if desired. --jkl