Rant: PHP Storm și sortarea fișierelor

Am o problemă cu PHP Storm (cred că CEA mai mare problemă, prezentă încă de când am început să-l folosesc): fișierele sunt sortate… alfabetic iar marcarea unui director drept content root are efect fix zero.

Eu mă aștept ca fișierele afișate în liste (e.g. go to anything, rezultatele căutărilor) să fie sortate în funcție de relevanță. I.e. afișezi fișierele deschise prima dată, apoi fișierele din content root, apoi restul.

Sunt eu prea fițos?

Am deschis issue acum jumătate de an, dar cum Jetbrains nu crede în sortarea după relevanță, a fost ignorat cu grație…

1 Like

TLDR:

Probabil :man_shrugging:

Acum serios, n-am observat niciodată problema menționată de tine, deși folosesc PhpStorm de mulți ani.

La faza cu setat content root, nu știu de ce încerci să rezolvi cu asta. Dacă vrei să excluzi foldere din rezultatul căutărilor și de la scanare poți să folosești Exclude folder. Eu folosesc asta pentru: node_modules, .vendor, .sass-cache sau CSS-ul compilat. După ce fac asta search-ul e destul de ok de folosit chiar dacă nu e sortat după relevanță.

Later edit: am citit ticketul deschis de tine. Cred că ce am zis eu cu Exclude folder poate fi folosit la ce vrei tu, doar că în loc să definești unde să caute, o să definești unde nu vrei să caute. Metoda cu exclude funcționează bine în schimb.

Păi exclude le exclude de tot: nu mai am autocomplete, nu mai am go to definition, nu mai am nimic. Ori eu vreau funcționalitatea asta :slight_smile:

Am citit ce face content root (linkul postat de tine) și practic nu face nimic până nu marchezi tu manual directoarele din el:

Within a content root, PhpStorm can distinguish between the folders that contain source code, and the ones to be ignored while searching, parsing, watching and so on. To distinguish different types of folders, mark any folder below a content root as a source folder or as excluded.

În cazul tău cred că problema vine de la faptul că ai prea multe fișiere cu același nume. Nu văd cum ar putea fi calculată relevanța rezultelor în funcție de context.

Când caut după fișiere, eu unul folosesc * ca wildcard. De exemplu noi avem multe fișiere bootstrap.php în proiectul nostru custom. Pot căuta după NumeModul*bootstrap și-mi returnează doar rezultatele din modul respectiv. Mă gândesc că și cu WordPress (presupun că la asta îl folosești), ar trebui să poți face ceva asemănător. De exemplu să cauți după numeplugin*functions.php. Merge și la căutarea după clase și simboluri.

Există editoare care fac exact ce vrei tu? Ar fi interesant de știut cum fac asta.

Aici directorul aw este SINGURUL din proiect marcat ca root. composer.json este în root.

Aici e și mai mișto: am aw marcat ca root, am aw\inc marcat ca source, am fișierul în directorul aw\...\nav-menus.php iar go to file mi-l arată… ULTIMUL.

Relevanța o calculezi (relativ) în funcție de:

  1. Fișierele deschise curent
  2. Fișierele deschise recent
  3. Directoarele marcate ca source
  4. Restul

Evident, faci fuzzy matching pe numele fișierelor.

Sigur, se mai pot face tweaks, dar ideea cam asta e.

Din puțina mea experiență cu Visual Studio e OK. Și Sublime este destul de deștept când vine vorba de Go To (deși nu poți marca directoarele).

Am încercat să găsesc cazuri asemănătoare în codul meu, însă fără succes.

Nu-mi dau seama ce trebuie schimbat în cazul tău (setări sau workflow).

:man_shrugging: nu cred că te pot ajuta cu mai mult de atât.

1 Like

Daca vrei composer din aw poti sa scrii la fuzzy search si aw/poser sau ceva de genul. Fuzzy search face si cautare cu path.

Daca ai deschis deja fisierul poti folosi recent files (ctrl+e default) si acolo tot cautare cu fuzzy poti face.