1. 14 Sep, 2019 4 commits
  2. 11 Sep, 2019 1 commit
  3. 08 Sep, 2019 2 commits
    • Gert's avatar
      Fix exclusion patterns not actually working on full paths · 4ed8cd6b
      Gert authored
      For *whatever* reason, Symfony Finder's exclusion works either with file 
      names only ("name") or relative paths ("exclude"). Of course, we don't 
      ever have proper relative paths to the project root, as we sometimes 
      also just index files separately.
      
      This adds a custom iterator that works using the full path, which will 
      also still work for relative path exclusion patterns, but also with full 
      ones.
      
      References #180
      4ed8cd6b
    • Gert's avatar
      Rewrite indexing traversal to avoid traversing ignored paths · e51c4747
      Gert authored
      Previously, files that matched ignored patterns were still processed. 
      This means that a list was first created of *all* files, after those 
      matching the patterns were dropped. This means if you excluded a large 
      directory, that directory was still traversed, even though the files 
      were ignored. This should now no longer be the case.
      
      Apart from this, VCS directories such as .git are no longer traversed.
      
      Furthermore, it is now possible to use, next to strings, proper globs 
      and regular expressions in a project's "excludedPathExpressions".
      
      References #278
      Implements #180
      e51c4747
  4. 05 Sep, 2019 2 commits
  5. 04 Sep, 2019 1 commit
    • Gert's avatar
      Make (first) property range consistent with method range · 4a657777
      Gert authored
      Property ranges previously pointed to the property name only, whilst 
      method ranges include everything: the access modifier, the optional 
      static keyword, and so on. This is inconsistent and also causes code 
      lenses for properties to be given an indented range, which is also 
      inconsistent with method code lenses.
      
      To avoid overlapping ranges, optional second properties in the same 
      property block (in case anyone uses those) still only include the 
      property.
      
      References #93
      4a657777
  6. 03 Sep, 2019 1 commit
  7. 01 Sep, 2019 1 commit
    • Gert's avatar
      Add initial code lens support · 4734eec2
      Gert authored
      The code lenses will indicate methods that are overrides or interface 
      implementations as well as property overrides. This will replace the 
      gutter annotations the Atom package currently manages by itself to 
      display this information.
      
      The language server protocol has no way to support gutter annotations 
      (although in theory, the client could opt to use gutter annotations to 
      support code lenses).
      
      There is still more work to be done here: I've already done some 
      prototyping for a client implementation in the Atom client, but the 
      server will also need support for "workspace/executeCommand" in order to 
      actually execute the command in the code lens once the user clicks it in 
      the client, and finally will need some way to ask the client to open a 
      URI at a specific location in order to navigate to the element being 
      overridden or implemented.
      
      In any case, we'll need command execution sooner or later anyway, as it 
      is also required for implementing refactoring actions and other commands 
      later on.
      
      References #93
      4734eec2
  8. 11 Aug, 2019 2 commits
  9. 10 Aug, 2019 1 commit
    • Gert's avatar
      Move most completion FQCNs to detail instead of label · 85083216
      Gert authored
      This moves the FQCN (or FQSEN) for classlikes, functions and constants 
      to the detail property of completion suggestions. This keeps the labels 
      themselves much shorter, only identifying the most important part of 
      these elements: their name.
      
      The detail can then serve to distinguish items when multiple items exist 
      with the same name. Whilst this happens often enough to be relevant 
      ("Request" appears to be used a lot), the majority of suggestions will 
      be alone in their existence, in which case it will be visually much less 
      overwhelming if we can omit the prefix of the name there.
      
      Fixes #269
      85083216
  10. 08 Aug, 2019 1 commit
  11. 27 Jul, 2019 5 commits
    • Gert's avatar
      Fix incorrect class import location when only function imports exist · 6d7d6e07
      Gert authored
      It was being placed in between the existing function imports instead of 
      above them.
      
      This only happened if you had a namespace present and didn't happen 
      because it grouped the classlike import with the function imports, but 
      rather because there were no existing classlike imports to use as a 
      reference point, so it thought it had to insert them on the fallback 
      location, which then turned out to be incorrect.
      
      Fixes #267
      6d7d6e07
    • Gert's avatar
      Rename confusing test names · 341d66d8
      Gert authored
      References #267
      341d66d8
    • Gert's avatar
      Fix no import generated when name with different kind is already present · ecba61c8
      Gert authored
      If you try to import class A\B\Foo and a constant with name A\B\Foo is 
      already imported, no import would be added. This is incorrect, because 
      importing the same name multiple times is allowed in PHP, as long as the 
      kind is different, i.e. you may import a constant, function and class 
      with the same name simultaneously (but not two of the same kind and 
      name, obviously).
      
      Fixes #268
      ecba61c8
    • Gert's avatar
      Remove fixme · c2c3b6e1
      Gert authored
      c2c3b6e1
    • Gert's avatar
      Require that index database location is sent by client · cb0d359d
      Gert authored
      This allows clients to determine the location of the index database 
      entirely. As the location of the configuration file is also determined 
      by the client, clients can now freely determine where they want to store 
      these configurations and index databases for the user. Some clients may 
      prefer to show a GUI instead of using an on-disk configuration file, or 
      to store the index database in the /tmp folder, for example.
      
      Implements #266
      cb0d359d
  12. 26 Jul, 2019 1 commit
  13. 25 Jul, 2019 1 commit
  14. 16 Jun, 2019 2 commits
  15. 13 Jun, 2019 3 commits
  16. 12 Jun, 2019 1 commit
    • Gert's avatar
      Show FQCN for constants and functions during autocompletion · bf9ec361
      Gert authored
      This will help differentiate between elements with the same name, but in 
      different namespaces. This will also help when using libraries that 
      contain namespaced functions and constants and is an almost required 
      precursor to implementing use statement insertion for constants and 
      functions.
      
      References #163
      References #164
      bf9ec361
  17. 06 Jun, 2019 1 commit
  18. 17 May, 2019 1 commit
  19. 16 Dec, 2018 4 commits
  20. 15 Dec, 2018 4 commits
  21. 13 Dec, 2018 1 commit