laravel-idea / plugin

Laravel Idea plugin for PhpStorm
https://laravel-idea.com/
173 stars 7 forks source link

[Feature Request]: Add processing indicator #549

Open mortenscheel opened 2 years ago

mortenscheel commented 2 years ago

Processing indicator

It would be really nice if we could have some kind of visual indication, that PhpStorm is processing the newly generated Helper Code. It's impressive how fast the plugin generates those files files, even with 500+ models. But then it might take 30-60 seconds for PhpStorm to process them, and some completion/navigation features are unavailable or degraded while this happens. Which is totally understandable. But usually we get some kind of visual indication that PhpStorm is busy doing something in the background. I don't know if the plugin has any way of knowing when PhpStorm is done processing the files, but if it does, it would be great if you could activate the status-bar spinner icon while it's happening.

adelf commented 2 years ago

Or better to improve this process and make it much faster. I'm implementing a new feature: 1 helper file per model namespace. Do you want to test it on your big project before the release?

image
adelf commented 2 years ago

The main idea is to don't touch the files which weren't changed so PhpStorm will index only files where models are changed somehow...

mortenscheel commented 2 years ago

@adelf I wish I could, but the project is closed source. I'd be happy to beta test if that would help.

Edit: Sorry, I misread your comment. Yes I'd love to test it.

adelf commented 2 years ago

Great. Please, tell me your PhpStorm version, I'll try to build a plugin version for you on Monday.

mortenscheel commented 2 years ago

I'm using the latest stable version for Windows. If you need the exact build, I can find it on Monday.

adelf commented 2 years ago

I mean PhpStorm's version. I have different plugin versions for different PhpStorms )

adelf commented 2 years ago

Ok. I think 2022.1. Thanks

adelf commented 2 years ago

https://laravel-idea.com/release/Laravel%20Idea-5.3.1.221_for_morten.zip You can download it, then PhpStorm Preferences > Plugins > Little wheel right from "Installed" > Install from file.

Eloquent Helper Code generation now creates separated files for different model namespaces. The first run will take a long time, as usual, but the next ones, if you change something only for 1 model should take much less time from PhpStorm to analyze changed files. Please share the results here.

mortenscheel commented 2 years ago

Thanks @adelf I did mean the latest stable version of PhpStorm for Windows :) Which is 2022.1.1 by the way, but the plugin still works.

It is indeed faster than it used to be. Here's the contents of my vendor/_laravel_idea before/after (also includes macro/facade and collection proxies):

Initial contest with regular plugin (3.2MB total) ``` .rw-r--r-- 218k morten 20 May 11:24 -I _ide_helper_facades.php .rw-r--r-- 6.9k morten 20 May 11:24 -I _ide_helper_macro.php .rw-r--r-- 7.5k morten 20 May 11:24 -I _ide_helper_macro_static.php .rw-r--r-- 2.2M morten 20 May 09:22 -I _ide_helper_model_builders.php .rw-r--r-- 873k morten 20 May 09:22 -I _ide_helper_models.php ```
Contents with 5.3.1.221 (5.0MB total) ``` .rw-r--r-- 221k morten 23 May 11:05 _ide_helper_facades.php .rw-r--r-- 7.1k morten 23 May 11:05 _ide_helper_macro.php .rw-r--r-- 7.6k morten 23 May 11:05 _ide_helper_macro_static.php .rw-r--r-- 7.3k morten 23 May 11:06 _ide_helper_model_builders_0f675ade42ecaaabb79d0f74f6311e9c.php .rw-r--r-- 6.3k morten 23 May 11:06 _ide_helper_model_builders_1a4aea8c3bb82d29d3d3376be1529fbc.php .rw-r--r-- 27k morten 23 May 11:06 _ide_helper_model_builders_1a19ae15591efc9d70f34a57664f6c13.php .rw-r--r-- 11k morten 23 May 11:06 _ide_helper_model_builders_1f9d02c5af9c358e5a7dca5de75d6710.php .rw-r--r-- 7.7k morten 23 May 11:06 _ide_helper_model_builders_2de06b41477ba726fa56f529a6993ad7.php .rw-r--r-- 7.1k morten 23 May 11:06 _ide_helper_model_builders_3c8d8ecd61da9dfa2f001db3f9138ac4.php .rw-r--r-- 26k morten 23 May 11:06 _ide_helper_model_builders_3d065d1bad34f0125763a13bb4a67644.php .rw-r--r-- 23k morten 23 May 11:06 _ide_helper_model_builders_5f3b5c1ca197fc710f1164292c99ab6f.php .rw-r--r-- 10k morten 23 May 11:06 _ide_helper_model_builders_6c8bb4eb91caed2030f2c90c572dc432.php .rw-r--r-- 184k morten 23 May 11:06 _ide_helper_model_builders_7d484dc0fab3072beda542d7a1035b9e.php .rw-r--r-- 31k morten 23 May 11:06 _ide_helper_model_builders_7ef64785d68572135b698a7f50659cc8.php .rw-r--r-- 61k morten 23 May 11:06 _ide_helper_model_builders_8b7617ca00df6675be7754e16fcd4564.php .rw-r--r-- 18k morten 23 May 11:06 _ide_helper_model_builders_15dae5ad9a4668e0108b0578752ad744.php .rw-r--r-- 20k morten 23 May 11:06 _ide_helper_model_builders_27f522c1dc6a2e9ce3e9bf9cf804a9a1.php .rw-r--r-- 107k morten 23 May 11:06 _ide_helper_model_builders_35d2ff0ddc22597e247952feae558ceb.php .rw-r--r-- 5.9k morten 23 May 11:06 _ide_helper_model_builders_59ea86c348f8f20bcf5814e1b1e85242.php .rw-r--r-- 6.5k morten 23 May 11:06 _ide_helper_model_builders_67b41f9a653d8018cdc04878404d1d93.php .rw-r--r-- 39k morten 23 May 11:06 _ide_helper_model_builders_68adb725f074185d89ad0fe554be98b3.php .rw-r--r-- 40k morten 23 May 11:06 _ide_helper_model_builders_76d060def85f7ed2242b82e02cb604f1.php .rw-r--r-- 17k morten 23 May 11:06 _ide_helper_model_builders_920c28e58dc9b024faa4764544d54b18.php .rw-r--r-- 31k morten 23 May 11:06 _ide_helper_model_builders_8201f7645d42816ed35614bf930ae92c.php .rw-r--r-- 1.8M morten 23 May 11:06 _ide_helper_model_builders_ad33b4e41f44782d58c9ce9e9f79c602.php .rw-r--r-- 56k morten 23 May 11:06 _ide_helper_model_builders_ad8872d0a5c74448a7b6cea7a0696bee.php .rw-r--r-- 5.0k morten 23 May 11:06 _ide_helper_model_builders_b5b52d477dad23af63a661b68e1263aa.php .rw-r--r-- 33k morten 23 May 11:06 _ide_helper_model_builders_c340fda907e5c5664a56763370a9d25b.php .rw-r--r-- 14k morten 23 May 11:06 _ide_helper_model_builders_d95be120ae535e52b851508ed5187843.php .rw-r--r-- 33k morten 23 May 11:06 _ide_helper_model_builders_d11877284d0b99e87354a4b7d570b71c.php .rw-r--r-- 22k morten 23 May 11:06 _ide_helper_model_builders_dc5cae424efeea3a2a39ed5fc17d9925.php .rw-r--r-- 24k morten 23 May 11:06 _ide_helper_model_builders_de342d865611bd56675dc6d2f46abdd7.php .rw-r--r-- 62k morten 23 May 11:06 _ide_helper_model_builders_df7fc69b317e79e7bace2c5458d5234f.php .rw-r--r-- 4.5k morten 23 May 11:06 _ide_helper_model_builders_eac7f1eb6c2d7976942cdcfe00d0c690.php .rw-r--r-- 7.1k morten 23 May 11:06 _ide_helper_model_builders_fac0634a69c90fb4ca6b22e5077affa9.php .rw-r--r-- 6.0k morten 23 May 11:06 _ide_helper_model_builders_fe6db5e13ae5cd6889d816d2a5f80cbb.php .rw-r--r-- 5.9k morten 23 May 11:06 _ide_helper_model_builders_ffe3c052bf86eb86ff4a6339510615ec.php .rw-r--r-- 3.2k morten 23 May 11:06 _ide_helper_model_collection_proxies_0f675ade42ecaaabb79d0f74f6311e9c.php .rw-r--r-- 1.6k morten 23 May 11:06 _ide_helper_model_collection_proxies_1a4aea8c3bb82d29d3d3376be1529fbc.php .rw-r--r-- 15k morten 23 May 11:06 _ide_helper_model_collection_proxies_1a19ae15591efc9d70f34a57664f6c13.php .rw-r--r-- 2.3k morten 23 May 11:06 _ide_helper_model_collection_proxies_1f9d02c5af9c358e5a7dca5de75d6710.php .rw-r--r-- 1.5k morten 23 May 11:06 _ide_helper_model_collection_proxies_2de06b41477ba726fa56f529a6993ad7.php .rw-r--r-- 973 morten 23 May 11:06 _ide_helper_model_collection_proxies_3c8d8ecd61da9dfa2f001db3f9138ac4.php .rw-r--r-- 4.5k morten 23 May 11:06 _ide_helper_model_collection_proxies_3d065d1bad34f0125763a13bb4a67644.php .rw-r--r-- 8.0k morten 23 May 11:06 _ide_helper_model_collection_proxies_5f3b5c1ca197fc710f1164292c99ab6f.php .rw-r--r-- 1.9k morten 23 May 11:06 _ide_helper_model_collection_proxies_6c8bb4eb91caed2030f2c90c572dc432.php .rw-r--r-- 33k morten 23 May 11:06 _ide_helper_model_collection_proxies_7d484dc0fab3072beda542d7a1035b9e.php .rw-r--r-- 12k morten 23 May 11:06 _ide_helper_model_collection_proxies_7ef64785d68572135b698a7f50659cc8.php .rw-r--r-- 11k morten 23 May 11:06 _ide_helper_model_collection_proxies_8b7617ca00df6675be7754e16fcd4564.php .rw-r--r-- 3.8k morten 23 May 11:06 _ide_helper_model_collection_proxies_15dae5ad9a4668e0108b0578752ad744.php .rw-r--r-- 5.0k morten 23 May 11:06 _ide_helper_model_collection_proxies_27f522c1dc6a2e9ce3e9bf9cf804a9a1.php .rw-r--r-- 100k morten 23 May 11:06 _ide_helper_model_collection_proxies_35d2ff0ddc22597e247952feae558ceb.php .rw-r--r-- 1.3k morten 23 May 11:06 _ide_helper_model_collection_proxies_59ea86c348f8f20bcf5814e1b1e85242.php .rw-r--r-- 1.7k morten 23 May 11:06 _ide_helper_model_collection_proxies_67b41f9a653d8018cdc04878404d1d93.php .rw-r--r-- 26k morten 23 May 11:06 _ide_helper_model_collection_proxies_68adb725f074185d89ad0fe554be98b3.php .rw-r--r-- 15k morten 23 May 11:06 _ide_helper_model_collection_proxies_76d060def85f7ed2242b82e02cb604f1.php .rw-r--r-- 4.6k morten 23 May 11:06 _ide_helper_model_collection_proxies_920c28e58dc9b024faa4764544d54b18.php .rw-r--r-- 8.4k morten 23 May 11:06 _ide_helper_model_collection_proxies_8201f7645d42816ed35614bf930ae92c.php .rw-r--r-- 689k morten 23 May 11:06 _ide_helper_model_collection_proxies_ad33b4e41f44782d58c9ce9e9f79c602.php .rw-r--r-- 12k morten 23 May 11:06 _ide_helper_model_collection_proxies_ad8872d0a5c74448a7b6cea7a0696bee.php .rw-r--r-- 904 morten 23 May 11:06 _ide_helper_model_collection_proxies_b5b52d477dad23af63a661b68e1263aa.php .rw-r--r-- 15k morten 23 May 11:06 _ide_helper_model_collection_proxies_c340fda907e5c5664a56763370a9d25b.php .rw-r--r-- 4.5k morten 23 May 11:06 _ide_helper_model_collection_proxies_d95be120ae535e52b851508ed5187843.php .rw-r--r-- 11k morten 23 May 11:06 _ide_helper_model_collection_proxies_d11877284d0b99e87354a4b7d570b71c.php .rw-r--r-- 5.9k morten 23 May 11:06 _ide_helper_model_collection_proxies_dc5cae424efeea3a2a39ed5fc17d9925.php .rw-r--r-- 4.2k morten 23 May 11:06 _ide_helper_model_collection_proxies_de342d865611bd56675dc6d2f46abdd7.php .rw-r--r-- 32k morten 23 May 11:06 _ide_helper_model_collection_proxies_df7fc69b317e79e7bace2c5458d5234f.php .rw-r--r-- 664 morten 23 May 11:06 _ide_helper_model_collection_proxies_eac7f1eb6c2d7976942cdcfe00d0c690.php .rw-r--r-- 2.9k morten 23 May 11:06 _ide_helper_model_collection_proxies_fac0634a69c90fb4ca6b22e5077affa9.php .rw-r--r-- 1.1k morten 23 May 11:06 _ide_helper_model_collection_proxies_fe6db5e13ae5cd6889d816d2a5f80cbb.php .rw-r--r-- 1.1k morten 23 May 11:06 _ide_helper_model_collection_proxies_ffe3c052bf86eb86ff4a6339510615ec.php .rw-r--r-- 2.0k morten 23 May 11:06 _ide_helper_models_08b8d65db0457314cb03ca88687e8b63.php .rw-r--r-- 2.7k morten 23 May 11:06 _ide_helper_models_096281f8ed61cb847eb9ad01d90a6cdd.php .rw-r--r-- 10k morten 23 May 11:06 _ide_helper_models_6c903983f245119094e158adccef48b2.php .rw-r--r-- 5.8k morten 23 May 11:06 _ide_helper_models_6f41e4fad0cc58c14fbab8f768ed9ad8.php .rw-r--r-- 7.3k morten 23 May 11:06 _ide_helper_models_7baca5937d8fdaf18c3ff2cb450c045e.php .rw-r--r-- 6.4k morten 23 May 11:06 _ide_helper_models_9ce7bf737e2a2b09d4ca519516072f52.php .rw-r--r-- 4.9k morten 23 May 11:06 _ide_helper_models_9d0c8a4606f14955e27cfc43e38801c8.php .rw-r--r-- 16k morten 23 May 11:06 _ide_helper_models_13dd18893c6caf2d0da07fbb93731d30.php .rw-r--r-- 1.6k morten 23 May 11:06 _ide_helper_models_730daa502ab126d2c1ea3f77006a6be3.php .rw-r--r-- 1.2k morten 23 May 11:06 _ide_helper_models_803cd2f4ce17ec5ee5ad8618c2370d5a.php .rw-r--r-- 7.3k morten 23 May 11:06 _ide_helper_models_7222f11125cf93298b8ee4552d0dc054.php .rw-r--r-- 8.9k morten 23 May 11:06 _ide_helper_models_49294d5aaff08a683833b7384200f007.php .rw-r--r-- 17k morten 23 May 11:06 _ide_helper_models_68044cf5bf885836f35194c6042d218b.php .rw-r--r-- 1.9k morten 23 May 11:06 _ide_helper_models_701299dedd4d1b90e704ad0b77ed33e8.php .rw-r--r-- 11k morten 23 May 11:06 _ide_helper_models_8346867e4d12a458ffbdaef713c78b16.php .rw-r--r-- 933 morten 23 May 11:06 _ide_helper_models_17363996ebc686c18178429daf4749bd.php .rw-r--r-- 13k morten 23 May 11:06 _ide_helper_models_763540356aeae3dcdb0974128128145b.php .rw-r--r-- 21k morten 23 May 11:06 _ide_helper_models_a26e971211d34c393bbe1d2e2ffae3dd.php .rw-r--r-- 9.6k morten 23 May 11:06 _ide_helper_models_a72d20a4a3e63ea6bd3fa6e09284b518.php .rw-r--r-- 1.5k morten 23 May 11:06 _ide_helper_models_a634fe89e2fd6532ff753b16db07f829.php .rw-r--r-- 2.1k morten 23 May 11:06 _ide_helper_models_a3379eaa7ba1659a8131be115a0579b5.php .rw-r--r-- 3.6k morten 23 May 11:06 _ide_helper_models_bc6c044ac15ffaa863b9af057113d920.php .rw-r--r-- 1.0k morten 23 May 11:06 _ide_helper_models_cad08721c19e86bcfe5e8d5c98b20e97.php .rw-r--r-- 35k morten 23 May 11:06 _ide_helper_models_ce21e451fc6520c6ed2f0305945aff4b.php .rw-r--r-- 5.2k morten 23 May 11:06 _ide_helper_models_d41d8cd98f00b204e9800998ecf8427e.php .rw-r--r-- 28k morten 23 May 11:06 _ide_helper_models_d665fc0a5d560c1b3d69297237252b5b.php .rw-r--r-- 4.5k morten 23 May 11:06 _ide_helper_models_dbcfc6e003a3a300c3b0497325be5794.php .rw-r--r-- 1.2k morten 23 May 11:06 _ide_helper_models_ea0e8366ee41cd418f48837588e4ae31.php .rw-r--r-- 1.4k morten 23 May 11:06 _ide_helper_models_ee36f64760ddef3ba484a7856c4e75ce.php .rw-r--r-- 587k morten 23 May 11:06 _ide_helper_models_ee561cdc569390bdb5533d66d059aa2d.php .rw-r--r-- 6.4k morten 23 May 11:06 _ide_helper_models_f9e4db0376ed31e2f63d448a94fda75b.php .rw-r--r-- 3.2k morten 23 May 11:06 _ide_helper_models_f88116b793eae2cdc37c79347cf82391.php .rw-r--r-- 12k morten 23 May 11:06 _ide_helper_models_fa2cd8cb8fe1cf1b1d7de0a1dffff33c.php .rw-r--r-- 33k morten 23 May 11:06 _ide_helper_models_fe9aa47b2ae1bd8c0799b779db76736b.php ```

I tried adding a local scope to a single model and run the command again, and it only changed these files:

.rw-r--r--  596k morten 23 May 11:18 -I _ide_helper_models_ee561cdc569390bdb5533d66d059aa2d.php
.rw-r--r--  1.9M morten 23 May 11:18 -I _ide_helper_model_builders_ad33b4e41f44782d58c9ce9e9f79c602.php
.rw-r--r--  687k morten 23 May 11:18 -I _ide_helper_model_collection_proxies_ad33b4e41f44782d58c9ce9e9f79c602.php

But considering the sizes of the changed files, PhpStorm still had to reindex more than 3MB, which is approximately the same as before. The project I'm working with isn't structured too well. There are 300+ models in the root App namespace, and that includes the model I added a scope on. So if it's possible to split large namespaces into multiple chunks, that would help a lot.

I also added a scope to a model in a namespace with only 5 models. This resulted in a single changed file (33k), and PhpStorm picked up the change almost instantaneously. Very impressive!

Let me know if you want me to test other things. All in all, it's a huge improvement, but the result depends a lot on the size of the namespaces.

adelf commented 2 years ago

I thought namespaces are the best thing to separate models, but who can imagine 300+ models in 1 namespace :) Thank you for testing. Maybe I'll find something which will help you.

mortenscheel commented 2 years ago

Yeah I know. I was young and ignorant and the feature requests just kept on coming. I'm in the process of refactoring it, but it's going to take a while.