Properly handle hanging deparser
After every start IDE i see warning about outadet XSubs declarations. When you try to regenerate, the process starts in the background and does not end. It is repeated in all projects, an attempt to roll back the IDE version did not lead to anything. This leads to the fact that some of the functions do not work. For example, renaming a function (Shift+F6).
After stopping the IDE, I see a sleeping process:
48725 ? S 0:00 /usr/bin/perl -I/home/cynovg/audiofile-info/lib /home/cynovg/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/221.5080.224.plugins/plugin/perl/xs_parser_simple.pl
When I try to run the process from the terminal, I see:
/usr/bin/perl -I/home/cynovg/audiofile-info/lib /home/cynovg/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/221.5080.224.plugins/plugin/perl/xs_parser_simple.pl
Subroutine can redefined at /usr/lib/x86_64-linux-gnu/perl5/5.30/Class/C3/XS.pm line 41.
Subroutine method redefined at /usr/lib/x86_64-linux-gnu/perl5/5.30/Class/C3/XS.pm line 43.
Subroutine method redefined at /usr/lib/x86_64-linux-gnu/perl5/5.30/Class/C3/XS.pm line 51.
Too late to run INIT block at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 257.
Subroutine Pango::Layout::set_text redefined at /usr/share/perl5/Gtk3.pm line 2260.
Subroutine Pango::Layout::set_markup redefined at /usr/share/perl5/Gtk3.pm line 2266.
GLib-GObject-WARNING **: cannot register existing type 'GtkWidget' at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-WARNING **: cannot add class private field to invalid type '<invalid>' at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-WARNING **: cannot add private field to invalid (non-instantiatable) type '<invalid>' at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-WARNING **: cannot register existing type 'GtkBuildable' at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-CRITICAL **: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-CRITICAL **: g_type_register_static: assertion 'parent_type > 0' failed at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
GLib-GObject-WARNING **: cannot add private field to invalid (non-instantiatable) type '<invalid>' at /usr/lib/x86_64-linux-gnu/perl5/5.30/Glib/Object/Introspection.pm line 110.
- CLion 2022.1 Build #CL-221.5080.224, built on April 13, 2022 Runtime version: 11.0.14.1+1-b2043.25 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Linux 5.4.0-109-generic GC: G1 Young Generation, G1 Old Generation Registry: run.processes.with.pty=TRUE Non-Bundled Plugins: com.perl5 (2022.1) Current Desktop: ubuntu:GNOME
- Perl5 plugin version - 2022.1
- openjdk 17.0.3 2022-04-19 OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)
- Ubuntu, 20.04.4 LTS (Focal Fossa)/ Linux ubuntu-desktop 5.4.0-109-generic 123-Ubuntu SMP Fri Apr 8 09:10:54 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Basically you should do:
- Uncomment https://github.com/Camelcade/Perl5-IDEA/blob/master/plugin/scripts/xs_parser_simple.pl#L14
- Run script from the console
- See on which module script stucks
- Try
perl -MScript::In::Questionit should do nothing (not hang not crush) - If it does - worth asking module author - why.
We could add the heartbeat message to the deparsing script and catch if it not finished and silent for a long time. And kill it by ourselves.
We could probably even show in progress - what are we currently doing. Indicator may be used with possibility to cancel.