= User preferences = Haskeline's user interface may be customized by editing a {{{~/.haskeline}}} file. Each line of a `.haskeline` file sets one preference field; field names are case insensitive and unparseable lines are ignored. For example: {{{ editMode: Vi completionType: MenuCompletion maxhistorysize: Just 40 }}} || '''field name''' || '''values''' || '''default value'''|| || bellStyle|| {{{NoBell | VisualBell | AudibleBell}}} || `AudibleBell` || || maxHistorySize || {{{Maybe Int}}} || {{{Just 100}}} || || editMode || {{{Vi | Emacs}}} || `Emacs`|| || completionType || {{{ListCompletion | MenuCompletion}}} || `ListCompletion` || || completionPaging || `Bool` || `True` || || || When listing completion alternatives, only display one screen of possibilities at a time.|| || completionPromptLimit || {{{Maybe Int}}} || {{{Just 100}}} || || || If more than this number of completion possibilities are found, ask before listing them. || || listCompletionsImmediately || `Bool`|| `True` || || || If `False`, completions with multiple possibilities will ring the bell and only display them if the user presses `TAB` again.|| || historyDuplicates || {{{AlwaysAdd | IgnoreConsecutive | IgnoreAll }}} || `AlwaysAdd` || || || If this is set to `IgnoreConsecutive`, a line will not be added to the history if it matches the previous entry. If it is set to `IgnoreAll`, all previous entries matching the current line will be removed. || || || This preference is available in haskeline>=0.6.2.|| See also CustomKeyBindings.