Scintilla Falten

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Scintilla Falten

Beitrag von CSHW89 »

Halli hallo,
also, ich hab mal wieder ne frage. ich schreibe gerade an einem eigenen editor. ich hab einiges schon drin, wie syntaxhight, autocompletion, ect...
allerdings möchte ich auch die möglichkeit haben text auszublenden:
ich hab mal in der scintilla-hilfe bestöbert, und hab ne möglichkeit gefunden. allerdings muss ich das falten komplett manuell programmieren, so von wegen: erst marker setzen, zeile 10 kästchen mit plus, zeile 11-14 querstrich, zeile 15 endfolding. und dann müsste ich überprüfen, ob zeile 10 geklickt wurde, und müsste dann zeile 11-15 verstecken.
ist das die einzige möglichkeit oder gibt es auch noch eine bessere von wegen: foldingstart in zeile 10, und foldingend in zeile 15 setzten. und scintilla macht alles selber. ich hoffe das funktioniert so wie ich mir das denke, schön wenn jemand ein code dafür hätte. danke schon mal
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: Scintilla Falten

Beitrag von LCD »

CSHW89 hat geschrieben:Halli hallo,
also, ich hab mal wieder ne frage. ich schreibe gerade an einem eigenen editor. ich hab einiges schon drin, wie syntaxhight, autocompletion, ect...
allerdings möchte ich auch die möglichkeit haben text auszublenden:
ich hab mal in der scintilla-hilfe bestöbert, und hab ne möglichkeit gefunden. allerdings muss ich das falten komplett manuell programmieren, so von wegen: erst marker setzen, zeile 10 kästchen mit plus, zeile 11-14 querstrich, zeile 15 endfolding. und dann müsste ich überprüfen, ob zeile 10 geklickt wurde, und müsste dann zeile 11-15 verstecken.
ist das die einzige möglichkeit oder gibt es auch noch eine bessere von wegen: foldingstart in zeile 10, und foldingend in zeile 15 setzten. und scintilla macht alles selber. ich hoffe das funktioniert so wie ich mir das denke, schön wenn jemand ein code dafür hätte. danke schon mal
Für welche Spreche? Statt Scintilla kann man Scilexer nehmen, das hat dann eingebaute Sprachen die auch Folding beinhalten.
In der Hilfe habe ich folgendes gefunden:
SCI_SETPROPERTY(const char *key, const char *value)
You can communicate settings to lexers with keyword:value string pairs. There is no limit to the number of keyword pairs you can set, other than available memory. key is a case sensitive keyword, value is a string that is associated with the keyword. If there is already a value string associated with the keyword, it is replaced. If you pass a zero length string, the message does nothing. Both key and value are used without modification; extra spaces at the beginning or end of key are significant.

The value string can refer to other keywords. For example, SCI_SETPROPERTY("foldTimes10", "$(fold)0") stores the string "$(fold)0", but when this is accessed, the $(fold) is replaced by the value of the "fold" keyword (or by nothing if this keyword does not exist).

Currently the "fold" property is defined for most of the lexers to set the fold structure if set to "1". SCLEX_PYTHON understands "tab.timmy.whinge.level" as a setting that determines how to indicate bad indentation. Most keywords have values that are interpreted as integers. Search the lexer sources for GetPropertyInt to see how properties are used.

There is a convention for naming properties used by lexers so that the set of properties can be found by scripts. Property names should start with "lexer.<lexer>." or "fold.<lexer>." when they apply to one lexer or start with "lexer." or "fold." if they apply to multiple lexers.
So ganz verstehe ich das nicht, aber vielleicht kann man damit bestimmten Keywords Faltfunktionen und Autoindentation zuweisen.
Vielleich weiß Jemand hier wie man das genau benutzt, denn aus dem Source code werde ich nicht schlau.
Ich habe z.B. den FreeBasic Lexer genommen.
Function/End Function und Sub/End Sub werden automatisch gefaltet, aber Asm/End Asm dagegen nicht, und das würde ich gerne hinzufügen, genauso wie bei '{ / '}. Kennt sich da Jemand genauer aus mit den Properties?

Viele Grüße
Ein Leichenschänder der keinen eigenen Fred aufmachen will :wink:
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Re: Scintilla Falten

Beitrag von tmjuk »

Hej,

guckst du mal http://forums.purebasic.com/german/view ... =8&t=22214

Ich hatte es mit der GoSCI von SRod probiert. Ging ganz gut.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: Scintilla Falten

Beitrag von LCD »

Ich machen Gucki!
Schaut recht gut aus, außer dass es eine dll Library ist. Wenn die nicht mehr gepflegt wird, sehe ich schwarz. Vor allem in Hinsicht auf die Tatsache dass z.B. die IFF-Lib seit PB4.0 nur noch crasht. Mir wäre aus dem Grund eine native Lösung lieber, aber mal sehen... Ich werde es mir auf jeden Fall durchprobieren.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Scintilla Falten

Beitrag von bobobo »

mal wieder
http://www.purebasic.fr/german/viewtopi ... 06#p271206

das nächste mal les ich genauer hin :oops:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: Scintilla Falten

Beitrag von LCD »

Nee, das ist Line Wraping, das habe ich bereits viel einfacher realisiert.

Und betreffend GoScintilla 2.0: Ich scheine Pech zu haben: Worte werden mit Space getrennt, also geht das Faltende-Keyword nicht mit "END FUNCTION" oder "END SUB", denn END alleine als Faltende will ich nicht einsetzen, denn END alleine bedeutet Programmende. Schade dass Scintilla-Entwickler nicht das Trennzeichen customisierbar gemacht haben. Aber ich werde mal im Include nachbohren (Zum Glück doch keine DLL).
Beim SciLexer wenn ich FreeBasic Lexer aktiviere, funktioniert das Faltende mit END SUB und END FUNCTION ohne Probleme. Das von mir entwickelte IDE soll aber nicht für FreeBASIC sein sondern für ZXBC.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Scintilla Falten

Beitrag von ts-soft »

Vielleicht erstmal die Hilfe lesen oder Beispiele testen?
...\GoScintilla 2\Demos\AdvancedDemos\Multiword keywords\Multiword.pb
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: Scintilla Falten

Beitrag von LCD »

ts-soft hat geschrieben:Vielleicht erstmal die Hilfe lesen oder Beispiele testen?
...\GoScintilla 2\Demos\AdvancedDemos\Multiword keywords\Multiword.pb
:oops:
Tja, Du hättest genausogut LTFE (Load the fucking Examples) schreiben können.... Danke, ts-soft. Ich werde langsam alt. So, jetzt muss ich den Editor von meinem SciLexer Wrapper auf GoScintilla 2.0 umschreiben. Das Programm ist besser als ich dachte. Ein Segen für alle die Editoren schreiben wollen.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Antworten