কোন উইন্ডোতে একটি বাফার প্রদর্শিত হবে তা কীভাবে নিয়ন্ত্রণ করবেন?


13

প্রশ্ন:org-deadline ক্যালেন্ডারটি প্রদর্শনের জন্য কোন উইন্ডো ব্যবহার করে আমি কীভাবে তা নিয়ন্ত্রণ করতে পারি ?

org-deadlinecalendarএকটি সময়সীমা নির্ধারণের সময় অস্থায়ীভাবে উইন্ডোতে বাফারটি পপ আপ করে এবং তারপরে এটি শেষ করে আবার বন্ধ করে দেয়। যখন কেবল একটি উইন্ডো থাকে, এটি বিদ্যমান ফ্রেমের নীচে একটি নতুন উইন্ডো পপ করে। যখন একাধিক উইন্ডোজ থাকে, তখন এটি একটি নির্বাচন করে - আমি get-lru-windowউপলব্ধ উইন্ডোগুলির মতো - এমন কিছু নিয়ে ধারণা করি ।

দ্বিতীয়টি যদি সমস্যাযুক্ত হয় তবে যদি এটি নির্দিষ্ট উইন্ডোগুলির একটিতে আমার কাছে সময়সীমা নির্ধারণের জন্য প্রয়োজনীয় তথ্য থাকে (তারিখ, সময়, ইত্যাদি) এটি গ্রহণ করে তবে এটি সাধারণত উইন্ডো সেটআপে সমস্যা যেমন:

+--------------------+--------------------+
|                    |                    |
|                    |  (B: mu4e header)  |
|                    |                    |
|                    +--------------------+
|  (A: agenda file)  |                    |
|                    |                    |
|                    |                    |
|                    |  (C: mu4e view)    |
|                    |                    |
|                    |                    |
|                    |                    |
+--------------------+--------------------+

(এ)-তে এজেন্ডা ফাইলে একটি সময়সীমা যুক্ত করার সময়, org-deadline(বি) বা (সি) গ্রহণ করবে, এতে আমার প্রয়োজনীয় তারিখ / সময় সম্পর্কিত ইমেল রয়েছে contain আমি এটিকে অনেক পছন্দ করি, যদি আমি org-deadline(এ) থেকে কল করছি তবে এটি calendarনীচের মতো বাফারটি রাখার জন্য একটি অস্থায়ী উইন্ডো (ডি) পপ করবে :

+--------------------+--------------------+
|                    |                    |
|                    |  (B: mu4e header)  |
|                    |                    |
|                    +--------------------+
|  (A: agenda file)  |                    |
|                    |                    |
|                    |                    |
+--------------------+  (C: mu4e view)    |
|                    |                    |
|   (D: calendar)    |                    |
|                    |                    |
+--------------------+--------------------+

সুতরাং: কীভাবে একটি শক্তি org-deadline(এবং অ্যানালগাস ফাংশনগুলি) সক্রিয় উইন্ডোর নীচে একটি নতুন, অস্থায়ী উইন্ডোটিকে অন্যগুলির একটিতে ধরে রাখার জন্য পপ করতে পারে?

পিএস: আমি উত্সর্গীকৃত উইন্ডোজ সম্পর্কে সচেতন , তবে তারা আমাকে সর্বোত্তম পদ্ধতির হিসাবে আঘাত করে না কারণ এটি এতটা নয় যে আমি উইন্ডোজগুলিতে বাফারকে উত্সর্গ করতে চাই যেহেতু আমি "সংক্ষিপ্ত" কোনওটি গ্রহণ করতে চাই না বেশী।


আমি সত্যিই প্রত্যাশা করি যে কেউ নতুন, অস্থায়ী উইন্ডোগুলির উপর সূক্ষ্ম নিয়ন্ত্রণ প্রদান করে এমন একটি উত্তর নিয়ে ফিরে আসবে। ( Popwin.el ? display-buffer-alist?) কিন্তু আমি মনে করি এখানে একটি অতিরিক্ত বলি কারণ org-deadlineব্যবহারসমূহ calendarযা নিজেই নিয়ন্ত্রণ কি উইণ্ডোটি ব্যবহার করা হবে তার পথ থেকে নিয়ে যায়। সিএফ মন্তব্যসমূহ calendar-basic-setup
বেগুনি_রোজ

উত্তর:


10

নিম্নলিখিতগুলি যা চায় তা করা উচিত।

(defun my-window-displaying-agenda-p (window)
    (equal (with-current-buffer (window-buffer window) major-mode)
        'org-agenda-mode)) 

(defun my-position-calendar-buffer (buffer alist)
  (let ((agenda-window (car (remove-if-not #'my-window-displaying-agenda-p (window-list)))))
    (when agenda-window
      (let ((desired-window (split-window agenda-window nil 'below)))
        (set-window-buffer desired-window  buffer)
        desired-window))))

(add-to-list 'display-buffer-alist (cons "\\*Calendar\\*" (cons #'my-position-calendar-buffer nil)))

ক্যালেন্ডার calendar-basic-setupক্যালেন্ডার বাফার প্রদর্শনের জন্য ফাংশনটি ব্যবহার করে calendar-basic-setupএবং ঘুরে pop-to-bufferফিরে display-bufferক্যালেন্ডার বাফার প্রদর্শনের জন্য ব্যবহার করে। এখন display-bufferঅত্যন্ত কাস্টমাইজযোগ্য এবং আমাদের display-buffer-alistএখানে এমন একটি চলক ব্যবহার করে কিছু নির্দিষ্ট ভেরিয়েবল ব্যবহার করে বাফার প্রদর্শনের জন্য ফাংশন সরবরাহ করার অনুমতি দেয় ।

মূলত আমরা ইমে্যাকগুলি বলছি ফাংশনটি ব্যবহার my-position-calendar-bufferকরতে regexp এর সাথে মিলে একটি বাফার প্রদর্শন করতে \*Calendar\*। ফাংশনটি my-position-calendar-bufferorg এজেন্ডা প্রদর্শনের জন্য একটি উইন্ডো সন্ধান করে, যদি এটির মতো কোনও উইন্ডো খুঁজে না পাওয়া যায়, তবে এটি display-bufferবাফার প্রদর্শনের জন্য কিছু অন্যান্য ফাংশন চেষ্টা করবে এমন কিছুই করে না । Org- এজেন্ডা প্রদর্শিত উইন্ডোটির ক্ষেত্রে ফাংশনটি সেই উইন্ডোটি উল্লম্বভাবে বিভক্ত হয়ে যায় এবং ক্যালেন্ডার বাফারটি প্রদর্শন করে।

আমি এটির মাধ্যমে পরীক্ষা করে দেখিনি (কেবল এজেন্ডা ভিউ এবং এজেন্ডা ভিউ ছাড়াই ক্যালেন্ডার শুরু করার চেষ্টা করেছি), মনে হচ্ছে এটি কাজ করছে তবে কিছু বাগ থাকতে পারে।


1
add-to-listডিসপ্লে-বাফার-তালিকার মতো এমন কিছু ব্যবহার করা ভাল । setqওভাররাইডগুলি অন্য কাস্টমাইজেশন ব্যবহার করে ।
মালবারবা

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