ujimushi(@旧sradjp(15364))の日記

旧スラドの日記の引越先です

OhMyREPL.jlがJulia v1.10.4でCtrl+Rが効かない対策を一足先に施す

「REPL Search History not Working with Julia 1.10.4」のイシューにあるように, 1.10.4ではCtrl+Rで実行される履歴検索がうまく動かなくなっている。

「fix disappearing fzf matches」というプルリクも出ているので,修正されるのは目の前だが,一足先にパッチを当ててみる。

using OhMyREPL

@eval OhMyREPL.Prompt begin
    NEW_KEYBINDINGS["^R"] = function (s, data, c)
        if VERSION >= v"1.3" && OhMyREPL.ENABLE_FZF[]
            withenv("FZF_DEFAULT_OPTS" => nothing) do
                current_line = LineEdit.input_string(s)
                if !isempty(current_line)
                    line = JLFzf.inter_fzf(JLFzf.read_repl_hist(), "-m", "--read0", "--tiebreak=index", "--height=80%", "--query=$current_line")
                else
                    line = JLFzf.inter_fzf(JLFzf.read_repl_hist(), "-m", "--read0", "--tiebreak=index", "--height=80%")
                end
                if isempty(line)
                    line = current_line
                end
                JLFzf.insert_history_to_repl(s, line)
            end
            rewrite_with_ANSI(s)
        else
            p = Base.active_repl.interface.modes[4]
            LineEdit.enter_search(s, p, true)
        end
    end
end

元のパッチがCTRL+rに割り当てられた関数を書き換えているので,同様に書き換えただけである。

なお,履歴検索の機能の有効・無効は OhMyREPL.enable_fzf(true)OhMyREPL.enable_fzf(false)で切り替えられる。

追記

少し前にv0.5.28が出て,特に何もすることなく問題は解消されました。