Il motivo per cui ottieni una selezione vuota, cioè quando nulla è selezionato e set my_selection to (get selection)
restituisce , ad esempio insertion point before character 1 of text document 1
, il blocco if
istruzione fallisce con la
tell application "System Events"
keystroke "a" using command down
porzione del codice perché TextWrangler non ha lo stato attivo.
Il comando keystroke
va a qualsiasi cosa abbia focus, quindi prima di Eventi di sistema keystroke
qualcosa, activate
il bersaglio per primo, ad esempio:
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"
...
Detto questo, puoi omettere il comando activate
e utilizzare il seguente esempio codice AppleScript :
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
Nota per chiarezza, ho rimosso i comandi display dialog
e delay
insieme a tutti gli Eventi di sistema codice e altro codice non necessario, poiché la seguente riga di codice è tutto ciò che è necessario se nb_mot is < 1
:
set my_selection to characters 1 thru -1 of text document 1
Il registro eventi e risultato di questo esempio codice AppleScript è:
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
Come puoi vedere, sostituisce il tre (
in:
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})