Autovervollständigung von "Komodo Edit"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Sonntag 21. Dezember 2008, 19:13

Hallo!

Es hat mich mal wieder interessiert. Deshalb habe ich "Komodo Edit" installiert und ausprobiert. Entweder ich schaffe es nicht dieses Ding richtig einzustellen, oder die dort eingebaute Codevervollständigung für Python ist ein Witz.

Was muss man einstellen, dass nach Eingabe von "wx." die möglichen Objekte wie z.B. "wx.Frame" oder "wx.Panel" in der Liste auftauchen?

Oder wenn ich z.B. das hier eingebe:

Code: Alles auswählen

app = wx.PySimpleApp()
Dann möchte ich, dass nach erneutem Eingeben von ``app.`` auch die Methode ``app.MainLoop()`` aufscheint. -- Nichts!

Was muss man bei "Komodo Edit" einstellen, dass das funktioniert?

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Sonntag 21. Dezember 2008, 20:41

Ich habe hier noch die 5.0.0-beta1 (Windows XP), da klappts auch irgendwie nur "halb bis garnicht".
Sprich, wenn ich den Code "import wx" stehen habe, und dann "wx." tippe, bekomme ich zwar eine (lange) Autovervollständigungs-Liste, aber es fehlt viel (z.B. wx.Frame und manches andere).
Bei deinem wx.PySimpleApp-Beispiel ist bei mir die Liste auch nicht vollständig. Ich kriege bei Eingabe von "app." nur zwei Einträge (OnInit und __init__).
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Sonntag 21. Dezember 2008, 22:02

Probiert mal Editra, da funktioniert das anscheinend recht gut. Bei dem genannten Beispiel bekomme ich bei app. jedenfalls ne laaaange Liste
BlackJack

Sonntag 21. Dezember 2008, 22:25

@gerold: Es ist halt immer die Frage ob eine IDE den Quelltext statisch analysiert, oder das Modul importiert und damit Seiteneffekte riskiert und der Inhalt von `wx.__all__` wird beim Importieren per Code aufgefüllt. Wenn eine IDE also `__all__` als Hinweis nimmt, was zur öffentlichen API gehört, kommt man mit statischer Analyse nicht weit.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Montag 22. Dezember 2008, 11:08

Inzwischen bin ich der Überzeugung, dass eine dynamische und interaktive Programmiersprache wie Python von einer IDE nur dann gut unterstützt wird, wenn diese nicht eine tote Schablone des Programms (also nur die Dateien des Programms), sondern das aktive lebende Programm untersucht. Smalltalk funktionierte schon immer so; Lisp-Maschinen ebenfalls. Leider beisst sich das etwas mit dem Konzept von Dateien, aber die Welt ist nicht perfekt.

Der Slime-Mode des Emacs ist eigentlich ein schönes Beispiel, was es so ähnlich vielleicht schon für Python gibt oder wenn nicht, geben sollte.

Problematisch sind leider Seiteneffekte, die beim erneuten Laden von Modulen entstehen können. Hier muss man einfach entsprechende Konventionen einführen, das diese einem das System nicht zerschießen und einen Neustart erzwingen. Die "Uptime" eines solchen Systems sollte sich in Wochen und Monaten und nicht in Minuten oder Stunden messen lassen.

Bei Clojure finde ich beispielsweise den Gedanken faszinierend, einen Webserver mit einer Kommandozeile zu haben, über die ich jederzeit im laufenden Betrieb Änderungen, Ergänzungen oder einfach nur Status-Anfragen durchführen kann. Und das - im Gegensatz zu Seaside (mit Squeak-Smalltalk) - auch per SSH und dank screen auf einem entfernen Rechner von überall, wo ich eine Konsole habe. Seaside würde VNC benötigen.

Stefan
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Montag 22. Dezember 2008, 11:56

BlackJack hat geschrieben:@gerold: Es ist halt immer die Frage ob eine IDE den Quelltext statisch analysiert, oder das Modul importiert und damit Seiteneffekte riskiert und der Inhalt von `wx.__all__` wird beim Importieren per Code aufgefüllt. Wenn eine IDE also `__all__` als Hinweis nimmt, was zur öffentlichen API gehört, kommt man mit statischer Analyse nicht weit.
Malzeit, also ich habe mich eigentlich noch nie damit befasst wie eine Codevervollständigung implementiert wird. Ich bin blauäugiger Weise immer davon ausgegangen das man einfach einmal den code ablaufen würde, und schon auf alle bekannten Objekte stoßen würde. Was dann wie gehandhabt wird war mir als Anwender immer egal. Nu bin ich aber neugierig geworden da es bei den Editoren und IDE's für Python ja schon erhebliche Unterschiede gibt.
Was gibts denn wenn ich den Programmcode einlese für Seiteneffekte? Wie gesagt - ich hab von dem Thema nicht wirklich Ahnung, eventuell gibts da ja was zum Einlesen in die Materie für nen unwissenden wie mich?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 22. Dezember 2008, 12:14

Hallo!

Gut, dann bleibe ich bei WingIDE. Denn die Codevervollständigung funktioniert bei WingIDE fast perfekt. Und ohne gute Codevervollständigung müsste ich mir mehr merken als in mein kleines Hirn passt.

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Montag 22. Dezember 2008, 12:22

@Lonestar In Python kann alles dynamisch erzeugt werden, darum ist es mit einem einlesen - => statische Analyse - ja nicht getan, sondern der Code muss ausgeführt werden. Was das für Seiteneffekte sind, ist natürlich abhängig von dem jew. Code, aber ich denke das kann man sich ganz gut vorstellen ;)
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Montag 22. Dezember 2008, 12:43

@Gerold: was ist mit Eclipse und PyDev?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 22. Dezember 2008, 12:49

burli hat geschrieben:@Gerold: was ist mit Eclipse und PyDev?
Hallo burli!

Wer will denn schon für jede kleine Python-Datei ein Projekt anlegen...
Aber irgendwann werde ich PyDev mal wieder testen. Denn die Codevervollständigung von PyDev soll angeblich gar nicht so schlecht sein.

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Montag 22. Dezember 2008, 12:53

Das ist wahr. Ohne Projekt geht bei Eclipse nicht. Aber wer braucht für einzelne Dateien schon ne Autovervollständigung? ;)

Ich würde dir da aber echt nochmal Editra an's Herz legen. Ist IMHO mittlerweile brauchbar
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 22. Dezember 2008, 13:00

Hallo burli!
burli hat geschrieben:Aber wer braucht für einzelne Dateien schon ne Autovervollständigung? ;)
Ich!
burli hat geschrieben:Ich würde dir da aber echt nochmal Editra an's Herz legen.
Zum schnellen Durchsehen von Python-Dateien oder für kleine Änderungen ist es schon brauchbar. Zum Programmieren fehlen schon noch ein paar Dinge. Aber Editra ist ja ein Editor und keine IDE und als Editor gar nicht mal so schlecht.

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Montag 22. Dezember 2008, 13:10

gerold hat geschrieben: Aber Editra ist ja ein Editor und keine IDE und als Editor gar nicht mal so schlecht.
Hm, was macht den Unterschied aus zwischen Editor und IDE? Ich finde, Editra fehlt nicht viel für eine Python IDE.

Ok, man merkt, das Editra eigentlich noch Alpha ist. Bei der aktuellen Version hab ich das Problem, das Editra abstürzt wenn man die Panels verschiebt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 22. Dezember 2008, 13:24

gerold hat geschrieben:Aber irgendwann werde ich PyDev mal wieder testen. Denn die Codevervollständigung von PyDev soll angeblich gar nicht so schlecht sein.
Bei mir hats letztens nicht gescheit getan. Und dann war da noch die Eclipse-Fürchterlichkeit an sich (schon mal versucht damit Java zu schreiben? Da blinkt und poppt dauernd was auf; wie soll man so arbeiten?).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 22. Dezember 2008, 13:43

burli hat geschrieben:Hm, was macht den Unterschied aus zwischen Editor und IDE?
Hallo burli!

Ich will jetzt nicht die Features von WingIDE aufzählen. Schau' es dir an, dann weißt du was ich mir unter einer IDE vorstelle. Als IDE gehen bei mir also gerade mal Komodo, WingIDE und Eclipse durch. IDLE hat zwar einen Codebrowser und einen Debugger, aber ich sehe in IDLE nur den Ansatz einer brauchbaren IDE.

IDEs sind z.B. Visual Studio von Microsoft, Delphi, Adobe Flash, Adobe Dreamweaver, TopStyle, Visual Basic 6 oder SQL-Manager.

Für Python muss eine gute IDE, in meinen Augen, unter Anderem diese Features beherrschen:
- Syntax Highlighting
- gute Codevervollständigung ist das A und O (``s = "", x = s, x.`` spätestens beim letzten Punkt müssen die String-Methoden in der Liste auftauchen)
- Anzeige der Parameter und Docstrings der markierten Funktion, gehört einfach dazu. Und das nicht nur, wenn man die öffnende Klammer eingibt. Ich kann doch nicht jedes mal, wenn ich Infos über die Funktion brauche, die Klammer löschen und neu eingeben...
- Debugger
- - Breakpoints
- - Schrittweise Durchlaufen des Codes
- - Anzeige einer Aufrufliste (Call-Stack)
- - Nachverfolgung der Execptions (Traceback-Liste) und Springen zur fehlerhaften Zeile, wenn man den Traceback anklickt.
- Springen zur Definition, der markierten Funktion
- Automatisches Erkennen und Umwandeln des Dateiencodings
- Codebrowser (Objekte, Klassen, Funktionen, Methoden eines Moduls anzeigen)
- Automatische Code-Einrückung
- Auflistung der zum Programm gehörenden Module (Projektmanagement)

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten