From 85d9ef6b164c22a056b1341741acac1ad9fd8cc0 Mon Sep 17 00:00:00 2001 From: Ryan Joseph Date: Fri, 16 Jan 2026 21:20:18 +0700 Subject: [PATCH] Escape workspace paths --- src/serverprotocol/PasLS.General.pas | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/serverprotocol/PasLS.General.pas b/src/serverprotocol/PasLS.General.pas index 33f6153..ad2269a 100644 --- a/src/serverprotocol/PasLS.General.pas +++ b/src/serverprotocol/PasLS.General.pas @@ -156,7 +156,7 @@ procedure TInitialize.SetPlatformDefaults(CodeToolsOptions: TCodeToolsOptions); { Find all sub directories which contain Pascal source files } -function TInitialize.IsPasExt(Const aExtension: String): Boolean; +function TInitialize.IsPasExt(const aExtension: String): Boolean; var E : String; begin @@ -214,7 +214,7 @@ procedure TInitialize.FindPascalSourceDirectories(RootPath: String; Results: TSt exit; havePas:=False; - if FindFirst(RootPath+AllFilesMask, faAnyFile, Info) = 0 then + if FindFirst(RootPath + AllFilesMask, faAnyFile, Info) = 0 then try repeat if ((Info.Attr and faDirectory) <> 0) and not((Info.Name = '.') or (Info.Name = '..')) then @@ -352,6 +352,15 @@ function TInitialize.CheckProgramSetting: Boolean; end; function TInitialize.Process(var Params : TLSPInitializeParams): TInitializeResult; + + function EscapeFileName(const Name: String): String; + begin + if Pos(' ', Name) > 0 then + Result := '"' + Name + '"' + else + Result := Name; + end; + var Proj, Option, aPath, ConfigPath: String; CodeToolsOptions: TCodeToolsOptions; @@ -476,10 +485,10 @@ function TInitialize.Process(var Params : TLSPInitializeParams): TInitializeResu for aPath in WorkspacePaths do begin if ServerSettings.includeWorkspaceFoldersAsUnitPaths then - FPCOptions += ['-Fu' + ExpandFileName(aPath)]; + FPCOptions += ['-Fu' + EscapeFileName(ExpandFileName(aPath))]; if ServerSettings.includeWorkspaceFoldersAsIncludePaths then - FPCOptions += ['-Fi' + ExpandFileName(aPath)]; + FPCOptions += ['-Fi' + EscapeFileName(ExpandFileName(aPath))]; end; CodeToolsOptions.FPCOptions := JoinString(FPCOptions, ' '); @@ -503,7 +512,7 @@ function TInitialize.Process(var Params : TLSPInitializeParams): TInitializeResu begin Init(CodeToolsOptions); IdentifierList.SortForHistory := True; - IdentifierList.SortMethodForCompletion:=icsScopedAlphabetic; + IdentifierList.SortMethodForCompletion := icsScopedAlphabetic; end; Result.Capabilities.ApplySettings(ServerSettings); @@ -594,9 +603,8 @@ procedure TServerCapabilitiesHelper.ApplySettings(settings: TServerSettings); function TLSPInitializeParams.createInitializationOptions: TInitializationOptions; begin - Result:=TServerSettings.Create; + result := TServerSettings.Create; end; - end.