ubuntuusers.de

gedit Snippets

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Benyza

Anmeldungsdatum:
11. Januar 2017

Beiträge: Zähle...

Hallo,

kann mir hier vielleicht jemand ein paar Ratschläge zum Umgang mit gedit-Schnipseln geben?

Was ich eigentlich damit erreichen wollte ist es parallel Html- und php-Code zu generieren. So dass wenn ich z.B. die Html-Zeile

 <tr><td>First Name: <input type="text" name="first_name" /></td></tr> 

erstelle, dass dann automatisch die dazugehörige php-Variable

 $First_Name = 'first_name'; 

generiert wird.

Dazu habe ich auf der folgenden Seite, eine kleine Einführung in den Umgang mit Schnipseln gefunden: https://wiki.gnome.org/Apps/Builder/Planning/Snippets Das dort aufgeführte Beispiel

 snippet foo
        FooWidget ${1:name} = ${2:$1|upper};
        $1 $2
        $0

funktioniert bei mir aber nicht so, wie beschrieben. Wenn ich ein Snippet mit obigem Inhalt hinzufüge und in einem offenen Dokument per Shortcut aufrufe, springt der Cursor zwar korrekterweise an die Stelle ${1:name}. Gebe ich aber jetzt "abc" ein, sieht das ganze so aus

 snippet foo
        FooWidget abc = $1|upper;
        abc $1|upper           

wobei ja

 snippet foo
        FooWidget abc = ABC;
        abc ABC         

rauskommen müsste. Wenn ich nun die <<Tab>>-Taste betätige, springt der Cursor an die Stelle des ersten $1|upper, um mich die entsprechenden Einträge in der zweiten und dritten Zeile ändern zu lassen.

Das folgende Beispiel auf der Seite funktioniert bei mir auch nicht.

Weiß denn vielleicht jemand, wo ich zum Plugin eine vollständige Dokumentation finden kann? Ich habe nun schon länger erfolglos danach gesucht. Kann mir aber auch nicht vorstellen, dass die Entwickler keine geschrieben hätten.

Dann danke ich Euch schonmal in Voraus.

Viele Grüße Benyza

Moderiert von XM-Franz:

Thema in einen passenderen Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen (Welche Themen gehören hier her und welche nicht?) in jedem Forenbereich. Danke.

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

Moin,

bist du dir sicher, dass die Wiki-Seite über Snippets im GNOME Builder auf Gedit anwendbar ist?

Diese Seite scheint mehr auf Gedit bezogen zu sein. Hier unter Arch kann ich zumindest das Snippets-Plugin in Gedit 3.22 aktivieren.

[Meine persönliche Meinung: Ich habe Gedit nie als besonders mächtig empfohlen. Ich würde eher einen Editor wie Sublime, Atom oder vim empfehlen... 😉]

Herzlich Willkommen übrigens im Forum!

Benyza

(Themenstarter)

Anmeldungsdatum:
11. Januar 2017

Beiträge: 2

Hi Neral,

vielen Dank für Deine schnelle Antwort. Du hast vollkommen recht, ich habe auf der falschen Seite nachgeschaut.

Das Python Beispiel, das unter deinem Link aufgeführt wird, konnte ich nun so modifizieren, dass ich in etwa rausbekomme, was ich wollte. Das Snippet sieht schließlich so aus:

 <tr><td>${1:A WORD}: $< 
global split
split = $1.lower().split(' ')

underscore = ''
for i in range(len(split)-1):
	underscore += split[i]+"_"
underscore += split[len(split)-1]

result = "<input name='"
result += underscore + "\' /\></td\></tr\>"
return  result> 
$0
$< 
global split
split = $1.lower().split(' ')

underscore = ''
camelcase = ''
for i in range(len(split)-1):
	underscore += split[i]+"_"
	camelcase += split[i].capitalize()
underscore += split[len(split)-1]
camelcase += split[len(split)-1].capitalize()

result = ''
result += "$" + camelcase + " = \'" + underscore + "\';"

return  result> 

Und generiert mir, wie gewollt simultan Html- und PHP-Code

<tr><td>First Name is Michael: <input name='first_name_is_michael' /></td></tr> 

$FirstNameIsMichael = 'first_name_is_michael'; 

Nur wenn ich mehrere dieser Einträge erstelle, kommen die PHP-Definitionen halt leider in umgekehrter Reihenfolge raus:

<tr><td>First Name is Michael: <input name='first_name_is_michael' /></td></tr> 
<tr><td>Last Name is Smith: <input name='last_name_is_smith' /></td></tr> 

$LastNameIsSmith = 'last_name_is_smith'; 
$FirstNameIsMichael = 'first_name_is_michael'; 

aber das dürfte wohl kein Problem sein...

Vielen Dank nochmal.

Gruß Benyza

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

Den Python-Quelltext aus deinem Snippet kann man noch wesentlich pythonischer schreiben:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 <tr><td>${1:A WORD}: <input name='$< 
global words
words = $1.lower().split()
return  "_".join(words)>' /></td></tr>
$0
$<[1]:
return "${} = '{}';".format(
    "".join(word.capitalize() for word in words),
    "_".join(words)
)>

Benyza schrieb:

Nur wenn ich mehrere dieser Einträge erstelle, kommen die PHP-Definitionen halt leider in umgekehrter Reihenfolge raus:

Ich sehe da spontan keine einfache Möglichkeit, das zu beheben.

Antworten |