use str use prompt use nix-shell use title use eval-export use completion use pushd # don't use direlv if we're in a nix-shell to avoid nesting direlvs if (not (has-env IN_NIX_SHELL)) { use direlv } edit:add-var ls~ { |@a| e:ls --color=auto --group-directories-first -F --quoting-style literal $@a } if (has-external yadm) { set-env YADM_OVERRIDE_REPO ~/.dotfiles } else { edit:add-var yadm~ { |@a| git --git-dir=$E:HOME/.dotfiles/ --work-tree=$E:HOME $@a } } if (has-external delta) { set-env GIT_PAGER delta } # some additional bindings use readline-binding set edit:completion:binding[Ctrl-W] = $edit:close-mode~ set edit:completion:binding[Tab] = $edit:completion:accept~ var max-len = 30 # print time if command takes longer than 5 seconds set edit:after-command = [{|m| if (> $m[duration] 5) { var cmd = $m[src][code] var len = (count $cmd) if (> $len $max-len) { set cmd = $cmd[..$max-len]… } printf "%s took %.3fs\n" $cmd $m[duration] } }] eval (carapace _carapace|slurp) # restrict completion to only directories set edit:completion:arg-completer[cd] = $completion:dirs~ # import local.elv if present, for example, from ~/.config/elvish/lib/local.elv try { use local } catch e { if (not (str:contains (to-string $e[reason]) "no such module")) { fail $e } }