ksh93 / ksh

ksh 93u+m: KornShell lives! | Latest release: https://github.com/ksh93/ksh/releases
Eclipse Public License 2.0
185 stars 31 forks source link

support HISTCONTROL as in bash #761

Open McDutchie opened 3 months ago

McDutchie commented 3 months ago

In https://github.com/att/ast/issues/1500, @nsoci wrote:

Is it not an issue with KSHbut it will be nice if KSH support "ignore duplicates" . Thank you

I agree it would be nice to have, and we can see if we can implement the other HISTCONTROL features as well. Since it's a whole new feature, it will be for ksh 93u+m/1.1 and up.

Citing from the bash manual page:

       HISTCONTROL
              A  colon-separated  list  of values controlling how commands are
              saved on the history list.   If  the  list  of  values  includes
              ignorespace,  lines  which  begin with a space character are not
              saved in the history list.  A value of ignoredups  causes  lines
              matching the previous history entry to not be saved.  A value of
              ignoreboth is shorthand for ignorespace and ignoredups.  A value
              of erasedups causes all previous lines matching the current line
              to be removed from the history list before that line  is  saved.
              Any  value  not in the above list is ignored.  If HISTCONTROL is
              unset, or does not include a valid value, all lines read by  the
              shell parser are saved on the history list, subject to the value
              of HISTIGNORE.  The second and subsequent lines of a  multi-line
              compound  command  are  not tested, and are added to the history
              regardless of the value of HISTCONTROL.
McDutchie commented 3 months ago

ksh's discipline function mechanism is well suited to this. We should define a put and get discipline in init.c that converts the assigned list of values to and from a simple options bitmask (stored in, let's say, sh.histcontrol). It will then be efficient to check for those options in history.c.

nsoci commented 2 months ago

It was update to 1.0.10 and history duplicates is not solved yet or I do not know hot to set up. Thank you.

McDutchie commented 2 months ago

It's not yet implemented, sorry. I don't know when I'll have the time.

Also, again, when implemented, it will be in 93u+m/1.1 and up, it won't be in the 1.0 series as it's a whole new feature.