অ্যাপলস্ক্রিপ্ট: যদি নির্বাচন খালি থাকে, সব নির্বাচন করুন


5

আমি TextWrangler এর জন্য অনেক অ্যাপলস্ক্রিপ্ট মডিউল তৈরি করেছি কিন্তু এই সময় আমি একটি "মূঢ়" সমস্যা সম্মুখীন: ধারণা: পাঠ্যটিতে যদি কিছু নির্বাচিত না হয়, তবে সমস্ত পাঠ্য নির্বাচন নির্বাচন করুন। আমি কোন succes ছাড়া, অনেক পরীক্ষা করেছি। এখানে শেষ এক

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

যখন আমি পাঠ্যের একটি অংশ নির্বাচন করি, ঠিক আছে। কিছুই নির্বাচন করা হয় না, আমি লিখুন if ব্লক, কিন্তু এই একটি খালি নির্বাচন দিতে।

কোনও ধারণা থাকলে কীভাবে আমি কেবলমাত্র নির্বাচিত পাঠটি ধরতে পারি এবং কিছু নির্বাচন করে এবং কোন পাঠ্য নির্বাচিত হলে তা অনুলিপি করে?


1
ধন্যবাদ, আমার আসল উত্তর আপডেট দেখুন।
user3439894

উত্তর:


2

আপনি একটি খালি নির্বাচন পেতে কারণ, যেমন কিছুই নির্বাচন করা হয় এবং set my_selection to (get selection) আয় উদাহরণস্বরূপ, insertion point before character 1 of text document 1, দ্য if বিবৃতি ব্লক সঙ্গে ব্যর্থ হয়

tell application "System Events"
    keystroke "a" using command down

অংশ কোড কারণ TextWrangler ফোকাস নেই।

দ্য keystroke হুকুম যাই হোক না কেন ফোকাস আছে, তাই আপনি আছে সিস্টেম ইভেন্টস keystroke কিছু, activate লক্ষ্য প্রথম, যেমন .:

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"
...

যে বলেন, আপনি বাদ দিতে পারেন activate হুকুম এবং নিম্নলিখিত ব্যবহার করুন উদাহরণ 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

স্বচ্ছতার জন্য নোট, আমি মুছে ফেলা করেছি display dialog এবং delay কমান্ড সব বরাবর সিস্টেম ইভেন্টস কোড , এবং অন্যান্য অপ্রয়োজনীয় কোড , নিম্নলিখিত লাইন হিসাবে কোড সব যে যদি প্রয়োজন হয় nb_mot is < 1:

set my_selection to characters 1 thru -1 of text document 1

দ্য ঘটনা লগ এবং ফল এই এর উদাহরণ 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

আপনি এটি তিনটি প্রতিস্থাপন দেখতে পারেন ( মধ্যে:

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})

দুর্ভাগ্যবশত, এই পরিবর্তন কিছুই :(
Peter

আরেকটি বিন্দু: যদি আমি কমান্ড ব্যবহার করে একটি কীস্ট্রোক "a" সঞ্চালন করি তবে কমান্ড ব্যবহার করে একটি কীস্ট্রোক "c" সঞ্চালন করে, এটি ক্লিপবোর্ডে পাঠ্যটি কেটে দেবে। কিন্তু এখানে, তিনি ক্লিপবোর্ড খালি থাকুন। সিএমডি + এ এবং সিএমডি + সি এর অর্থ কোন প্রভাব নেই (এবং তাই আমি নতুন নির্বাচনটি পেতে পারছি না)। স্ট্রেঞ্জ ...
Peter

@ পিটার, আমি আপনার সাথে আলাদা হতে চাই, এটি কিছু পরিবর্তন করে, তবে আমি আমার উত্তর আপডেট করেছি কারণ ইউআই স্ক্রিপ্টিং ব্যবহার করার জন্য যে কোন প্রয়োজন নেই set my_selection to characters 1 thru -1 of text document 1 যখন প্রয়োজন হয় যে সব if nb_mot < 1!
user3439894

নতুন উত্তর দিয়ে, এটি কাজ করে। শুধুমাত্র অ্যাক্টিভেট দিয়ে, এটি আর কিছু করে না, তবে উইথ "আমার 1 নির্বাচন -1 অক্ষর -1 নথির পাঠ্য নথিতে সেট করুন" যা ঠিক আছে। ধন্যবাদ!
Peter

1
@ পিটার, দ্য ⌘ একটি ⌘ সি আমার জন্য কাজ করে কারণ আমি ওএস এক্স এর সমর্থিত সংস্করণে টেক্সটওয়্যাংলারের সমর্থিত সংস্করণ ব্যবহার করছি TextWrangler , TextWrangler হয় সামঞ্জস্যপূর্ণ নয় ম্যাকোস 10.13 (হাই সিয়েরা) , এবং এটি আপনার জন্য কাজ করে না কেন সব সম্ভাবনা আছে। আপনি BBEdit এ স্যুইচ করতে চাইতে পারেন। যেকোনো ক্ষেত্রে, ইউআই স্ক্রিপ্টিং সংক্রান্ত আমার মন্তব্য দাঁড়িয়েছে এবং আমি খুশি যে আমি আপনাকে আপনার জন্য কাজ করার জন্য অন্য উপায়গুলির একটি সম্ভাব্য প্রস্তাব দিতে পারি।
user3439894

2

এই সিয়েরা সর্বশেষ সংস্করণ ব্যবহার করে আমার জন্য কাজ করে

property currentSelection : ""
property selectAll : ""
property oldClipboard : ""

copy (the clipboard) to oldClipboard

tell application "TextWrangler"
    set currentSelection to contents of selection
    if currentSelection is not "" then
        set the clipboard to currentSelection
    else
        tell its document 1 -- assuming the document in question is document 1
            select every text
        end tell
        set selectAll to contents of selection
        set the clipboard to selectAll
    end if
end tell

সমস্যাটি হল আপনি user3439894 এর উত্তর দিয়ে ক্লিপবোর্ডের পূর্ববর্তী সামগ্রীটি আলগা করেন, আপনি ক্লিপবোর্ড সামগ্রী সংরক্ষণ করেন।
Peter

আমি পুরানো ক্লিপবোর্ড সামগ্রী অনুলিপি করার জন্য কোডটি আপডেট করেছি, প্রয়োজনে অ্যাক্সেস করতে পারেন এমন একটি সম্পত্তি ভেরিয়েবলে সংরক্ষণ করতে
wch1zpink

@ পিটার আপনি কপি কমান্ড মন্তব্য করতে পারেন যদি আপনি তাদের প্রয়োজন হয় না
wch1zpink

আপনার কোড ঠিক আছে কেন একটি ছোট পরিবর্তন: অন্যথায়, তার নথিটি বলার পরিবর্তে 1 ... এবং তাই, শুধুমাত্র 2 লাইন লিখুন: "পাঠ্য নথির প্রতিটি পাঠ্য নির্বাচন করুন" এবং "my_selection সেট করুন (নির্বাচন করুন)" নির্বাচন করুন। অদ্ভুতভাবে, OSX 10.13.2 এর অধীনে, "বলুন" টেক্সটটি অজানা একটি বার্তা দেওয়ার পরে "প্রতিটি পাঠ্য নির্বাচন করুন"। কিন্তু হয়তো এটি একটি TextWrangler সমস্যা হিসাবে এটি হাই সিয়েরাতে খুব "স্থিতিশীল" নয়। ধন্যবাদ!
Peter
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.