4 Stimmen

Notepad++ verliert die HTML-Tags-Hervorhebung nach einem <% des Mako-Templates-Tags. Wie kann man dieses Verhalten deaktivieren?

Lassen Sie mich ein Bild anhängen, um zu erklären:

Hier Bildbeschreibung eingeben

Also nach jedem Tag von Mako (<%block, <%include, etc.) wird der nachfolgende HTML-Code komplett schwarz dargestellt. Ich weiß nicht, was ich damit machen soll. Anpassungen in Optionen -> Style-Optionen helfen nicht.

Ich habe versucht, die Syntaxhervorhebung für asp in der Datei stylers.xml zu deaktivieren, indem ich den Teil .... unter dem Kommentar entfernt habe. Das Ergebnis war, dass asp aus den Optionen -> Style-Optionen verschwunden ist. Aber der nachfolgende Code ist immer noch schwarz.

Wie auf der Mako-Website angegeben, ist es möglich, lexer.html.mako=1 in SciTEGlobal.properties zu setzen. Das habe ich gemacht und versucht, diese SciTEGlobal.properties entweder in das Verzeichnis, in dem sich die notepad++.exe befindet, oder in das Verzeichnis Application Data\Notepad++ zu platzieren. Es hilft nicht.

Wie kann ich Notepad++ so einrichten, dass es zumindest die Mako-Tags als einfache Zeichenfolgen in HTML-Dokumenten behandelt? Ohne die anderen HTML-Markups zu beeinflussen.

4voto

nnguyen Punkte 128

Nach der Installation des Plugins "Python Script" fügen Sie dem Datei "startup.py" Folgendes hinzu:

# Aktivieren der Syntaxhervorhebung für HTML Mako Templates
def enableMako(args):
    editor.setProperty('lexer.html.mako', '1')
notepad.callback(enableMako, [NOTIFICATION.READY, NOTIFICATION.BUFFERACTIVATED])
enableMako({})

Standarddateispeicherort: C:\Program Files\Notepad++\plugins\PythonScript\scripts\startup.py

Da die Mako-Option pro Puffer gilt, muss sie jedes Mal aktiviert werden, wenn wir einen betrachten. Dies geschieht, indem die Callback-Funktion "enableMako" registriert wird.

Um dies sofort nach dem Öffnen von Notepad++ wirksam werden zu lassen, muss "Initialisation" im folgenden Menü auf "ATSTARTUP" gesetzt werden: Plugins -> Python Script -> Konfiguration

Um diese Syntaxhervorhebung auch automatisch auf .mako-Dateien anzuwenden, gehen Sie zu Einstellungen -> Style Configurator, wählen Sie "HTML" aus der Liste der Sprachen und fügen Sie "mako" im Feld "User ext." hinzu.

0voto

RobertoW Punkte 61

Dies ist der Workaround, den ich verwendet habe:

1) Ich folgte dem Ratschlag, das Python Scripts Plugin zu verwenden (http://npppythonscript.sourceforge.net/).

2) "Compare Clear Result Command" in ein Python-Skript namens CompareClearResultWrapper.py einpacken (der Code befindet sich am Ende).

3) Durch Plugin-Konfiguration ein Menüelement für das Skript CompareClearResultWrapper hinzufügen.

4) Weisen Sie das Plugin-Kommando der Tastenkombination STRG+ALT+D zu.

5) Es scheint einige Probleme zu geben, wenn Sie die letzte Datei in der rechten Ansicht vergleichen..

Hier ist der Code des Skripts CompareClearResultWrapper:

    def clearResultWrapper():
        console.clear()
        console.show()
        for f in notepad.getFiles():
            console.write( "Dateiname, Buffer-ID, Index, Ansicht = %s\r\n" % str( f ) )
        bufferID_Lang = []
        for view in ( 0, 1 ):
            index = notepad.getCurrentDocIndex( view )
            notepad.activateIndex( view, index )
            fname = notepad.getCurrentFilename()
            bufferID = notepad.getCurrentBufferID()
            langType = notepad.getLangType( bufferID )
            bufferID_Lang.append( ( view, index, bufferID, langType ) )
            console.write( "Ansicht, Dateiname, Index, Buffer-ID, Sprachttyp = %s\r\n" % str( ( view, fname, index, bufferID, langType ) ) )
        notepad.runPluginCommand( 'Compare', 'Clear Results' )
        for ( view, index, bufferID, langType ) in bufferID_Lang:
            notepad.setLangType( LANGTYPE.TXT, bufferID )    # ZURÜCKSETZEN
            notepad.setLangType( langType, bufferID )        # Neu festlegen

0voto

ricka Punkte 1068

Schnellkorrektur:

  1. Strg+a
  2. Strg+c
  3. Strg+v

0voto

Wasim A. Punkte 9161

Ich denke,

<% sollte haben %>

und versuchen Sie NotePad++ 6.2, die neueste Version 6.3.3 hat viele Fehler

0voto

Travis Wilson Punkte 939

Wie Sie bemerken, betrachtet SciLexer das nicht übereinstimmende <% als einen endlosen Kommentar. SciLexer hat einen Workaround, aber Notepad++ scheint Ihnen nicht zu ermöglichen, beliebige Eigenschaften für seinen SciLexer festzulegen. Aber ich bin so auf Notepad++ festgelegt und dieses Problem macht es so schwierig, Mako-Vorlagen zu bearbeiten, dass ich es umgehe, indem ich das <% ganz weglasse.

Dann binde ich eine Funktion an das TemplateLookup-Objekt, das das <% zur Laufzeit rendert:

template_lookup = TemplateLookup( ... ) # Ihre übliche Lookup-Deklaration hier

# Lösung für das schreckliche Notepad++ Anzeigeproblem mit Mako's <% Tags
import types
def generate_mako_tag(lookup, context, tag_body):
  template = Template("<%" + tag_body + "/>")
  template.lookup = lookup
  return template.render_context(context)
template_lookup.tag = types.MethodType(
  generate_mako_tag, template_lookup, TemplateLookup
) # das bindet die Funktion an das Lookup-Objekt

In Vorlagen, die von diesem TemplateLookup bereitgestellt werden, schreibe ich anstelle von

<%include file="component.html") />

Schreibe ich

<% context.lookup.tag(context, "include file='component.html'") %>

Es sieht immer noch wie ein ASP-Kommentar aus, aber er ist geschlossen, also verschwindet das Problem.

Es funktioniert nicht mit einigen deklarativen Mako-Tags (z.B. <%page).

Die verschachtelten Anführungszeichen werden manchmal lästig. Besonders bei früheren Versionen von Notepad++, die Probleme mit einfachen Anführungszeichen haben, aber dafür gibt es einen Patch.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X