[erlang-questions] Erlang Shell History: enabled.
Tue Nov 22 16:05:02 CET 2011
Agreed - think of the thousands of hours that could have been (and now will
be) saved with this! So cool...
inakanetworks.com - development consulting | skype cdepue | @chaddepue
On Tue, Nov 22, 2011 at 10:32 AM, Joe Armstrong <> wrote:
> Hip hip horray - "for he's jolly good fellow, ....
> Anything that saves my fingers is good.
> This is very nice - this is one of those small improvements that never
> gets done, only
> now it has been. I don't know how many times I've restarted the shell and
> cut and paste
> commands from the old shell ...
> Works like a charm - now all we need is "search history backwards for
> regexp with tab completion -
> and dwim mode". I'm a terrible typist so dwimming my inputs would be
> On Mon, Nov 21, 2011 at 7:23 PM, Fred Hebert <> wrote:
>> Hi everyone,
>> last week I was on a bus after work and decided to keep on going with a
>> small project started at the EUC hackathon -- adding shell history to the
>> Erlang shell.
>> I'm presenting the result of the quick hack:
>> It works by storing the lines entered beforehand in a DETS database in
>> your home directory (configurable). When you start a VM instance, it loads
>> up the old history and puts it into the shell so that the up and down
>> arrows let you use older function calls. It doesn't support things like h()
>> and v(N), given these have all kinds of weird quirks related to storing
>> ephemeral data on disk and loading them back after the fact (ports, refs).
>> I also do not support ctrl-r history search, only because that can be
>> implemented independently from the history bit.
>> It does support multiple nodes, should work fine without conflicts and at
>> worse will mix in the history between different shell jobs of a single node.
>> Options include:
>> - hist - true | false: enables or disables shell history. Default value
>> is true
>> - hist_file - string(): gives the path to where the history should be
>> saved. By default, the file sits in your home directory as
>> .erlang-history.$NODENAME. The node name will always be appended to the
>> file name as a way to manage conflicts and names.
>> - hist_size - 1..N: how many input lines the shell should remember. By
>> default, the value is set to 500.
>> - hist_drop - ["some", "string", ...]: lines you do not want to be saved
>> in the history. As an example, setting hist_drop to
>> ["q().","init:stop().","halt()."] will avoid saving most manual ways of
>> shutting down a shell. By default, no terms are dropped.
>> The options are all for the kernel application, so using the 'erl -kernel
>> hist_size 120' form or using -config files works.
>> DETS repairs work in case of a corrupted DB, although you can just drop
>> the file altogether if it takes too long. I don't drop files because I
>> didn't want to assume anyone did really want their history gone. I figure
>> creating a copy could have been fine, but I didn't think that far ahead.
>> There are no tests at this point. I might add a few of them later in the
>> future, testing the logic of a few private functions, but because the
>> group.erl file had no tests (that I could quickly find) in OTP, I decided
>> to go on with the simplest thing that can work. For this reason (no tests),
>> I assume this is *not* something worth submitting as patch to the
>> Erlang/OTP team.
>> Let me know what you think of it. Also: enjoy!
>> Have a nice day, everyone.
>> erlang-questions mailing list
> erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions