From ba922d7af12d23dd98de9e418260034f7e706f01 Mon Sep 17 00:00:00 2001 From: simon hsu Date: Thu, 29 Jan 2026 11:20:40 +0800 Subject: [PATCH] fix: command 'pasls.formatCode' not worked --- src/serverprotocol/PasLS.Formatter.pas | 5 +- src/serverprotocol/PasLS.JcfUINull.pas | 80 ++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/serverprotocol/PasLS.JcfUINull.pas diff --git a/src/serverprotocol/PasLS.Formatter.pas b/src/serverprotocol/PasLS.Formatter.pas index b11a9a1..18256b7 100644 --- a/src/serverprotocol/PasLS.Formatter.pas +++ b/src/serverprotocol/PasLS.Formatter.pas @@ -64,7 +64,7 @@ interface implementation uses - SetTransform, SetReturns, SettingsTypes, JcfSettings; + SetTransform, SetReturns, SettingsTypes, JcfSettings,PasLS.JcfUINull,JcfUiTools; { TFileFormatter } @@ -333,6 +333,7 @@ procedure TFileFormatter.Process(const aFileName: String; end; end; - +initialization + SetJcfUIClass(TJcfUINull.create); end. diff --git a/src/serverprotocol/PasLS.JcfUINull.pas b/src/serverprotocol/PasLS.JcfUINull.pas new file mode 100644 index 0000000..ede2cef --- /dev/null +++ b/src/serverprotocol/PasLS.JcfUINull.pas @@ -0,0 +1,80 @@ +// Pascal Language Server +// Copyright 2026 Simon Hsu + +// This file is part of Pascal Language Server. + +// Pascal Language Server is free software: you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 of +// the License, or (at your option) any later version. + +// Pascal Language Server is distributed in the hope that it will be +// useful, but WITHOUT ANY WARRANTY; without even the implied warranty +// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Pascal Language Server. If not, see +// . + +unit PasLS.JcfUINull; +{$mode ObjFPC} +interface + +uses + System.UITypes, ParseTreeNode,JcfUiTools; + +type + TJcfUINull = class(TJcfUIBase) + public + procedure UpdateGUI(aCounter: integer = 0; aUpdateInterval: integer = 512); override; + function MessageDlgUI(const aMessage: string): TModalResult; override; + procedure ShowErrorMessageUI(const aMessage: string); override; + procedure SetWaitCursorUI; override; + procedure RestoreCursorUI; override; + procedure ShowParseTreeUI(const pcRoot: TParseTreeNode); override; + function OpenDocumentUI(const aPath: string): boolean; override; + end; + +implementation + +procedure TJcfUINull.UpdateGUI(aCounter: integer; aUpdateInterval: integer); +begin + +end; + +function TJcfUINull.MessageDlgUI(const aMessage: string): TModalResult; +begin + /// The Language Server Protocol (LSP) must remain non-blocking. + /// When user confirmation or a dialog interaction is required, + /// it defaults to "OK" or "Yes" to ensure continuous execution. + Result := mrOK; +end; + +procedure TJcfUINull.ShowErrorMessageUI(const aMessage: string); +begin + +end; + +procedure TJcfUINull.SetWaitCursorUI; +begin + // ignore +end; + +procedure TJcfUINull.RestoreCursorUI; +begin + // ignore +end; + +procedure TJcfUINull.ShowParseTreeUI(const pcRoot: TParseTreeNode); +begin + // ignore +end; + +function TJcfUINull.OpenDocumentUI(const aPath: string): boolean; +begin + // LSP should not open documents in an editor. + Result := True; +end; + +end.