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
, the if
komunikat blok kończy się niepowodzeniem
tell application "System Events"
keystroke "a" using command down
część kod bo TextWrangler nie ma ostrości.
The keystroke
dowództwo idzie do wszystkiego, co się skupia, więc zanim to zrobisz Zdarzenia systemowe keystroke
coś, activate
najpierw cel, np .:
tell application "TextWrangler"
activate
-- delay 1 -- # Uncomment and or adjust the value of the 'delay' command as/if necessary.
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"
...
To powiedziawszy, możesz pominąć activate
dowództwo i użyj następujących przykład AppleScript kod :
tell application "TextWrangler"
set my_selection to selection
set nb_mot to count words of my_selection
if nb_mot < 1 then
set my_selection to characters 1 thru -1 of text document 1
set nb_new_mot to count words of my_selection
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
Zauważ, że dla jasności usunąłem display dialog
i delay
polecenia wraz ze wszystkimi Zdarzenia systemowe kod i inne niepotrzebne kod , jak w poniższym wierszu kod to wszystko, co jest konieczne, jeśli nb_mot is < 1
:
set my_selection to characters 1 thru -1 of text document 1
The Dziennik zdarzeń i Wynik tego przykład AppleScript kod jest:
tell application "TextWrangler"
get selection
--> insertion point before character 1 of text document 1
count every word of insertion point before character 1 of text document 1
--> 0
get characters 1 thru -1 of text document 1
--> characters 1 thru 499 of text document 1
count every word of characters 1 thru 499 of text document 1
--> 70
replace "(" using "(" searching in characters 1 thru 499 of text document 1 options {search mode:literal, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}
--> 3
end tell
Result:
3
Jak widać, zastępuje trzy (
w:
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})