VIM: Python-Source-Code falten

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.
midan23
User
Beiträge: 137
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Montag 28. August 2006, 11:58

Hallo,

ich verwende meistens VIM (derzeit Version 7.0) als Editor für meine Python-Programme und würde da auch gerne Textfaltungen verwenden.
Bisher habe ich allerdings nichts wirklich brauchbares gefunden ...

"python_fold.vim" ist zwar ganz nett, aber die Anwendung ist mir etwas zu kompliziert.

Eine Suche brachte mich zum Vim Tip #741, was schon eher dem entspricht, was ich suche ... also hab ich den Tip in die Vim-Syntax-Datei für Python integriert:

Zuerst hab ich die Datei "python.vim" in mein "syntax"-Ordner kopiert ($HOME/.vim/syntax).
Danach hab ich diese Datei an folgenden Stellen geändert:

Code: Alles auswählen

syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
ersetzt durch

Code: Alles auswählen

"syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
syn match pythonStatement /\<def\>/ nextgroup=pythonFunction skipwhite
syn match pythonStatement /\<class\>/ nextgroup=pythonFunction skipwhite
Diesen "if"-Block

Code: Alles auswählen

if exists("python_highlight_all")
  let python_highlight_numbers = 1
  let python_highlight_builtins = 1
  let python_highlight_exceptions = 1
  let python_highlight_space_errors = 1
endif
hab ich um eine Zeile

Code: Alles auswählen

  let python_enable_folds = 1
ergänzt. Und nach dem "if"-Block von "python_highlight_space_errors" hab ich noch diesen

Code: Alles auswählen

if exists("python_enable_folds")
    syntax region pythonFold start="^\z(\s*\)\%(class\|def\)" end="^\%(\n*\z1\s\)\@!" transparent fold
    set foldmethod=syntax
endif
hinzugefügt.

Soweit funktioniert alles so wie ich es haben will ... bis auf eine Kleinigkeit:
Dekoratoren gehören eigentlich mit zur Funktions-Definistion ... und werden leider nicht mit gefaltet ...

Weiss da jemand, wie ich das mit einbauen kann ?
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Sonntag 3. September 2006, 13:24

Soweit ich das verstanden habe willst du deine Funktionen und Klassen Collapsen oder? Dafür eignet sich eclipse mit dem PyDev PlugIn.
midan23
User
Beiträge: 137
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Sonntag 3. September 2006, 13:57

Mag sein, das sich Eclipse mit Plugin eignet ...

Aber eigentlich bevorzuge ich VIM als Editor.

(Mal abgesehen davon, das Eclipse auf einem P3 mit 128MB RAM unter WinNT mit SP6 nicht wirklich Spass macht ...)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 3. September 2006, 14:24

midan23 hat geschrieben:Aber eigentlich bevorzuge ich VIM als Editor.
Same here.

Ich nutze zwar Folding nicht, aber es geht in vim sehr einfach, wie Bill Mill hier beschreibt. Das ist eigentlich sehr einfach und funktioniert eigentlich sehr gut, auch ohne irgendwelche weiteren vim-Module oder andere Anpassungen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
midan23
User
Beiträge: 137
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Sonntag 3. September 2006, 14:48

Hab ich auch schon gelesen ... leider ist so was wie

Code: Alles auswählen

set foldmethod=indent
überhaupt nicht das, was ich möchte.
Mit "indent" wird alles gefaltet, also auch if, for ...

Ich möchte aber nur Klassen- und Funktions-Definitionen falten und eventuelle Dekoratoren in die Faltung der dazu gehörigen Funktion unterbringen ...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Montag 4. September 2006, 07:23

midan23 hat geschrieben:Mag sein, das sich Eclipse mit Plugin eignet ...

Aber eigentlich bevorzuge ich VIM als Editor.

(Mal abgesehen davon, das Eclipse auf einem P3 mit 128MB RAM unter WinNT mit SP6 nicht wirklich Spass macht ...)
War ja nur ein vorschlagt von mir gewesen ;) Ja hast aber recht, Eclipse ist schon recht Ressourcen fressend. Das gute an Eclips ist aber das es halt für zimmlich alle Programmiersprachen PIs gibt und es sehr mächtig vom Funktionsumfang ist :) Man kann sich in Eclips sogar eigene Syntax highlighting PIs (für eigen Sprachen) Programmieren.

Ich will dich aber jetzt nicht von irgendwas überzeugen ;) In diesem sinne B2T

lg
Nirven
User
Beiträge: 130
Registriert: Mittwoch 10. Mai 2006, 08:18
Wohnort: Bremerhaven

Montag 4. September 2006, 07:42

Jo, aber Ecllipse findet bei mir andauernd Fehler, wo keine sind (bzw, wenn ich die Fehler behoben habe, merkt Ecllipse das nicht). Kann man dem irgendwie sagen, dass er einen bestimmten Fehler ignorieren soll?

Ansonsten tut er wirklich alles was ich will, da stört mich auch die etwas lange Anlaufzeit nicht (wenn es schnell gehen soll nehm ich eh Notepad++)

Sorry fürs hijacken des Threads...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Montag 4. September 2006, 14:30

Welche Version von Eclipse und welches Python-PlugIn für Eclipse benutzt du? Hab solche Probleme nämlich nicht.

EDIT: Ja stimmt ist echt Off Topic! Schick mir mal ne PM.

B2T
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 4. September 2006, 19:09

XtraNine hat geschrieben:Das gute an Eclips ist aber das es halt für zimmlich alle Programmiersprachen PIs gibt und es sehr mächtig vom Funktionsumfang ist :) Man kann sich in Eclips sogar eigene Syntax highlighting PIs (für eigen Sprachen) Programmieren.
Das als Vorteil von Eclipse gegenüber Vim anführen zu wollen scheint mir keine so gute Idee zu sein. Mein guter, alter vim 6.3 aus Debian Sarge hat immerhin - out of the box - unterstützung für 409 Dateitypen der verschiedensten Programmiersprachen. Natürlich kann man auch eigene hinzufügen, aber warum, wenn vim doch alles kann? An diesem Punkt ist vim schwer zu schlagen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Montag 4. September 2006, 21:11

Leonidas hat geschrieben:
XtraNine hat geschrieben:Das gute an Eclips ist aber das es halt für zimmlich alle Programmiersprachen PIs gibt und es sehr mächtig vom Funktionsumfang ist :) Man kann sich in Eclips sogar eigene Syntax highlighting PIs (für eigen Sprachen) Programmieren.
Das als Vorteil von Eclipse gegenüber Vim anführen zu wollen scheint mir keine so gute Idee zu sein. Mein guter, alter vim 6.3 aus Debian Sarge hat immerhin - out of the box - unterstützung für 409 Dateitypen der verschiedensten Programmiersprachen. Natürlich kann man auch eigene hinzufügen, aber warum, wenn vim doch alles kann? An diesem Punkt ist vim schwer zu schlagen.
Ich häng noch ein paar Dinge an: Mein Vim kann mir problemlos 20 Dateien in den Buffer laden, ich kann schnell hin und herschalten. Kann das Fenster mit einem Befehl beliebig Teilen. Ein und die selbe Datei zweimal öffnen, er greift automatisch auf den Buffer zurück und sozusagen den Dateiheader und die unten liegenenden Funktionen vergleichen. Kann mit einem Befehl Marker setzten und wieder ansprechen. Mit einem Befehl mit regulären Ausdrücken ersetzen. Bei Bestimmten Aktionen scripts triggern (buffer geschrieben, buffer gelesen etc), Kann in allen encodings dieser Welt speichern, automatisch die -*- coding: deklarationen -*- einlesen etc.
Nie wieder ohne vim sag ich da nur.
TUFKAB – the user formerly known as blackbird
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Montag 4. September 2006, 22:18

@Leonidas:
@blackbird:


Und worauf wollt ihr hinaus?

Hab doch nur ein Tipp gegebne und wollte hier keine Grundsatzdiskussion auslösen :)


Wenn der Tipp nicht gut von mir war ist ja OK. Man muss ja nicht gleich so mit der Tür ins Haus fallen mit aussagen wie:
Das als Vorteil von Eclipse gegenüber Vim anführen zu wollen scheint mir keine so gute Idee zu sein.
Leonidas, Wo genau hab ich das den behauptet dass es ein Vorteil von Eclipse gegenüber VIM wäre?
Ich habe lediglich gesagt:
Das gute an Eclips ist aber das es halt für zimmlich alle Programmiersprachen PIs gibt und es sehr mächtig vom Funktionsumfang ist :) Man kann sich in Eclips sogar eigene Syntax highlighting PIs (für eigen Sprachen) Programmieren.
Das ist doch ein ganz einfach aussage von mir die beinhaltet das ich Eclipse gut finde und diese Eigenschaft und noch andere sehr schätze :). Dort ist nirgends was zu lesen das es besser oder ein Vorteil gegenüber Vim hätte! ;)


Aber aus eurer Reaktion kann man sehr gut deuten das ihr euch anscheinend Indirekt angegriffen fühlt (aus welchen gründen auch immer). Hmmm, da fällt mir Spontan der Begriff Fanboy ein ;) Ihr wisst? Mein Auto ist besser als deins weil es mehr PS hat mehr Extras und so weiter -> Auf dein Beispiel bezogen:
Mein guter, alter vim 6.3 aus Debian Sarge hat immerhin - out of the box - unterstützung für 409 Dateitypen der verschiedensten Programmiersprachen. Natürlich kann man auch eigene hinzufügen, aber warum, wenn vim doch alles kann? An diesem Punkt ist vim schwer zu schlagen.
Alles klar? Wiest ihr worauf ich hinaus will? So was kann man vielleicht von nem Giga.de Forum wo nur Kidis rumhängen erwarten aber doch nicht von einem Angeblichen Seriösen Forum wie hier, wo sich scheinbar Intellektuelle Programmiere rum treiben!

Also ehrlich wenn ihr alle neue User mit gekränkten Stolz (und Fanboy gehabe) begrüßt, kann diese (eigentlich gute) Community auch nicht wachsen ;)

Wie gesagt ich wollte keinen Vergleich zwischen Eclipse und Vim machen sondern nur sagen das mir Eclipse gut gefällt und es eben die Funktion des Collapsen von Funktionen und Klassen bietet und noch andere. Wollte damit nur helfen und nicht mehr…Ihr seit aber nun der Meinung das ihr mit der "meines ist besser"–Mentalität reagieren müsst? Hmmm, Traurig…

Was sagt den eigentlich der gerold dazu? (An dieser stelle vielen dank für deine sehr kompetenten Post und dein Hilfsbereitschaft. Viel deine Posts haben mir shcon ebi etlichen Problemen geholfen :) )

Am besten fangen wir noch mal von vorne an und nimmt einen neune User mit dem Respekt in eure Community auf den man zu erwarten hat. Dazu gehört das man erstmal den Neuzugang höflich begrüßt, so wie es sich im allgemeinen in der Gesellschaft gehört, und nicht so wie bisher ;)

lg
BlackJack

Montag 4. September 2006, 22:53

Ich versteh's auch nicht so recht. Eclipse... vim...

Emacs ist der einzig wahre Editor! Alles fehlgeleitete Irre hier. :twisted:
midan23
User
Beiträge: 137
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Dienstag 5. September 2006, 06:44

Leute, nichts für ungut, aber diese ganze Diskussion zum Thema "mein Editor ist der Beste, der Rest taugt nichts" hat hier nichts verloren ...
(Meiner Meinung nach ist ein Editor nur ein Werkzeug, und da sollte jeder das nehmen, mit dem er am Besten klar kommt ...)

Ich wollte nur wissen, wie ich VIM beibringen kann, Dekoratoren zu falten.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 5. September 2006, 07:16

midan23 hat geschrieben:Ich wollte nur wissen, wie ich VIM beibringen kann, Dekoratoren zu falten.
Soll er dann den Dekorator in der Faltung anzeigen oder die Funktion?

@XtraNine: Da fehlten ein paar Smilies. :roll:
TUFKAB – the user formerly known as blackbird
midan23
User
Beiträge: 137
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Dienstag 5. September 2006, 09:33

Nochmal mein Ziel in Kürze:
  • Klassen:
    • - Jede Klassendefinition ist eine Faltung
      - Als gefalteter Text wird angezeigt:
      • + Anzahl Zeilen
        + der komplete Text von "class" bis zum ":" (einschliesslich)
    Funktionen ohne Dekorator(en):
    • - Jede Funktion, egal ob alleinstehend oder als Methode innerhalb eine Klasse, ist eine Faltung
      - Als gefalteter Text wird angezeigt:
      • + Anzahl Zeilen
        + der komplete Text von "def" bis zum ":" (einschliesslich)
    Funktionen mit Dekorator(en):
    • - Jede Funktion ist eine Faltung, inklusive Dekorator(en)
      - Als gefalteter Text wird angezeigt:
      • + Anzahl Zeilen
        + def komplete Text von "def" bis zum ":" (einschliesslich)
Die ersten beiden Punkte hab ich schon, nur der Dritte fehlt noch ...

Ich schätze, fürs Anzeigen der gefalteten Texte wird eine VIM-Funktion notwendig sein ...
Wie ich die Dekoratoren mit in die Faltung bekomme ... keine Ahnung ...
Antworten