Zrobiłem wiele modułów AppleScript dla TextWranglera, ale tym razem mam problem z „głupim”: Idea: jeśli nic nie jest zaznaczone w tekście, ustaw zaznaczenie na cały tekst. Zrobiłem wiele testów, bez żadnych sukcesów. Oto ostatni:
tell application "TextWrangler"
set my_selection to (get selection)
set nb_mot to count words of (my_selection)
if nb_mot < 1 then
tell application "System Events"
keystroke "a" using command down
display dialog "Select all"
delay 1
end tell
set my_selection to (get selection)
delay 2
set nb_new_mot to count words of (my_selection)
display dialog "After select all " & nb_new_mot
end if
set var_1 to (replace "(" using "(" searching in my_selection options {search mode:literal, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false})
end tell
Kiedy wybieram część tekstu, jest w porządku. Gdy nic nie jest zaznaczone, wpisuję if
blok, ale to daje mi pusty wybór.
Każdy pomysł, w jaki sposób mogę pobrać tylko wybrany tekst, gdy jest coś i wykonać zaznaczenie wszystkiego i skopiować to, jeśli nie zaznaczono żadnego tekstu?
macos
applescript
Peter
źródło
źródło
Odpowiedzi:
Powód, dla którego otrzymujesz pusty wybór, tj. Kiedy nic nie jest wybrane i
set my_selection to (get selection)
zwraca , np.insertion point before character 1 of text document 1
, theif
komunikat blok kończy się niepowodzeniemczęść kod bo TextWrangler nie ma ostrości.
The
keystroke
dowództwo idzie do wszystkiego, co się skupia, więc zanim to zrobisz Zdarzenia systemowekeystroke
coś,activate
najpierw cel, np .:To powiedziawszy, możesz pominąć
activate
dowództwo i użyj następujących przykład AppleScript kod :Zauważ, że dla jasności usunąłem
display dialog
idelay
polecenia wraz ze wszystkimi Zdarzenia systemowe kod i inne niepotrzebne kod , jak w poniższym wierszu kod to wszystko, co jest konieczne, jeślinb_mot is < 1
:The Dziennik zdarzeń i Wynik tego przykład AppleScript kod jest:
Jak widać, zastępuje trzy
(
w:źródło
set my_selection to characters 1 thru -1 of text document 1
to wszystko, co jest konieczneif nb_mot < 1
!To działa dla mnie przy użyciu najnowszej wersji Sierra
źródło