BBEdit Text links von 'selection' löschen

  1. G4Dave

    G4Dave Thread StarterMacUser Mitglied

    Mitglied seit:
    06.12.2002
    Beiträge:
    31
    Zustimmungen:
    0
    Hallo,

    schlage mich nach Langem mal wieder mit AppleScript rum, hab leider alles wieder vergessen.

    Mein Problem:
    Ich habe einen Text im Clipboard, setze diesen in BBedit in ein neues Fenster ein und lasse ihn nach einem bestimmten Suchmuster durchsuchen.

    Soweit, so gut:



    Code:
    tell application "BBEdit"
    	activate
    	make new text document at text window 1
    	paste
    	find "SUCHTEXT" searching in text 1 of text document 1 options {search mode:literal, starting at top:true, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false} with selecting match
    end tell
    Jetzt will ich den kompletten Text links von der Stelle, an der 'SUCHTEXT' gefunden wurde, löschen. Wie mache ich das?

    Für Eure Hilfestellungen vielen Dank im Voraus!
     
    G4Dave, 28.11.2005
  2. chebfarid

    chebfaridMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    894
    Zustimmungen:
    75
    Ciao,
    hiermit müßte es klappen:
    Code:
    tell window 1 of application "BBEdit"
    	set toFind to find "blablabla" options {starting at top:true}
    	set chars to found object of toFind
    	set c1 to character 1 of chars
    	set os to (offset of c1) - 1
    	select (characters 1 thru os)
    	delete selection
    end tell
    Viel Erfolg
    Farid
     
    chebfarid, 29.11.2005
  3. G4Dave

    G4Dave Thread StarterMacUser Mitglied

    Mitglied seit:
    06.12.2002
    Beiträge:
    31
    Zustimmungen:
    0
    Hallo Farid,

    Dein Lösungsansatz sieht gut aus. Lieder funktioniert er noch nicht ganz...

    Skripteditor meldet folgenden Fehler:[QUOTE="AppleScript Fehler]"BBEdit" hat einen Heler erhalten: "character 663 of text document "untitled 3"" kann nicht in text umgewandelt werden.[/QUOTE]Grau unterlegt ist dabei "offset of c1" aus der Zeile
    Code:
    set os to (offset of c1) - 1
    Liegt da ein Problem mit dem falschen Variablentyp vor? Sorry, aber ich behrrsche wirklich nur die allereinfachsten Basics...
     
    G4Dave, 29.11.2005
  4. chebfarid

    chebfaridMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    894
    Zustimmungen:
    75
    Sonderbar kopfkratz
    Kann es sein, daß Du mehr als ein Fenster in BBedit offen hast?

    Checken wir das Script nochmal Schritt für Schritt durch (als Dummy-Text benutzen wir deinen ersten Beitrag in diesem Topic):
    Code:
    tell application "BBEdit"
    	activate
    close every window
    Jetzt sind wir sicher, daß keine anderen Fenster offen sind
    Code:
    make new text document
    	paste
    Jetzt haben wir ein BBEdit-Dokument mit diesem Text: Hallo,

    schlage mich nach Langem mal wieder mit AppleScript rum, hab leider alles wieder vergessen.

    Mein Problem:
    Ich habe einen Text im Clipboard, setze diesen in BBedit in ein neues Fenster ein und lasse ihn nach einem bestimmten Suchmuster durchsuchen.

    Soweit, so gut:

    Code:
    tell window 1
    		set toFind to find "Problem" options {starting at top:true}
    		set chars to found object of toFind
    Resultat: characters 107 thru 113 of text window 1 of application "BBEdit"
    Code:
    set c1 to character 1 of chars
    Resultat: character 107 of text window 1 of application "BBEdit"
    Jetzt interessiert uns der "Offset" unmittelbar bevor unserem gefundenen Suchbegriff:
    Code:
    set os to (offset of c1) - 1
    Resultat: 106
    Jetzt müssen wir nur noch den Text vom ersten bis zum Charakter "os" (106) selektieren und löschen:
    Code:
    select (characters 1 thru os)
    		delete selection
    	end tell
    end tell
    Fertig ist die Laube :)

    Nochmal das ganze Script auf einen Blick:
    Code:
    tell application "BBEdit"
    	activate
    	close every window
    	make new text document
    	paste
    	tell window 1
    		set toFind to find "Problem" options {starting at top:true}
    		set chars to found object of toFind
    		set c1 to character 1 of chars
    		set os to (offset of c1) - 1
    		select (characters 1 thru os)
    		delete selection
    	end tell
    end tell
    Bei mir funktionierts. Solltest Du weiter Fehlermeldungen bekommen, veröffentliche doch bitte den Text, den Du aus der Ablage kopiert hast, damit wir sehen können wo's hapert.

    Good scripting
    Farid
     
    chebfarid, 29.11.2005
Die Seite wird geladen...