AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IDE, Inline Variablen und Strg+Klick

Ein Thema von mariusbenz · begonnen am 12. Okt 2020 · letzter Beitrag vom 14. Okt 2020
Antwort Antwort
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#1

IDE, Inline Variablen und Strg+Klick

  Alt 12. Okt 2020, 13:15
Delphi-Version: 10.4 Sydney
Folgender simpler Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Foo(S : String);
    procedure Foo2(S : String);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
  begin
    Foo('');
  end;

procedure TForm1.Button2Click(Sender: TObject);
  begin
    Foo2('Hello World');
  end;

procedure TForm1.Foo(S: String);
  begin
    if S = 'then
      begin
        var S_Empty := S;
        ShowMessage(S_Empty);
      end
    else
      begin
        var S_NotEmpty := S;
        ShowMessage(S_NotEmpty);
      end;
  end;

procedure TForm1.Foo2(S: String);
  var S_Empty, S_NotEMpty : String;
  begin
    if S = 'then
      begin
        S_Empty := S;
        ShowMessage(S_Empty);
      end
    else
      begin
        S_NotEmpty := S;
        ShowMessage(S_NotEmpty);
      end;
  end;

end.
Mit einem Strg+Klick auf die Prozeduren Foo und Foo2 gelangt man hierbei immer nur zur Deklaration im interface.
Kommentiert man den Code in der Prozedur Foo aus, landet man wie gewohnt durch Strg+Klick im implementation Abschnitt.
Könnt ihr das bei euch nachvollziehen oder wisst ihr eine Lösung außer "benutze keine Inline Variablen"

Als ich einem größeren Projekt Inlinevariablen bei einer Prozedur in einem ähnlichen Schema eingebaut hab, konnte ich bei der Hälfte der Prozeduren Strg+Klick nicht mehr benutzen. Auch Refactoring war damit in den betroffenen Funktionen lahmgelegt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: IDE, Inline Variablen und Strg+Klick

  Alt 12. Okt 2020, 13:25
Dieses Feature ist im Compiler drin, aber das war es dann auch.

CodeInsight kennt es noch nicht oder nicht richtig und raucht beim Auffinden ab,
womit sowas hier eben nicht mehr funktioniert, ebenso wie Klassenvervollständigung und Dergleichen.

Vielleicht geht es im 10.5 wieder. (oder später, wenn man sich ansieht, wie lange andere Bugs existieren)



Ach ja, du hast nicht auf das alte Code-Insight umgestellt?
> Code Insight-Manager = Delphi (Classic Code insight)
Dort geht sowas garnicht und es wird auch niemals gehen, da dort nichts mehr dran gemacht wird.

Benutzeroberfläche > Editoroptionen > Quelloptionen > Typ=Delphi > Code Insight > Code Insight-Manager = Delphi (Sprachprotokollserver aka LLVM)
$2B or not $2B

Geändert von himitsu (12. Okt 2020 um 13:35 Uhr)
  Mit Zitat antworten Zitat
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: IDE, Inline Variablen und Strg+Klick

  Alt 12. Okt 2020, 14:34
Ich benutze den neuen Code-Insight, weil Inline-Variablen da seit 10.4.1 nicht mehr angemeckert werden, aber dann werde ich wohl weiterhin darauf verzichten müssen.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#4

AW: IDE, Inline Variablen und Strg+Klick

  Alt 12. Okt 2020, 21:05
Ist dieses Strg-Click LLVM Problem bereits in QP erfasst?
Falls nicht, kann es bitte erfasst werden? Sonst tut sich da evtl. nie was.
Und ja: LLVM ist an ein paar Stellen noch etwas grün hinter den Ohren, wird
aber meines Wissens nach durch jedes Update besser und ist generell denke ich
die richtige Richtung, nur halt noch nicht weit genug.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: IDE, Inline Variablen und Strg+Klick

  Alt 12. Okt 2020, 21:33
Das Problem, dass CodeInsight mit LLVM mit den neuen Features noch nicht geht, gab es schon irgendwo Meldungen.

Und wenn das nicht mehr arbeitet, geht auch alles nicht mehr, was das verwendet.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: IDE, Inline Variablen und Strg+Klick

  Alt 14. Okt 2020, 11:10
Delphi (Sprachprotokollserver aka LLVM)
Du meinst wohl eher LSP - was für Language Server Protocol steht - LLVM ist eine Compilerarchitektur/-infrastruktur, die in den Delphi Compilern für Android, iOS, Linux und macOS 64bit genutzt wird.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (14. Okt 2020 um 11:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: IDE, Inline Variablen und Strg+Klick

  Alt 14. Okt 2020, 11:25
stimmt (darf's nicht mehr ändern ... du warst zu langsam )

LLVM war das für das compiler-zwischencodezeugs (LLVM und Co. können es, da es sich ja compilieren lässt ... wäre zu praktisch, wenn LLVM auch das LSP benutzen würde, dann wäre es immer aktuell)
und LSP das (noch) geheime mache aus Sourcecode eine Baumstruktur (geheim, weil noch keine definition/dokumentation gefunden, damit auch andere das benutzen können)
$2B or not $2B

Geändert von himitsu (14. Okt 2020 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: IDE, Inline Variablen und Strg+Klick

  Alt 14. Okt 2020, 15:30
An LSP ist gar nix geheim und der Link zur Spezifikation befindet sich sogar in dem von mir verlinkten Wikipedia Artikel.
Was geheim ist und auch bleiben wird, ist die Implementierung für Delphi von Embarcadero.
Und ich wage zu behaupten, dass diese auch nicht vollständig ist, so dass du nicht einfach die DelphiLSP.exe nehmen kannst und sie von nem VisualStudioCode ansprechen kannst.

LLVM an sich wird nicht automatisch irgendwas für die Konsumierung über LSP bereitstellen können, da das was über das LSP bereitgestellt wird, eine Aufgabe des Frontends ist. Und dieses ist spezifisch für die Programmiersprache, im Falle von Delphi ist das der Teil eines LLVM basierten Compilers, den Embarcadero entwickelt. Welche Frontend Teile nun in der DelphiLSP.exe werkeln, weiß ich nicht - also ob das die Teile des "classic" Compilers sind, also das, was von dcc32.exe genutzt wird oder das LLVM Frontend und inwiefern die überhaupt irgendeine Gemeinsamkeit haben.
Was Embarcadero "geschenkt" bekommt, sind die Backends für die Zielplattformen, sie müssen sich also nicht um die Codegenerierung für iOS, Android, Linux etc kümmern, sondern das "lediglich" verdrahten (was durchaus mehr Arbeit ist, als man denken mag, vor allem das ganze Runtime Wireup).

Was LSP alles an API anbietet, und was demnach alles in einer Implementierung für die Sprache bereitgestellt werden kann, kann man am Beispiel von clangd sehen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (14. Okt 2020 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz