IntelliJ's embedded terminal does not load fish functions

I was able to get the same result from echo $fish_function_path in IntelliJ's embeded terminal and iTerm2 by going to Settings | Terminal then turning off Shell integration.

I was using phpStorm 2017.3.4 but I assume this will also work in any IntelliJ embedded terminal.


intelliJ option check. turn off shell integration.

enter image description here


Someone posted a good solution for this in the IntelliJ bug tracker.

IntelliJ has its own config.fish, where .config/fish/config.fish does get loaded, but not the functions...

Add the following to IntelliJ's internal config.fish and the fish functions get loaded fine in IntelliJ's embedded terminal:

if test -d ~/.config/fish/functions
  for f in ~/.config/fish/functions/*.fish
    source $f
  end
end

The location of IntelliJ's config.fish varies, on macOS it could be

  • Ultimate Edition: /Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
  • Community Edition: /Applications/IntelliJ\ IDEA\ CE.app/Contents/plugins/terminal/fish/config.fish
  • Or even something like this, if installed via Jetbrains Toolbox: ~/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/172.4574.11/IntelliJ IDEA.app/Contents/plugins/terminal/fish

You could also just replace that whole fish directory in IntelliJ's plugins/terminal with a symlink to your normal fish config directory, usually .config/fish/.

There's still another option: you can just link the functions directory, for example:

ln -s ~/.config/fish/functions \
  /Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish