Hilfe - Suche - Mitglieder - Kalender
Vollansicht: Eigene *.sch-files Erstellen?
HTML-Editor phase 5 Support > Fragen, Lösungen zu HTML-Problemen bzw. Webdesign-Fragen - Talk > Proton
Lebostein
Hallo,

nach eifriger Suche und ausprobieren von mindestens 10 Freeware Programmiereditoren bin ich zu dem Schluss gekommen: PROTON ist einfach der beste! icon13.gif

Zu meiner Frage: Da ich im Bereich der FEM (Finite Elemente Methode) andere Programmier- und Scriptsprachen verwende (zum Beispiel ABAQUS oder MSC Patran Command Language) möchte ich für diese Sprachen ein eigenes Highlighting-File erzeugen. Bin auch schon ziemlich weit gekommen, was den Aufbau und das Verständniss der Highlighting-Dateien angeht. Aber einige Befehle usw. sind mir noch ein Rätsel.

Gibt es eine Dokumentation, wie die *.sch-Files aufgebaut sind und welche Befehle man wie einsetzten kann? Gibt es vielleicht eine Art Editor für diese Dateien? Irgendwie muss ja der Programmierer von PROTON auch diese Dateien erzeugt haben.

Vielen Dank!
Andreas
Im Phase5 ist der Schemeseditor integriert: [Einstellungen] -> [Syntaxschema bearbeiten]. Bin mir im Moment aber nicht sicher, ob die P5 Schemes zu den doch älteren Proton Schemes kompatibel sind.

Früher gab's den auch mal einzeln - ohne Support und Doku. Mal schauen, ob ich den noch finde ...
helpy
ZITAT(Andreas @ 23.07.2004 - 14:26)
Bin mir im Moment aber nicht sicher, ob die P5 Schemes zu den doch älteren Proton Schemes kompatibel sind.

hi all,

Also bei mir arbeitet Proton auch mit den Syntaxschemen, die bei Phase5 dabei sind, bzw. von mir mit dem Schema-Editor von Phase5 bearbeitet wurden.

Ich hab' einfach die proton.exe (ohne all die anderen Proton-Dateien) ins phase5 Verzeichnis kopiert ... und bisher nie Probleme gehabt.

cu, Guido
Lebostein
Ah Danke!! Sie sind kombatibel!

Aber scheinbar habe ich einen Bug in der ganzen Highlighting-Sache entdeckt. Und zwar wenn ich ein zusammengesetztes Schlüsselwort definieren will.

Normalerweise sieht es ja so aus:

QUELLTEXT
item
  FontID = 1
  Name = 'keywords'
  Keywords = 'IF, ELSE, END'
end>


In ABAQUS habe ich aber zusammengesetzte Befehle wie zum Beispiel CONTACT PAIR. Also habe ich in den Highlighting-Editor in PHASE 5.3 ein neues Schlüsselwort erzeugt. Der Code dazu sieht jetzt so aus:

QUELLTEXT
item
  FontID = 1
  Name = 'keywords'
  Keywords = 'IF, ELSE, "CONTACT PAIR", END'
end>


Der Editor kennzeichnet also zusammengesetzte Schlüsselwörter (mit einem Leerzeichen dazwischen) durch Anführungsstriche "...."

Aber der Editor (PROTON sowie PHASE 5.3) übergehen das Schlüsselwort CONTACT PAIR, als wäre es gar nicht definiert worden.

Ist das ein Bug oder habe ich was falsch gemacht??

Danke!



EDIT:
PS: hier mal mein Test-Scheme-file. Ihr werdet sehen, CONTACT PAIR wird ignoriert:

QUELLTEXT
object TPersHolder
 P.Name = 'ABAQUS'
 P.SyntaxBlocks = <
   item
     Name = 'Default'
     ID = 0
     UseKeywords = True
     BlockDelimiters = <>
     KeywordSets = <
       item
         FontID = 1
         Name = 'keywords'
         Keywords = 'NODE,STATIC,"CONTACT PAIR",DYNAMIC'
       end>
   end>
 P.FontTable = <
   item
     FontID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clActiveCaption
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = [fsBold, fsItalic]
   end>
 P.SyntaxVersion = 3
end


..einfach kopieren und als *.sch Datei abspeichern...
db
Das ist ja wohl auch mehr als logisch, denn zusammengesetzte Worte sind ein String. Ein Blank ist ein WordDelimiter!

Wenn Du CONTACT PAIR hervorheben möchtest, dann eben als einzeiliger String.

Linker Begrenzer CONTACT

Rechter Begrenzer PAIR
Lebostein
Hm, das würde dann bei vielen solcher Befehle umständlich werden. Ich frag mich nur, warum man dann das mit den Anführungsstrichen in den Scheme-Files eingeführt hat....

Ich hatte nur gedacht, es könnte ein Bug sein, weil man bei NEdit zum Beispiel solche zusammengesetzten Schlüsselwörter auch so ähnlich vorgeben kann:
QUELLTEXT
(|IF|ELSE|CONTACT PAIR|END|)


Aber wenn das vom Autor von PHASE 5 nicht anders vorgesehen ist, dann muss (und kann) ich damit leben. Trotzdem, ein sehr schöner Editor!
helpy
Da hat Dieter vollkommen recht. Ein Leerzeichen ist ein Wortbegrenzer. Würde das Leerzeichen zum Wort gehören, dann gäbe es das Problem, dass ein "IF " (IF mit einem Leerzeichen daran) oder ein IF mit Leerzeichen davor als unbekanntes Schlüsselwort gehandhabt würde. ...

Dazu eine Anmerkung:

In den Syntaxschemas gibt es eine Standardeinstellung, die man mit dem aktuellen Schema-Editor nicht bearbeiten kann:
  • Ein Schlüsselwort muss mit einem der folgenden Zeichen beginnen: A-Z_a-z (Buchstabe oder Unterstrich)
  • Ein Schlüsselwort darf nur folgende Zeichen enthalten: 0-9A-Z_a-z (Buchstabe, Ziffer oder Unterstrich
D.h. es ist nicht möglich Schlüsselworte zu deklarieren, die mit einer Ziffer beginnen. Schlüsselworte, die einen Bindestrich enthalten, sind ebenfalls nicht erlaubt. Obwohl das ja ganz nett wäre, denn in Html gibt es z.B.: Schlüsselworte mit einem Bindestrich, und zwar die Attribute accept-charset und http-equiv.

Hier gibt es eine Lösung, in dem man das Syntaxschema in einem Editor bearbeitet und mit der Anweisung OtherIdentChars = '\-0-9A-Z_a-z' den Bindestrich innerhalb von Schlüsselworten erlaubt. Hier ein Ausschnitt aus meiner *.sch-Datei:
QUELLTEXT
................................................................................
.......
       item
         FontID = 21
         Name = 'attributes'
         Keywords =
           'abbr,accept-charset,accesskey,action,align,alink,alt,archive,axi' +
           's,background,bgcolor,border,cellpadding,cellspacing,char,charoff' +
           ',checked,cite,class,classid,clear,code,codebase,codetype,color,c' +
           'ols,colspan,compact,content,coords,data,datetime,declare,defer,d' +
           'ir,disabled,enctype,face,for,frame,frameborder,headers,height,hr' +
           'ef,hreflang,hspace,http-equiv,id,ismap,label,lang,language,link,' +
           'longdesc,marginheight,marginwidth,maxlength,media,method,multipl' +
           'e,name,nohref,noresize,noshade,nowrap,object,onblur,onchange,onc' +
           'lick,ondblclick,onfocus,onkeydown,onkeypress,onkeyup,onload,onmo' +
           'usedown,onmousemove,onmouseout,onmouseover,onmouseup,onreset,ons' +
           'elect,onsubmit,onunload,profile,prompt,public,readonly,rel,rev,r' +
           'ows,rowspan,rules,scheme,scope,scrolling,selected,shape,size,spa' +
           'n,src,standby,start,style,summary,tabindex,target,text,title,typ' +
           'e,usemap,valign,value,valuetype,version,vlink,vspace,width'
       end>
     OtherIdentChars = '\-0-9A-Z_a-z'
................................................................................
.......


Das wäre z.B. auch für das CSS-Syntaxschema von Vorteil, denn dort gibt es eine Menge von zusammengesetzten Schlüsselworte (CSS-Eigenschaften).

ABER ... wenn man bei OtherIdentChars ein Leerzeichen eingeben würde, dann gibt das sicher ein Chaos!!

Der Umweg über die String-Definition ist daher wohl die einzige Lösung!

cu, Guido

Nachtrag:
Das muss mit Vorsicht angewendet werden, denn, wenn man ein Schema z.B. für eine Programmiersprache verwendet, indem der Bindestrich bzw. das Minuszeichen eben als Minus verwendet wird, dann wird es wohl auch einen Konflikt in der Interpretation geben. Da aber in HTML oder auch in CSS der Bindestrich kein besonderes Zeichen ist, gibt es in diesem Fall keine Probleme. ... oder hab' ich da jetzt etwas nicht bedacht ???
Conny
Hallo Helpy,
vielen Dank für diese Info! icon13.gif

Ich habe schon bis zur Verzweiflung gesucht nach einer Möglichkeit &nbsp; als Keyword ein zu fügen, denn ich bilde mir ein, wenn das &nbsp; sich farblich hervor hebt, lässt sich der Text, in der das Backspace steht, leichter lesen. Gleiches würde übrigens auch für die Umlaute gelten (wenn sie nicht konvertiert werden).

Deine Ausführung zu folge geht das also nicht. mad.gif

Ausser vielleicht mit der Anweisung: OtherIdentChars ?? huh.gif

Oder gibt es hierfür noch einen anderen (besseren) Lösungsansatz?

cu
Conny
helpy
Hi Conny,

Ich hab' es gerade ausprobiert. Ich hab' folgendes Ergebnis bekommen:
ZITAT
<p>TEST: &nbsp; a&nbsp;b !</p>


D.h. Ein Entity, das von zwei Zeichen umgeben ist, die nicht in einem Schlüsselwort vorkommen dürfen, dann wird dieses Erkannt, aber wenn vorher und/oder nachher z.B. ein Buchstabe folgt, dann wird dieses nicht erkannt!

Die andere Lösung: Du kannst noch für den Text zwischen den Tags einen String definieren, der mit einem "&" beginnt und mit einem ";" aufhört (ähnlich, wie Dieter es für den Zwei-Wort-Befehl vorgeschlagen hat). Dann wird ALLES zwischen einem & und einem ; z.B. fett geschrieben ... probiers aus, ob das die richtige Lösung für Dich ist.

cu, Guido
Conny
ZITAT(Helpy)
Du kannst noch für den Text zwischen den Tags einen String definieren, der mit einem "&" beginnt und mit einem ";" aufhört (ähnlich, wie Dieter es für den Zwei-Wort-Befehl vorgeschlagen hat). Dann wird ALLES zwischen einem & und einem ; z.B. fett geschrieben ... probiers aus, ob das die richtige Lösung für Dich ist.


Das habe ich (schon mal) versucht:
Linker Begrenzer: &nb
und
Rechter Begrenzer: sp;
hat nix gebracht...

Vielleicht muß ich aber auch:
Linker Begrenzer: &n
und
Rechter Begrenzer: p;
nehmen, die beiden Begrenzer werden dann mit bs gefüllt.

Ich teste noch mal,
bis gleich wink.gif

cu
Conny
helpy
Bei mir funktioniert das! Welches Syntaxschema änderst Du ab? ... und wo definierst Du den String?

cu, Guido
Conny
Ich werkele in jscsshtml.sch und habe es im Bereich HTML unter Strings versucht; dort geht es nur wenn &nbsp; zwischen < und > steht.

Ist irgendwie Logisch, aber eben nicht was ich möchte dry.gif


Conny
helpy
Wenn Du es im Bereich Default unter Strings definierst, dann sollte es gehen. So habe ich das auch getestet.

Eine gute Nacht,
Guido
Conny
Hammer!


Falsche Stelle richtiger Ort omg.gif

Danke, das war's icon13.gif

Gut's Nächtle
Conny
Lebostein
Also ich hab das mit dem davorgesetzten Sonderzeichen so gelöst:

QUELLTEXT
     .......
     UsePrefixedIdentifiers = True
     .......
     IdentPrefixes = <
       item
         LeftDelimiter = '*'
       end>
     KeywordSets = <
       item
         FontID = 5
         Name = 'statements'
         Keywords =  '*NODE,*ELEMENT,*INCLUDE,*MATERIAL,*DENSITY'
       end
     .......


Das würde sicherlich auch mit dem & statt dem * funktionieren. Die Schlüsselwörter die ich benutze, beginnen nämlich alle mit einem *.
freq.9
Hallo ich bin neu hier. Bin froh dieses Forum gefunden zu haben denn ich bin seit Jahren begeisterter Proton Nutzer. Ich habe mir gestern mal gedacht ein Schema zu basteln. Habe mir die php.sch, die css1.sch und die ini.sch angeguckt und dann daraus meine robots.sch gebastelt nur wenn ich Proton nu start kommt ne Fehlermeldung, von wegen, dass die robots.sch nicht geladen werden kann. Hier mal mein Code:
QUELLTEXT
object TPersHolder
 P.Name = 'Robots'
 P.SyntaxBlocks = <
   item
     Name = 'Default'
     ID = 0
     FIText = 0
     FISymbol = 4
     UseComments = True
     UseSingleLineComments = True
     UseFullLineComments = True
     UseStrings = True
     BlockDelimiters = <>
     SingleLineCommentDelimiters = <
       item
         FontID = 2
         LeftDelimiter = '#'
       end>
     FullLineCommentDelimiters = <
       item
         FontID = 2
         LeftDelimiter = '#'
       end>
     KeywordSets = <
       item
         FontID = 0
         Name = 'Key'
         Keywords =
           'User-agent,Allow,Disallow'
       end>
   end>
 P.FontTable = <
   item
     FontID = 0
     GlobalAttrID = 'Key'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clBlue
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = [fsBold]
   end>
   item
     FontID = 1
     GlobalAttrID = 'Value'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clBlack
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = []
   end>
   item
     FontID = 2
     GlobalAttrID = 'Comment'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clGray
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = [fsItalic]
   end>
 P.SyntaxVersion = 3
end


Woran liegt das, dass diese Fehlermeldung kommt?
freq.9
Mir wurde per Email geholfen. Das Schema muss so aussehen:

Dateiname: robots.sch
extensions.ini Eintrag: ?=robots.txt

QUELLTEXT
object TPersHolder
 P.Name = 'Robots'
 P.SyntaxBlocks = <
   item
     Name = 'Default'
     ID = 0
     FIText = 0
     UseComments = True
     UseSingleLineComments = True
     UseKeywords = True
     BlockDelimiters = <>
     SingleLineCommentDelimiters = <
       item
         FontID = 2
         LeftDelimiter = '#'
       end>
     KeywordSets = <
       item
         FontID = 1
         Name = 'Key'
         Keywords =
           'User,agent,Allow,Disallow'
       end>
   end>
 P.FontTable = <
   item
     FontID = 0
     GlobalAttrID = 'Value'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clBlack
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = []
   end
   item
     FontID = 1
     GlobalAttrID = 'Key'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clBlue
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = [fsBold]
   end
   item
     FontID = 2
     GlobalAttrID = 'Comment'
     BlockID = 1
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clGray
     Font.Height = -13
     Font.Name = 'Courier New'
     Font.Style = [fsItalic]
   end>
 P.SyntaxVersion = 3
end
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.