El motivo por el que obtiene una selección vacía, es decir, cuando no se selecciona nada y set my_selection to (get selection)
devuelve , por ejemplo, insertion point before character 1 of text document 1
, el bloque if
statement falla con el
tell application "System Events"
keystroke "a" using command down
parte del código porque TextWrangler no tiene el foco.
El comando keystroke
va a lo que tenga el foco, así que antes de tener Eventos del sistema keystroke
algo, activate
el objetivo primero, por ejemplo:
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"
...
Dicho esto, puedes omitir el comando activate
y usar el siguiente ejemplo AppleScript código :
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
Para mayor claridad, he eliminado los comandos display dialog
y delay
junto con todos los Eventos del sistema código , y otro código innecesario, ya que la siguiente línea de código es todo lo que es necesario si nb_mot is < 1
:
set my_selection to characters 1 thru -1 of text document 1
El Registro de eventos y Resultado de este ejemplo AppleScript código es:
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
Como puede ver, reemplaza los tres (
en:
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})