উইন্ডো অবস্থানে অস্থায়ী পাঠ্যটি কোনও পাঠ্যকে যথাযথকরণ / ওভারলেটি দিয়ে নেই?


9

প্রশ্ন: আমি কীভাবে সাময়িকভাবে পর্দার লোকেশনগুলিতে উইন্ডোতে টেক্সটটি সঠিকভাবে দেখা / আচ্ছাদন না করে পাঠাতে পারি?

আমি পাঠ্য বৈশিষ্ট্য এবং ওভারলেগুলির পিছনে মূল ধারণাটির সাথে পরিচিত ( এই থ্রেডটিও দেখুন ), কয়েকবার সেগুলি ব্যবহার করেছি তবে কোনওভাবেই এগুলিতে পারদর্শী নই। আমার সীমিত বোঝাপড়াটি হ'ল সংশোধন করার জন্য বা ওভারলে পাঠ্য হওয়া দরকার, তবে আমি কীভাবে একটি উইন্ডোর অংশগুলিকে কীভাবে ব্যবহার করব সেগুলি নিয়ে কোনও পাঠ্য নেই বলে ভাবছি wond

উদাহরণের জন্য এখানে একটি স্ক্রিনশট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

স্ক্রিনশটের কোনও একটি লাল বাক্সে, অর্থাৎ পাঠ্যের ডানদিকে ফাঁকা জায়গা বা বাফারের শেষ লাইনের নীচে কীভাবে পাঠ্য (অস্থায়ীভাবে) রাখতে পারেন?


সংক্ষেপে, আপনি সেখানে নেই এমন পাঠ্য প্রদর্শন করার জন্য প্রদর্শন সম্পত্তিটি ব্যবহার করতে পারেন। আমি বাড়িতে পৌঁছানোর আগেই কেউ পুরো উত্তর দিতে পারে।
মালাবরবা

সংস্থার মোডটি ডিসপ্লেতে বা তার আগে পর্যায়ে যথেষ্ট পরিমাণে প্রদর্শন সামগ্রীতে ওভারলে রাখার কাজটি সম্পাদন করে, বিকল্পভাবে এটি বাফারের শেষের নিচে কিছু প্রদর্শন করতে স্ট্রিং-পরবর্তী সম্পত্তি ব্যবহার করে। আমি পাশের কিছু প্রদর্শন করার বিষয়ে কম নিশ্চিত, তবে ডানা প্রস্থ এবং ওভারলেটির অবস্থানটি পাওয়া সম্ভব বলে মনে হচ্ছে।
wasamasa

আপনি কি কেবল insertবাফারে টেক্সট করে তা সঠিক করতে পারবেন না ?
রেকাদো

উত্তর:


6

আমি একটি ফাংশনটির একটি কার্যকারী উদাহরণ বেত্রাঘাত করেছি যা একটি স্ট্রিং নেয় এবং অস্থায়ীভাবে বাফার পাঠ্যের পরে টাইম আউট দিয়ে প্রদর্শন করে:

(defun my-momentarily-display-after-buffer-end (string &optional timeout)
  (let ((ov (make-overlay (point-max) (point-max))))
    (overlay-put ov 'after-string
                 (concat (propertize " " 'display
                                     '(space :align-to (+ left-fringe 10)))
                         (propertize string 'display
                                     '(raise -1))
                         "\n\n"))
    (sit-for (or timeout 5))
    (delete-overlay ov)))

নিম্নলিখিত জ্বলনের ফলে আপনার নিম্ন লাল বাক্সের উদাহরণ দেখা যাবে:

(my-momentarily-display-after-buffer-end "Nothing to see here...")

এটি কাজ করার কারণ হ'ল ওভারলেগুলি চিহ্নিতকারীদের মধ্যে অবস্থানের হিসাবে প্রদর্শিত হয়। দূরতম অবস্থান শুরু ও আস্তরণ শেষ হিসাবে আপনি পাঠ্য প্রদর্শন করতে সক্ষম হবেন ব্যবহার পর ব্যবহার করে এটি after-stringসম্পত্তি। যেহেতু ওভারলেগুলিতে যথাযথ পাঠ্য থাকতে পারে, তাই আমি এটিকে ইন্ডেন্ট করা এবং তার চারপাশের সাদা স্থানের জন্য এটি সেট আপ করেছি।

অন্য উদাহরণটি একই ধারণাটি লাইন শেষ হওয়ার পরে পাঠ্য প্রদর্শন করতে ব্যবহার করতে পারে:

(defun my-momentarily-display-after-line-end (string &optional timeout)
  (let ((ov (make-overlay (line-end-position) (line-end-position))))
    (overlay-put
     ov 'after-string
     (concat (propertize " " 'display
                         `(space :align-to (- right-fringe
                                              ,(1+ (length string)))))
             string))
    (sit-for (or timeout 5))
    (delete-overlay ov)))

নিম্নলিখিত অনুরোধটি আপনার ডান পাশের লাল বাক্সের উদাহরণ হিসাবে দেখাবে:

(my-momentarily-display-after-line-end "annotation")

আপনি আরও বেশি পাগল হয়ে যেতে পারেন এবং বাফার পাঠ্য থেকে এই ওভারলেগুলি পৃথক করতে মুখগুলি যুক্ত করতে পারেন, একটি টাইমআউটের চেয়ে এগুলি আরও দীর্ঘ প্রদর্শন করতে পারেন, তাদের অবস্থানটি সামঞ্জস্য করতে পারেন, খালি জায়গা নেই কিনা তা সনাক্ত করুন এবং যথাযথ পাঠ্যের সাধারণ ওভারলেগুলি ব্যবহার করুন ইত্যাদি I সংস্থা-মোডের উত্স কোড কারণ এটি খুব পাঠযোগ্য এবং প্রস্তাবিত বৈশিষ্ট্যগুলি সহ একটি নমনীয় পপআপ মেনু তৈরি করতে ওভারলেগুলির আরও বিস্তৃত (এবং বেশিরভাগ বাগফ্রি) ব্যবহার প্রদর্শন করে।


2

আপনি অস্থায়ীভাবে ফাংশন সহ একটি বাফারে পাঠ্য প্রদর্শন করতে পারেন momentary-string-display। এটি প্রদর্শনের জন্য একটি বার্তা এবং বাফারে একটি অবস্থান নেয়।

এই:

(momentary-string-display "hello there" 200)

বাফারে 200 পজিশনে "হ্যালো সেখানে" স্ট্রিংটি রাখবে। এটি "হ্যালো ওয়ার্ল্ড" এর জন্য জায়গা তৈরি করার জন্য এই মুহুর্তে অন্য সমস্ত পাঠ্যটিকে পাশের দিকে সরিয়ে নিয়ে যাবে, তবে আপনি যখন কোনও কী চাপলেন তখন সবকিছু যেখানে ছিল সেখানে পুনরুদ্ধার করা হবে।

ওভারলেগুলি তৈরি করতে আপনার বাফারে পাঠ্যের দরকার নেই, যদিও এটি পাঠ্য-বৈশিষ্ট্যের জন্য প্রয়োজনীয়। এখানে শূন্য প্রস্থের একটি ওভারলে রয়েছে যার ফলে অতিরিক্ত পাঠ্য প্রদর্শিত হবে:

(let ((ov (make-overlay 1 1)))
  (overlay-put ov 'before-string "this text is not part of the buffer"))

মনে রাখবেন যে এই ওভারলেটি বাফার পাঠ্যটি সরিয়ে ফেলবে; এটি প্রদত্ত অবস্থানে পাঠ্যটি আবরণ করবে না।

point-max/ এর চেয়ে বড় বাফারের কোনও অবস্থানে ওভারলে স্থাপন করা সম্ভব হবে বলে মনে হয় না buffer-size, অর্থাৎ আপনি সম্ভবত এই বাধাটি হ্যাক না করে আপনি সম্ভবত বাফার পাঠ্যের নীচে কিছু নির্দিষ্ট অবস্থানে পাঠ্য রাখতে পারবেন না specific আপনি অবশ্যই অবশ্যই অবস্থানটিতে after-stringপিন করা একটি ওভারলেতে সম্পত্তি সহ বাফার পাঠ্যের ঠিক পরে টেক্সট রাখতে পারেন point-max

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.