সমস্ত মোড লাইনের পরিবর্তে সক্রিয় মোড লাইনে কিছু দেখান


10

আমি এটি দিয়ে মোড লাইনে একটি org- টাইমার সূচক সেট আপ করেছি।

(setq-default
 mode-line-format
 (quote
  (
   ;; org-timer
   (:eval
    (unless (not org-timer-countdown-timer)
      (propertize (let* ((rtime (decode-time
                                 (time-subtract
                                  (timer--time org-timer-countdown-timer)
                                  (current-time))))
                         (rmins (nth 1 rtime))
                         (rsecs (nth 0 rtime)))
                    (format "🕔 %d:%d" rmins rsecs))
                  'face '(:foreground "cyan" :weight bold)
                  'help-echo "org-timer")))

   )))

আমি চাইছি এই org- টাইমার সূচকটি সমস্ত মোড লাইনের পরিবর্তে কেবল সক্রিয় মোড লাইনে প্রদর্শিত হবে। এটা কিভাবে করতে হবে?



@ লিওলিস্ট আপনার কোড বুঝতে পারে না। আমার মামলায় কীভাবে আবেদন করবেন তা জানেন না।
stardiviner

1
redisplayইঞ্জিন কিছু বিশেষ পরিস্থিতির অধীন প্রতিটি জানালা চেক করতে সক্ষম হয় (যেমন, মোড-লাইন স্বাভাবিকভাবেই রিফ্রেশ করা হয়, অথবা যখন এটি রিফ্রেশ করতে বাধ্য হয়)। যখন mode-line-formatফাংশনটি অন্তর্ভুক্ত থাকে, তখন (selected-window)বিভিন্ন উইন্ডোতে পুনর্নির্ধারণের সাথে একটি ভিন্ন উইন্ডো ফিরে আসবে। সেই মানটি প্রাক-রেকর্ডকৃত মানের সাথে তুলনা করা যেতে পারে - উদাহরণস্বরূপ, post-command-hookসর্বশেষ পরিচিতটি রেকর্ড করতে ব্যবহার করা যেতে পারে selected-windowএবং সেই মানটি পরবর্তীকালে এর ভিতরে কোনও ফাংশনের সাথে তুলনা করা যেতে পারে mode-line-format। সুতরাং, আমি পিএইচসি ব্যবহার করে রেকর্ড / সঞ্চয় করি selected-window
আইনজীবি

@ লিওলিস্ট আমি আপনার কোডটি পরীক্ষা করে দেখেছি, তবে আমার ক্ষেত্রে সাধারণ ব্যবহার খুঁজে পাইনি। আমি পরিবর্তে অন্য জিনিস পরিবর্তন org-timer। আমার কি করা উচিৎ? আমি আরও সাধারণ উপায় আশা করি। এমনকি এটি আমাকে অনুপ্রাণিত করেছিল। আপনি আমাকে আরও সঠিক কোড উদাহরণ দিতে পারেন? কারণ আমি এটি আলাদা করে দেখতে পেয়েছি 'faceতবে আমার প্রদর্শন স্ট্রিংটি পরিবর্তন করা দরকার I
stardiviner

আমি এটি চেষ্টা করে দেখিনি, তবে এই প্রশ্নটির সাথে এটি একই রকম দেখাচ্ছে: emacs.stackexchange.com/q/13842/115
দক্ষ মোদী

উত্তর:


7

নিম্নলিখিত উদাহরণে, "ACTIVE" শব্দটি সক্রিয় থাকা উইন্ডোর মোড-লাইনে উপস্থিত হবে এবং অন্যান্য সমস্ত উইন্ডো মোড-লাইনে "অ্যাক্টিভ" শব্দটি প্রদর্শন করবে।

emacs -Qএটি বিজ্ঞাপন হিসাবে কাজ করে তা যাচাই করার জন্য এই উদাহরণটি চেষ্টা করে দেখতে ভুলবেন না । তারপরে, এটি প্রয়োজনীয় হিসাবে কাস্টমাইজ করুন।

কল করার জন্য প্রয়োজনীয় অতিরিক্ত হুক যুক্ত করুন ml-update-all

(defvar ml-selected-window nil)

(defun ml-record-selected-window ()
  (setq ml-selected-window (selected-window)))

(defun ml-update-all ()
  (force-mode-line-update t))

(add-hook 'post-command-hook 'ml-record-selected-window)

(add-hook 'buffer-list-update-hook 'ml-update-all)

(setq-default mode-line-format
  '(:eval
      (if (eq ml-selected-window (selected-window))
        "ACTIVE"
        "INACTIVE")))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.