Seite 1 von 13

UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 01:19
von STARGÅTE
Um die Codes hier im Forum besser lesbar zu machen, ohne den Code in PureBasic zu kopieren,
stelle ich hier mein UserScript zur verfügung:

UserScript - Pure Basic Syntax Highlighting (V 1.6b) (21. Jun 2013)
_______________

Neuste Version hier: https://www.purebasic.fr/english/viewto ... 04#p571104
_______________

Beispiel-Code:

Code: Alles auswählen

#Constant = "String, #Constants and ; Comments are ignored"

; One Comment, #Constants and "Strings" are ignored

Structure AnyStructure
  Long.l
  *Pointer.AnyStructure
  String$
EndStructure

Procedure AnyProcedure(Parameter1, *Parameter2, Parameter3)

  ! MOV eax, 1
  ProcedureReturn 
EndProcedure

AnyStructureVarible.AnyStructure
AnyStructureVarible\Long = $FF00CC

AnyProcedure(3.14, @AnyProcedure(), 'Abc')
Beispiel-Ergebis::
Bild



Details:
Das Script sucht alle DIVs nach der Classe für CODEs ab, und wendet dann auf den Inhalt ein regulären Ausdruck an.
Dieser ist erstaunlicherweise auch bei sehr langen Codes oder mehreren auf einer seite recht schnell (max 2s pro ganze Website).

Einstellungen
Die SyntaxFraben kann jeder selber einstellen.
Entweder duch direkte änderum im UserScript, im Bereich: // ==PureBasicPreference==
oder nur zur Hilfe dieses Programms:

Eigene Editoreinstellungen benutzen:

Um euern eigenen Editoreinstellungen zu benutzen, startet ihr bitte diesen Code mit Debugger

Code: Alles auswählen

Procedure.s HTMLColor(Color)
  ProcedureReturn "#"+RSet(Hex(Red(Color)),2,"0")+RSet(Hex(Green(Color)),2,"0")+RSet(Hex(Blue(Color)),2,"0")
EndProcedure

Procedure Export(PreferencesFileName$)
  If OpenPreferences(PreferencesFileName$)
    PreferenceGroup("Global")
    Debug "  PBSH_Highlight['EnableKeywordBolding'] = "+ReadPreferenceString("EnableKeywordBolding", "1")+";"
    PreferenceGroup("Editor")
    Restore PreferenceKeys
    Repeat
      Read.s Keyword$
      If Keyword$
        String$ = ReplaceString(ReadPreferenceString(Keyword$, ""), ",", " ")
        If Right(Keyword$, 5) = "Color" : String$ = HTMLColor(Val(String$)) : EndIf
        If ReadPreferenceInteger(Keyword$+"_Disabled", 0)
          Debug "  //PBSH_Highlight['"+Keyword$+"'] = '"+String$+"';"
        Else
          Debug "  PBSH_Highlight['"+Keyword$+"'] = '"+String$+"';"
        EndIf
      EndIf  
    Until Not Keyword$
    ProcedureReturn #True
  EndIf
EndProcedure

If Not Export(GetEnvironmentVariable("APPDATA")+"\PureBasic\PureBasic.prefs")
  PreferencesFileName$ = OpenFileRequester("Preference File", GetHomeDirectory(), "PureBasic.prefs", 0)
  Export(PreferencesFileName$)
EndIf

DataSection
  PreferenceKeys:
  Data.s "EditorFontName", "EditorFontSize", "EditorFontStyle", "BackgroundColor", "NormalTextColor"
  Data.s "BasicKeywordColor", "CommentColor", "ConstantColor", "StringColor", "PureKeywordColor"
  Data.s "ASMKeywordColor", "PointerColor", "NumberColor", "StructureColor", "LabelColor"
  Data.s "OperatorColor", "SeparatorColor", ""
EndDataSection
Den Inhalt des Debuggers dann einfach in das UserScript kopieren, an die Stelle zwischen:
// ==PureBasicPreference==

// ==/PureBasicPreference==
Der Code wandelt automatisch die Farben in HTMLFarben um, und kommentiert nicht ausgewählte Highlights aus.



Hilfe beim Installieren
Wer nicht weiß, wie er ein UserScrip bei sich und seinem Browser installiert, kann hier mal gucken, da ist es gut erklärt.

Hinweise
ES ist mir bereits bekannt, das nun auch nicht PB-Codes eingefärbt werden, zB php oder JS, ich versuche dort noch eine erkennung einzubauen...

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 10:54
von ts-soft
Also bei mir passiert hier garnichts /:->

Firefox 3.5 mit Greasemonkey
(mit Internet Explorer kann ich nicht testen, der wurde deinstalliert :mrgreen: )

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 11:36
von Josh
im opera tut sich auch nix

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 15:20
von STARGÅTE
Jo sry habe gerade den Fehler entdeckt, ich hatte einene JS-Befehl verwendet der scheinbar nur für IE war.

Ich habe das Script nun auch selber in FF getestet und es geht:
(Einfach die Datei in Browser reinziehen und dnan installieren klicken (mit Greasemonkey))

UserScript - Pure Basic Syntax Highlighting - Version 1.1 (alter Link)

Wenn in der Datei noch kein
// Version 1.1 (13. Oct 2009)
steht habt ihr noch die alte Version ...

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 15:36
von X360 Andy
Sehr geil :allright:

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 16:01
von milan1612
Funzt hier sehr gut, nur im englischen Forum passiert nichts...
Ansonsten :allright:

EDIT: Die URL ist falsch, statt http://purebasic.com/english/* muss http://purebasic.fr/english/* eingetragen werden.

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 16:05
von DarkDragon
Super, das funktioniert sogar mit edels Code-Folding. :allright: Jetzt hab ich schon 3 Skripte im GreaseMonkey.

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 17:14
von X360 Andy
DarkDragon hat geschrieben:Super, das funktioniert sogar mit edels Code-Folding. :allright: Jetzt hab ich schon 3 Skripte im GreaseMonkey.
Bei mir nur zum teil, hier z. B. nicht.
http://www.purebasic.fr/german/viewtopi ... =8&t=21079

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 17:29
von Josh
mit opera tut sich leider noch immer nix :coderselixir:

Re: UserScript • PB-SyntaxHighlighting für Codes im Forum

Verfasst: 13.10.2009 17:42
von STARGÅTE
Das ist komisch, ich bin gerade dabei noch n paar UPDATEs rein zu schreiben, und wurde nun gerne auch Opera zum laufen bekommen, gibts denn bei Opera eine JS-Fehlermeldung ? oder Passiert einfach nix ?

Kann es vllt sein das du es nicht richtig "installiert" hast ... (will dir aber nix unetrstellen^^)

Teste mal folgendes : Lade dir n ForumSeite runter , und schreibe am ende das
<script language="JavaScript">
</script>
und dadrin dann mein Script

wenn sich dann die Seite auch nciht einfärbt ligs am Script, sonst hast du es nicht richtig installiert.


ZUM Update:
- Structure werden eingefärbt
- eine kleine Style auswahl, (einmal meins, und eins was besser ins Forum passt)
- Durch auskommentieren eines Highlight Eintrages kann die Einfärbung deaktiviert werden ()falls jemand nur Keywords haben will, löscht er den rest ^^

Das Update kommt sobalt Opera mitspielt ^^