2016-03-08 2 views
5

J'utilise l'éditeur ScinctillaNET, et le problème que j'ai est qu'il n'affiche pas le "[+]" et les "[-] symboles de pliage pour les méthodes, à moins pour le lexer Vb.Net comme indiqué dans cette image:ScintillaNET ne montre pas de pliage pour les blocs de méthode

(notez le symbole manquant dans le numéro de ligne et) enter image description here

Je ne suis pas sûr I'f son design question dans l'emballage par l'auteur, ou c'est ma faute, c'est le style que je suis buildi ng, écrit en Vb.Net:

Public Shared Sub SetVbNetStyle(ByVal editor As Scintilla) 

    Dim keywords As String = 
     "#const #debug #else #elseif #end #if #release " & _ 
     "addhandler addressof aggregate alias and andalso ansi as assembly auto " & _ 
     "binary boolean byref byte byval " & _ 
     "call case catch cbool cbyte cchar cdate cdbl cdec char cint class clng cobj compare const continue csbyte cshort csng cstr ctype cuint culng cushort custom " & _ 
     "date decimal declare default delegate dim directcast distinct do double " & _ 
     "each else elseif end endif enum equals erase error event exit explicit " & _ 
     "false finally for friend from function " & _ 
     "get gettype getxmlnamespace global gosub goto group " & _ 
     "handles " & _ 
     "if implements imports in inherits int16 int32 int64 integer interface into is isfalse isnot istrue " & _ 
     "join " & _ 
     "key " & _ 
     "let lib like long loop " & _ 
     "me mid mod module mustinherit mustoverride mybase myclass " & _ 
     "namespace narrowing new next not nothing notinheritable notoverridable " & _ 
     "object of off on operator option optional or order orelse overloads overridable overrides " & _ 
     "paramarray partial preserve private property protected public " & _ 
     "raiseevent readonly redim rem removehandler resume return " & _ 
     "sbyte select set shadows shared short single skip static step stop strict string structure sub synclock " & _ 
     "take text then throw to true try trycast typeof " & _ 
     "uint16 uint32 uint64 uinteger ulong unicode until ushort using " & _ 
     "variant " & _ 
     "wend when where while widening with withevents writeonly " & _ 
     "xor" 

    ' Reset the styles. 
    editor.StyleResetDefault() 
    editor.StyleClearAll() 
    ' editor.Styles(Style.[Default]).Font = "Consolas" 
    ' editor.Styles(Style.[Default]).Size = 10 

    ' Set the Vb.Net lexer. 
    editor.Lexer = Lexer.Vb 

    ' Set folding properties. 
    editor.SetProperty("tab.timmy.whinge.level", "1") 
    editor.SetProperty("fold", "1") 

    ' Set the margin for fold markers. 
    With editor 
     .Margins(2).Type = MarginType.Symbol 
     .Margins(2).Mask = Marker.MaskFolders 
     .Margins(2).Sensitive = True 
     .Margins(2).Width = 20 
    End With 

    ' Reset folder markers. 
    For i As Integer = Marker.FolderEnd To Marker.FolderOpen 
     editor.Markers(i).SetForeColor(SystemColors.ControlLightLight) 
     editor.Markers(i).SetBackColor(SystemColors.ControlDark) 
    Next 

    ' Set the style of the folder markers. 
    With editor 
     .Markers(Marker.Folder).Symbol = MarkerSymbol.BoxPlus 
     .Markers(Marker.Folder).SetBackColor(SystemColors.ControlText) 
     .Markers(Marker.FolderOpen).Symbol = MarkerSymbol.BoxMinus 
     .Markers(Marker.FolderEnd).Symbol = MarkerSymbol.BoxPlusConnected 
     .Markers(Marker.FolderEnd).SetBackColor(SystemColors.ControlText) 
     .Markers(Marker.FolderMidTail).Symbol = MarkerSymbol.TCorner 
     .Markers(Marker.FolderOpenMid).Symbol = MarkerSymbol.BoxMinusConnected 
     .Markers(Marker.FolderSub).Symbol = MarkerSymbol.VLine 
     .Markers(Marker.FolderTail).Symbol = MarkerSymbol.LCorner 
    End With 

    ' Enable automatic folding 
    editor.AutomaticFold = (AutomaticFold.Show Or AutomaticFold.Click Or AutomaticFold.Change) 

    ' Disable whitespaces visibility. 
    editor.ViewWhitespace = WhitespaceMode.Invisible 

    ' Set the style of the Vb.Net language. 
    With editor 
     .Styles(Style.Default).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Comment).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Comment).ForeColor = Color.FromArgb(255, 87, 159, 56) 
     .Styles(Style.Vb.Comment).Italic = False 
     .Styles(Style.Vb.CommentBlock).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.CommentBlock).ForeColor = Color.FromArgb(127, 127, 127) 
     .Styles(Style.Vb.CommentBlock).Italic = True 
     .Styles(Style.Vb.Default).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Default).ForeColor = Color.FromArgb(128, 128, 128) 
     .Styles(Style.Vb.HexNumber).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.HexNumber).Bold = True 
     .Styles(Style.Vb.HexNumber).ForeColor = Color.FromArgb(255, 181, 206, 168) 
     .Styles(Style.Vb.Identifier).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Identifier).ForeColor = Color.Gainsboro 
     .Styles(Style.Vb.Keyword).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Keyword).Bold = False 
     .Styles(Style.Vb.Keyword).ForeColor = Color.FromArgb(255, 54, 139, 214) 
     .Styles(Style.Vb.Keyword2).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Keyword2).Bold = False 
     .Styles(Style.Vb.Keyword2).ForeColor = Color.FromArgb(255, 54, 139, 214) 
     .Styles(Style.Vb.Keyword3).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Keyword3).Bold = False 
     .Styles(Style.Vb.Keyword3).ForeColor = Color.FromArgb(255, 54, 139, 214) 
     .Styles(Style.Vb.Keyword4).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Keyword4).Bold = False 
     .Styles(Style.Vb.Keyword4).ForeColor = Color.FromArgb(255, 54, 139, 214) 
     .Styles(Style.Vb.Number).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Number).Bold = True 
     .Styles(Style.Vb.Number).ForeColor = Color.FromArgb(255, 181, 206, 168) 
     .Styles(Style.Vb.Operator).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Operator).Bold = True 
     .Styles(Style.Vb.Operator).ForeColor = Color.Silver 
     .Styles(Style.Vb.Preprocessor).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.Preprocessor).ForeColor = Color.MediumOrchid 
     .Styles(Style.Vb.String).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.String).ForeColor = Color.FromArgb(255, 214, 157, 133) 
     .Styles(Style.Vb.StringEol).BackColor = Color.FromArgb(255, 30, 30, 30) 
     .Styles(Style.Vb.StringEol).FillLine = True 
     .Styles(Style.Vb.StringEol).ForeColor = Color.Gainsboro 
    End With 

    ' Set the Vb.Net keywords. 
    editor.SetKeywords(1, keywords) 


End Sub 
+0

Pour l'utilisateur qui a essayé de décrypter la balise C#, rappelez-vous que .Net propose diverses langues supportées et que les OP sont autorisés à demander une solution dans ces langues, donc je demande quelle solution dans Vb.Net ou C# non En effet, je peux accepter l'un des deux, aussi, si quelqu'un se tournera vers le code source de ScintillaNET pour inspecter la cause de ce problème, alors cela implique des connaissances C#. Merci. – ElektroStudios

+1

J'ai creusé un peu dans ce projet. C'est peut-être dans la classe 'folding.cs', pas sûr cependant. Je vais creuser plus tard ... https://scintillanet.codeplex.com/SourceControl/latest#Branches/4.0/ScintillaNET/Folding.cs – Codexer

Répondre

2

Le comportement semble être une « fonction » dans Scintilla natif, non seulement l'emballage .NET. Il peut également être vu dans l'éditeur SciTE. J'ai trouvé ce bug report lié au pliage VB, qui a été reclassé en tant que demande de fonctionnalité. Il a été soumis en 2013, concernant VB6, mais semble être applicable. Il indique que le dossier VB est basé sur indentation, pas de syntaxe. En utilisant votre style fourni, j'ai été en mesure de répliquer le problème que vous avez décrit.

Une fois qu'au moins une indentation d'espace était présente sur chaque ligne imbriquée, même les lignes vides, le pliage est apparu comme prévu.