Hi! I have been experimenting with file path autocompletion in IEx. We were wanting this feature for Nerves, but there's nothing Nerves-specific about it. With some work, I could turn this into a PR to core Elixir if desired.
I was asked to give a feature overview here and start the discussion. Here's how it works at a high level: 1. If tab was typed while the user is in a string, run the path completion code; else run the existing IEx completion code. 2. Append a "*" to the string fragment and call Path.wildcard. (Before doing this, the string is rejected as a possible path if it has wildcard characters in it) 3. Process the Path.wildcard results into a hint and/or possible completions and return. There are edge conditions in all of the steps above, but that's the gist. My current implementation is in the Toolshed library for convenience with Nerves. The autocomplete code is completely separate from anything else in there. See https://github.com/fhunleth/toolshed/blob/main/lib/toolshed/autocomplete.ex. The tests may be helpful too: https://github.com/fhunleth/toolshed/blob/main/test/toolshed/autocomplete_test.exs. Here's how to try it out: 1. Clone Toolshed 2. iex -S mix 3. Run `Toolshed.Autocomplete.set_expand_fun()` at the prompt 4. Type `File.read("lib/<tab>` or whatever you'd like. I haven't tested on Windows or over Erlang distribution at all, so those use cases may need fixing. It currently only works with Elixir strings. We're currently exercising path autocompletion with Nerves. It seems to be working well, and my plan is to keep updating it in Toolshed as we find improvements. If feedback is positive for core Elixir, I'll start the PR going. I would also be happy to pull it out of Toolshed if core isn't the right place and non-Nerves users would like to use it without the overhead. Thanks! Frank -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CA%2B-urNQKCUGDT_wY8-c5Zvy7rE%2BF9ov7vYDiXwOCR5F8bUH-hA%40mail.gmail.com.