On Thu, 23 Apr 2020 20:45:58 +0700 Ryan Joseph via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote:
> > On Apr 23, 2020, at 8:20 PM, Arjan Adriaanse <ar...@adriaan.se> > > wrote: > > > > Perhaps not all the used generics features are available yet in > > older FPC versions. I use the most recent release candidate from > > ftp://ftp.freepascal.org/pub/fpc/beta/3.2.0-rc1/ [2], but will > > investigate if older versions also work. > > Lazbuild used FPC 3.0.4. How do I make lazbuild choose the trunk > instead of 3.0.4? Use the compiler option, for example: lazbuild --compiler=/usr/lib/fpc/3.2.0/ppcx64 pasls.lpi > The first thing to address is TCompletion.Process and how it > interacts with code tools. For example: > > URI := ParseURI(textDocument.uri); > Code := CodeToolBoss.FindFile(URI.Path + URI.Document); > X := position.character; > Y := position.line; > Line := Code.GetLine(Y); > GetIdentStartEndAtPosition(Line, X + 1, PStart, PEnd); > CodeToolBoss.IdentifierList.Prefix := Copy(Line, PStart, PEnd - > PStart); > > How LSP is intended to work is that a text buffer which contains the > current state of the file is sent to the server and then this buffer > is parsed. I think what the code above does is only operate on the > file on disk. This maybe be fine for certain completions but it will > be static until the user saves the file in the client. Worse yet is > that the text offset we receive from the client is going to be out of > sync. The CodeToolBoss actually keeps a cache of files which are loaded at the 'textDocument/didOpen' notification. When the user changes text at the client side, even without saving, a 'textDocument/didChange' notification is sent which is used to update the cache. The CodeToolBoss seems to only use the file path as identifier, but the contents of the files and changes are provided by the client. Regards, Arjan
pgpyHDQlDX7PD.pgp
Description: OpenPGP digital signature
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal