I see. I had assumed (incorrectly) that )ERASE and ⎕EX have the same effect.
IIUC, the names interned by any definition are available to tab completion until they are )ERASEd, even if they are no longer associated with an APL object in the workspace. I noticed that tab completion sees even names that have only ever been available as localized names in a function.
Is there a portable way to unintern a name from the symbol table? The ISO standard doesn't seem to specify whether
⍎')system_command ...'
should be supported.
On Mon, Jun 27, 2016 at 01:58:07PM +0200, Juergen Sauermann wrote:
Hi David,
⎕EX only deletes the current-referent of a name (= the name at the
top of the )SI stack) but not its global-referent.
If you use )ERASE instead of ⎕EX then tab-completion will recognize this.
/// Jürgen
On 06/27/2016 07:05 AM, David B. Lamkins wrote:
Tab completion doesn't know that a symbol has been removed.
In the following, <Tab> is the tab character.
⎕fx 'foo'
foo
f<Tab>
⎕ex 'foo'
1
⎕nc 'foo'
0
f<Tab>
VALUE ERROR
foo
^