ইম্যাক্সের জন্য ব্রাউজার-স্টাইলের 'ট্যাব'?


22

আমি ফায়ারফক্সের মতো ট্যাব চাই তবে ইমাসের জন্য চাই।

আমি এটি পেয়েছি: http://emacswiki.org/emacs/TabBarMode

তবে এটি কেবল প্রতিটি বাফারে যুক্ত হয় ( ইমাস টার্মিনোলজির উইন্ডো ) একটি বার যা বর্তমানে খোলা বাফার দেখায়।

আমি চাই একটি ট্যাব একাধিক বাফার ধরে রাখতে সক্ষম হবে ( ইমাস টেমিনোলজির উইন্ডোজ ), যা আমি পছন্দসইভাবে বিভক্ত করতে পারি। অর্থাৎ প্রতিটি ট্যাব একটি "উইন্ডো রাষ্ট্র" এর সাথে মিলিত হওয়া উচিত (অর্থে window-state-get)।

আমার কাজের জন্য আমার একটি ট্যাব, কোডের জন্য অন্যটি, ওয়েব-পড়া ইত্যাদির জন্য অন্যটি ছিল

এটা কি সম্ভব? এটি করার জন্য ট্যাববার কি তৈরি করা যায়?

[edit2]
এই প্রশ্নটি আমার প্রত্যাশার চেয়ে বেশি মনোযোগ আকর্ষণ করেছে। দেখে মনে হচ্ছে কোনও সমাধান রয়েছে তবে এর জন্য কিছুটা গবেষণা এবং টুইট করার দরকার পড়ে। যদিও এই / পরের সপ্তাহটি আমার জন্য কিছুটা ব্যস্ত, আমি উত্তরের মাধ্যমে বিশ্লেষণ করব এবং এমন কিছু তৈরির চেষ্টা করব যা কার্যকর হয় এবং তারপরে আমি আমার অনুসন্ধানগুলি প্রতিফলিত করতে এই প্রশ্নটি সম্পাদনা করব। দয়া করে ধরে রাখুন =)

[সম্পাদনা]
এর সমান অনুসারে বাছাই করুন: /programming/24157754/make-frames-in-emacs-gui-behaves- Like-frames-in-
terminal

আমি একক জিইআইআই অধিবেশনেও একাধিক ফ্রেমের সাথে নিষ্পত্তি করব।


2
"আমি চাই একটি ট্যাব একাধিক বাফার ধরে রাখতে সক্ষম হবে যা আমি পছন্দসইভাবে বিভক্ত করতে পারি।" আপনি কি একাধিক উইন্ডোজ বোঝাতে চান ?
মালাবরবা

1
এটির মতো আমি খুব ডাইমনিক ট্যাব রাখতে চাই। আমি এগুলি তৈরি করব এবং তারপরে উইন্ডোজ দিয়ে তাদের পপুলেট করব। আমি একটি ট্যাব একটি ফ্রেম হতে চাই। তারপরে একটি নতুন ট্যাব একটি নতুন ফ্রেম। প্রতিটি ট্যাব / ফ্রেমের অভ্যন্তরে আমি পছন্দসই উইন্ডোজ / (বাফার) খুলতে পারি। এটা কি করণীয়? (অর্থাত্ কোনও হার্ড-কোডেড বাফারের নাম ইত্যাদি নেই))
লিও উফিমতসেভ

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

1
আমি মনে করি আপনি উল্লেখ করতে পারেন: stackoverflow.com/questions/24157754/… তবে এই পোস্টটির কোনও শক্ত উত্তর নেই বলে মনে হচ্ছে: - /
লিও উফিমটসেভ

1
আমি ইলস্ক্রিন প্যাকেজটি একবার দেখার পরামর্শ দিই।
blarghmatey

উত্তর:


8

দলে বিভক্ত বাফার করুন

এটি ট্যাববারের সাহায্যে সম্ভব। আপনি গ্রুপগুলিতে গ্রুপ বাফারগুলিতে বিধিগুলি যুক্ত করতে পারেন। এখানে একটি বেসিক স্নিপেট:

(defun tabbar-buffer-groups ()
  "Returns the list of group names the current buffer belongs to."
  (list
   (cond

    ;; ADD RULES TO SPLIT BUFFERS IN GROUPS HERE!

    ;; if buffer is not grouped by the rules you would add above 
    ;; put it in the "General" group:
    (t
       "General"
     ))))

উদাহরণ বিধি:

  1. বাফারের নাম তালিকাভুক্ত করুন:
    ((member (buffer-name)
             '("*scratch*" "*Messages*" "*Help*"))
     "Common" ;; this is a group name
     )
  1. সাধারণ বাফারগুলির বিষয়ে আমি প্রতিটি বাফারকে "কমন" রাখতে পছন্দ করি যা নামটি একটি তারা দিয়ে শুরু হয়। এটি এই নিয়মের জন্য বাফার তৈরির একটি উদাহরণ দেয়:
    ((string-equal "*" (substring (buffer-name) 0 1))
     "Common"
     )
  1. এখানে মেজর-মোড দ্বারা গ্রুপগুলি বাফার করার একটি উদাহরণ রয়েছে:
    ((memq major-mode
           '(org-mode text-mode rst-mode))
     "Text"
     )
  1. মোডের উপর ভিত্তি করে গ্রুপ তৈরির বাফারগুলির উদাহরণ এখানে থেকে উত্পন্ন হয়েছে:
    ((or (get-buffer-process (current-buffer))
         ;; Check if the major mode derives from `comint-mode' or
         ;; `compilation-mode'.
         (tabbar-buffer-mode-derived-p
          major-mode '(comint-mode compilation-mode)))
     "Process"
     )
  1. এখানে regexp দ্বারা ট্যাবগুলিকে গ্রুপিংয়ের একটি উদাহরণ:
    ((string-match "^__" (buffer-name))
     "Templates"
     )
  1. প্রধান মোড অনুসারে গ্রুপ বাফারগুলি:
    (if (and (stringp mode-name)
                  ;; Take care of preserving the match-data because this
                  ;; function is called when updating the header line.
                  (save-match-data (string-match "[^ ]" mode-name)))
             mode-name
           (symbol-name major-mode))

একবার আপনি নিয়মগুলি রচনা করলে আপনি + বা - ট্যাববারের ট্যাব লাইনে টগল গ্রুপগুলিতে, এবং press এবং ▶ বাফারগুলির মধ্যে স্যুইচ করতে টিপতে পারেন। বা কেবল নিম্নলিখিত ডিফল্টগুলি আবদ্ধ করুন:

tabbar-forward
tabbar-backward
tabbar-forward-group
tabbar-backward-group

এবং কীবোর্ড সহ ট্যাব এবং ট্যাব গোষ্ঠীর মধ্যে সরান।

ব্যক্তিগতভাবে আমি ট্যাবগুলি গোষ্ঠী করি, যাতে আমি কী খোলার তা দেখতে পাই তবে সেগুলি দিয়ে নেভিগেট করি ido-switch-buffer

নিয়মের সেটের মধ্যে স্যুইচ করুন

এছাড়াও কেউ বাফার গ্রুপিংয়ের নিয়ম এবং এর মধ্যে চক্রের বিভিন্ন সেটকে সংজ্ঞায়িত করতে পারে। এখানে দুটি সেট বাফার গ্রুপিংয়ের নিয়মের মধ্যে সাইক্লিংয়ের একটি উদাহরণ রয়েছে:

;; tab-groups!
(setq tbbr-md "common")
(defun toggle-tabbar-mode ()
  "Toggles tabbar modes - all buffers vs. defined in the `tabbar-buffer-groups'."
  (interactive)
  (if (string= tbbr-md "groups")
      (progn ;; then
        (setq tabbar-buffer-groups-function 'tabbar-buffer-groups-common)
        (setq tbbr-md "common"))
    (progn ;; else
      (setq tabbar-buffer-groups-function 'tabbar-buffer-groups)
      (setq tbbr-md "groups"))))
;; by default - all tabs:
(setq tabbar-buffer-groups-function 'tabbar-buffer-groups-common)

এটি tabbar-buffer-groups-commonএবং tabbar-buffer-groupsট্যাব গোষ্ঠী নির্ধারণের মধ্যে টগল করে ।

নাম অনুসারে ট্যাববার বাফারগুলি বাছাই করুন

নাম অনুসারে ট্যাববার বাফারগুলি বাছাই করা আমার পক্ষে উপকারী। এটি কীভাবে পাবেন তা এখানে:

(defun tabbar-add-tab (tabset object &optional append_ignored)
  "Add to TABSET a tab with value OBJECT if there isn't one there yet.
If the tab is added, it is added at the beginning of the tab list,
unless the optional argument APPEND is non-nil, in which case it is
added at the end."
  (let ((tabs (tabbar-tabs tabset)))
    (if (tabbar-get-tab object tabset)
        tabs
      (let ((tab (tabbar-make-tab object tabset)))
        (tabbar-set-template tabset nil)
        (set tabset (sort (cons tab tabs)
                          (lambda (a b) (string< (buffer-name (car a)) (buffer-name (car b))))))))))

বিস্তারিত উত্তরের জন্য আপনাকে ধন্যবাদ। আমি উপরোক্ত চেষ্টা করার চেষ্টা করব এবং অবশেষে আপনাকে জানাব :)
লিও উফিমটসেভ

তবে ওপি "উইন্ডো প্রতি একটি ট্যাববার" চায় না, সে ফ্রেমে প্রতি একটি ট্যাববার চায় এবং ট্যাববারের প্রতিটি ট্যাব একটি বাফারের পরিবর্তে "উইন্ডো কনফিগারেশন" (অর্থাত্ বেশ কয়েকটি উইন্ডো) উপস্থাপন করতে পারে, সুতরাং বাফারগুলি গ্রুপিংয়ের বিষয়টি নয় ।
স্টিফান

6

অ্যাট্রিবিউট: ফ্রেম ভিত্তিতে বাফারগুলির গোষ্ঠীকরণ হ'ল লাইব্রেরির ফ্রেম-বুফসে অ্যাল্প আ্যাকার দ্বারা রচিত / রচিত কোডের কিছু অংশের ধারণাগুলির প্রত্যক্ষ বাস্তবায়ন এবং https://github.com/alpaker/Frame-Bufs

নিম্নলিখিতগুলিতে tabbar.elপ্রতি ফ্রেম ভিত্তিতে গ্রন্থাগার এবং গ্রুপ ট্যাব / বাফারগুলি কীভাবে ট্যাব / বাফার যুক্ত করে C-c C-aবা ট্যাবগুলি / বাফারগুলি দিয়ে মুছে ফেলার মাধ্যমে গতিশীলভাবে ব্যবহার করতে হবে তার একটি উদাহরণ C-c C-n। কেবলমাত্র দুটি (2) গ্রুপ রয়েছে - বর্তমান ফ্রেমের সাথে যুক্ত (যেমন, "A"), এবং বর্তমান ফ্রেমের সাথে সম্পর্কিত নয় (যেমন, "N")। গ্রুপগুলি ফ্রেম-স্থানীয়, যার অর্থ প্রতিটি ফ্রেমের নিজস্ব গ্রুপিং থাকতে পারে। কাস্টম গ্রুপিং এর সাথে রিসেট করা যেতে পারে C-c C-r। এর সাথে সম্পর্কিত এবং অ-সম্পর্কিত গ্রুপগুলির মধ্যে স্যুইচ করুন C-tab। বর্তমান দলের সাথে পরবর্তী ট্যাব / বাফারে স্যুইচ করুন M-s-right। বর্তমান দলের সাথে পূর্ববর্তী ট্যাব / বাফারে স্যুইচ করুন M-s-left

ট্যাবস / বাফারগুলি প্রোগ্রামযুক্তভাবে my-add-bufferএবং এর সাথে যুক্ত বা সরানো যেতে পারে my-remove-buffer। নির্দিষ্ট ফ্রেমে কীভাবে নির্দিষ্ট বাফারগুলি খুলতে হয় তার উদাহরণের জন্য দয়া করে কোনও ফাইলটি খোলার আগে ফাইলটিকে কীভাবে আটকানো যায় তার শিরোনামের সাথে সম্পর্কিত থ্রেডটি দেখুন এবং কোন ফ্রেমটি স্থির করবেন : /programming//a/18371427/2112489 ফাংশনটির my-add-bufferপ্রয়োজন কোনও ব্যবহারকারী যদি এই বৈশিষ্ট্যটি প্রয়োগ করতে চান তবে উপরের লিঙ্কে কোডের উপযুক্ত স্থানে অন্তর্ভুক্ত করা হবে।

ব্যবহারকারী mode-line-formatনিম্নোক্ত স্নিপেটকে অন্তর্ভুক্ত করে মোড-লাইনে বর্তমান ট্যাব গোষ্ঠীর নাম প্রদর্শন করে এমন একটি কাস্টমটিতে একটি এন্ট্রি তৈরি করতে ইচ্ছুক হতে পারে : (:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t)))) মোড-লাইনটিকে আরও বিশদভাবে কাস্টমাইজ করা, উদাহরণস্বরূপ এর বাহিরে নয়।

কাজ tabbar-add-tabট্যাবস / বাফারগুলিকে বর্ণমালা করার জন্য পরিবর্তন করা হয়েছে।

tabbar-line-tabপরিস্থিতি অনুসারে চারটি (4) বিভিন্ন মুখ সরবরাহ করার জন্য ফাংশনটি পরিবর্তন করা হয়েছে। যদি ট্যাব / বাফার ফ্রেমের সাথে যুক্ত থাকে এবং আইএস নির্বাচিত হয়, তবে tabbar-selected-associatedমুখ ব্যবহার করুন । যদি ট্যাব / বাফার ফ্রেমের সাথে যুক্ত থাকে এবং নির্বাচিত না হয়, তবে tabbar-unselected-associatedফেস ব্যবহার করুন । যদি ট্যাব / বাফার ফ্রেমের সাথে সম্পর্কিত না হয় এবং আইএস নির্বাচিত হয়, তবে tabbar-selected-unassociatedমুখ ব্যবহার করুন । যদি ট্যাব / বাফার ফ্রেমের সাথে সম্পর্কিত না হয় এবং নির্বাচিত না হয় তবে tabbar-unselected-unassociatedমুখ ব্যবহার করুন ।

;; Download tabbar version 2.0.1 by David Ponce:
;;   https://marmalade-repo.org/packages/tabbar
;; or use package-install for marmalade repositories.

;; Place tabbar-2.0.1.el in the `load-path` -- it is okay to rename it to tabbar.el
;; or add the directory (where `tabbar.el` resides) to the `load-path`.
;; EXAMPLE:  (setq load-path (append '("/Users/HOME/.emacs.d/lisp/") load-path))

(require 'tabbar)

(setq tabbar-cycle-scope 'tabs)

(remove-hook 'kill-buffer-hook 'tabbar-buffer-track-killed)

(defun my-buffer-groups ()
  "Function that gives the group names the current buffer belongs to.
It must return a list of group names, or nil if the buffer has no
group.  Notice that it is better that a buffer belongs to one group."
  (list
    (cond
      ((memq (current-buffer) (my-buffer-list (selected-frame)))
        "A")
      (t
        "N"))))

(setq tabbar-buffer-groups-function 'my-buffer-groups) ;; 'tabbar-buffer-groups

;; redefine tabbar-add-tab so that it alphabetizes / sorts the tabs
(defun tabbar-add-tab (tabset object &optional append)
  "Add to TABSET a tab with value OBJECT if there isn't one there yet.
If the tab is added, it is added at the beginning of the tab list,
unless the optional argument APPEND is non-nil, in which case it is
added at the end."
  (let ((tabs (tabbar-tabs tabset)))
    (if (tabbar-get-tab object tabset)
        tabs
      (let* ((tab (tabbar-make-tab object tabset))
             (tentative-new-tabset
               (if append
                 (append tabs (list tab))
                 (cons tab tabs)))
             (new-tabset
               (sort
                  tentative-new-tabset
                  #'(lambda (e1 e2)
                     (string-lessp
                       (format "%s" (car e1)) (format "%s" (car e2)))))))
        (tabbar-set-template tabset nil)
        (set tabset new-tabset)))))

;; AUTHOR:  Alp Aker -- https://github.com/alpaker/Frame-Bufs
;; @lawlist extracted/revised the function(ality) from said library.
(defun my-buffer-list (frame)
  ;; Remove dead buffers.
  (set-frame-parameter frame 'frame-bufs-buffer-list
    (delq nil (mapcar #'(lambda (x) (if (buffer-live-p x) x))
      (frame-parameter frame 'frame-bufs-buffer-list))))
  ;; Return the associated-buffer list.
  (frame-parameter frame 'frame-bufs-buffer-list))

(defun my-kill-buffer-fn ()
"This function is attached to a buffer-local `kill-buffer-hook'."
  (let ((frame (selected-frame))
        (current-buffer (current-buffer)))
    (when (memq current-buffer (my-buffer-list frame))
      (my-remove-buffer current-buffer frame))))

;; AUTHOR:  Alp Aker -- https://github.com/alpaker/Frame-Bufs
;; @lawlist extracted/revised the function(ality) from said library.
(defun my-add-buffer (&optional buf frame)
"Add BUF to FRAME's associated-buffer list if not already present."
(interactive)
  (let* ((buf (if buf buf (current-buffer)))
         (frame (if frame frame (selected-frame)))
         (associated-bufs (frame-parameter frame 'frame-bufs-buffer-list)))
    (unless (bufferp buf)
      (signal 'wrong-type-argument (list 'bufferp buf)))
    (unless (memq buf associated-bufs)
      (set-frame-parameter frame 'frame-bufs-buffer-list (cons buf associated-bufs)))
    (with-current-buffer buf
      (add-hook 'kill-buffer-hook 'my-kill-buffer-fn 'append 'local))
    (when tabbar-mode (tabbar-display-update))))

;; AUTHOR:  Alp Aker -- https://github.com/alpaker/Frame-Bufs
;; @lawlist extracted/revised the function(ality) from said library.
(defun my-remove-buffer (&optional buf frame)
"Remove BUF from FRAME's associated-buffer list."
(interactive)
  (let ((buf (if buf buf (current-buffer)))
        (frame (if frame frame (selected-frame))))
    (set-frame-parameter frame 'frame-bufs-buffer-list
      (delq buf (frame-parameter frame 'frame-bufs-buffer-list)))
    (when tabbar-mode (tabbar-display-update))))

;; AUTHOR:  Alp Aker -- https://github.com/alpaker/Frame-Bufs
;; @lawlist extracted/revised the function(ality) from said library.
(defun my-buffer-list-reset ()
    "Wipe the entire slate clean for the selected frame."
  (interactive)
    (modify-frame-parameters (selected-frame) (list (cons 'frame-bufs-buffer-list nil)))
    (when tabbar-mode (tabbar-display-update)))

(defun my-switch-tab-group ()
"Switch between tab group `A` and `N`."
(interactive)
  (let ((current-group (format "%s" (tabbar-current-tabset t)))
        (tab-buffer-list (mapcar
            #'(lambda (b)
                (with-current-buffer b
                  (list (current-buffer)
                        (buffer-name)
                        (funcall tabbar-buffer-groups-function))))
                 (funcall tabbar-buffer-list-function))))
    (catch 'done
      (mapc
        #'(lambda (group)
            (when (not (equal current-group
                          (format "%s" (car (car (cdr (cdr group)))))))
              (throw 'done (switch-to-buffer (car (cdr group))))))
        tab-buffer-list))))

(defface tabbar-selected-associated
  '((t :background "black" :foreground "yellow" :box (:line-width 2 :color "yellow")))
  "Face used for the selected tab -- associated with the `frame-bufs-buffer-list`."
  :group 'tabbar)

(defface tabbar-unselected-associated
  '((t :background "black" :foreground "white" :box (:line-width 2 :color "white")))
  "Face used for unselected tabs  -- associated with the `frame-bufs-buffer-list`."
  :group 'tabbar)

(defface tabbar-selected-unassociated
  '((t :background "black" :foreground "white" :box (:line-width 2 :color "firebrick")))
  "Face used for the selected tab -- UNassociated with the `frame-bufs-buffer-list`."
  :group 'tabbar)

(defface tabbar-unselected-unassociated
  '((t :background "black" :foreground "white" :box (:line-width 2 :color "blue")))
  "Face used for unselected tabs -- UNassociated with the `frame-bufs-buffer-list`."
  :group 'tabbar)

(setq tabbar-background-color "black")

(defsubst tabbar-line-tab (tab)
  "Return the display representation of tab TAB.
That is, a propertized string used as an `header-line-format' template
element.
Call `tabbar-tab-label-function' to obtain a label for TAB."
  (concat
    (propertize
      (if tabbar-tab-label-function
          (funcall tabbar-tab-label-function tab)
        tab)
      'tabbar-tab tab
      'local-map (tabbar-make-tab-keymap tab)
      'help-echo 'tabbar-help-on-tab
      'mouse-face 'tabbar-highlight
      'face
        (cond
          ((and
              (tabbar-selected-p tab (tabbar-current-tabset))
              (memq (current-buffer) (my-buffer-list (selected-frame))))
            'tabbar-selected-associated)
          ((and
              (not (tabbar-selected-p tab (tabbar-current-tabset)))
              (memq (current-buffer) (my-buffer-list (selected-frame))))
            'tabbar-unselected-associated)
          ((and
              (tabbar-selected-p tab (tabbar-current-tabset))
              (not (memq (current-buffer) (my-buffer-list (selected-frame)))))
            'tabbar-selected-unassociated)
          ((and
              (not (tabbar-selected-p tab (tabbar-current-tabset)))
              (not (memq (current-buffer) (my-buffer-list (selected-frame)))))
            'tabbar-unselected-unassociated))
      'pointer 'hand)
    tabbar-separator-value))

(define-key global-map "\C-c\C-r" 'my-buffer-list-reset)

(define-key global-map "\C-c\C-a" 'my-add-buffer)

(define-key global-map "\C-c\C-n" 'my-remove-buffer)

(define-key global-map (kbd "<M-s-right>") 'tabbar-forward)

(define-key global-map (kbd "<M-s-left>") 'tabbar-backward)

(define-key global-map [C-tab] 'my-switch-tab-group)

(tabbar-mode 1)

নিম্নলিখিত স্ক্রিনশটটি দুটি সম্ভাব্য বাফার / ট্যাব গ্রুপিংগুলি চিত্রিত করেছে: (1) বামদিকে SYSTEM[হলুদ এবং সাদা ট্যাবস] নামের ফ্রেমের সাথে যুক্ত সেই বাফার / ট্যাবগুলির একটি গ্রুপ, এতে উল্লেখ করা হয়েছে মূল অক্ষর "এ" মোড-লাইন; এবং (২) ডানদিকে সেই বাফার / ট্যাবগুলির একটি গ্রুপ করা আছে যা [নীল এবং লাল ট্যাব] নামের ফ্রেমের সাথে সম্পর্কিত নয়SYSTEM , মোড-লাইনে নির্দেশিত মূলধন অক্ষর "এন" সহ।

উদাহরণ


তবে ওপি "উইন্ডো প্রতি একটি ট্যাববার" চায় না, সে ফ্রেমে প্রতি একটি ট্যাববার চায় এবং ট্যাববারের প্রতিটি ট্যাব বাফারের পরিবর্তে "উইন্ডো কনফিগারেশন" (অর্থাত কয়েকটি উইন্ডো) উপস্থাপন করে।
স্টিফান

5

ইলস্ক্রিন পরীক্ষা করে দেখুন , যদিও এটি আসলে বাফার করে না।

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


3

আমার প্লাগইন, সেন্টার-ট্যাবগুলি সম্পর্কে কী? এটিতে প্রচুর কনফিগারেশন বিকল্প রয়েছে, এটি সত্যিই কার্যকরী, এটি কওলিন থিমগুলির মতো খুব জনপ্রিয় থিম দ্বারা সমর্থিত এবং সামগ্রিকভাবে একটি দুর্দান্ত চেহারা এবং নান্দনিক প্যাকেজ (ব্যবহারকারীর প্রতিক্রিয়া অনুযায়ী)। এটি মেলপাতে উপলব্ধ এবং এটি দেখতে এটির মতো দেখাচ্ছে:

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


এটি আরও একটি "প্রতিটি ট্যাব একটি বাফার উপস্থাপন করে এবং প্রতিটি উইন্ডোর নিজস্ব ট্যাববার রয়েছে" অ-সমাধান বলে মনে হচ্ছে।
স্টিফান

আমি কেবল ট্যাব নামের পরিবর্তে ট্যাব গোষ্ঠীগুলি প্রদর্শন করার জন্য একটি কাস্টমাইজেশন যুক্ত করেছি যাতে আপনি কোনও ফাংশনে নিয়মগুলি প্রতিষ্ঠা করেন (যেমন গ্রুপ এলিস্প এবং একটি গ্রুপে লিস্প, গ্রুপ সি এবং সি ++ অন্য এবং এই জাতীয় গ্রুপগুলি) এবং যে ট্যাবগুলিতে প্রদর্শিত হয়।
ইমানুয়েল বুস্টোস

এটি এখনও প্রশ্নের উত্তর দেয় না, যেখানে ফ্রেমে প্রতি একটি ট্যাববার থাকতে হবে (উইন্ডো প্রতি পরিবর্তে) এবং প্রতিটি ট্যাব একটি উইন্ডো-কনফিগারেশন উপস্থাপন করে।
স্টিফান

ঠিক আছে আমি আনস্ট্যান্ড না। আমি তদন্ত করব এবং এতে কাজ করব!
ইমানুয়েল বুস্টোস

0

এখানে আমার কনফিগারেশনটি মূল্যবান worth এটা অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে:

  • ট্যাব (চালু মাউস অপারেশন mouse-2বন্ধ করতে, ব্রাউজারে মত , mouse-3 একটি নতুন এ গিয়ে Emacs উইন্ডোতে খুলুন পপ, মত i3 )
  • কীবোর্ড নিয়ন্ত্রণ ( টিএমক্স / স্ক্রিনেরM-left মতো ডানদিকে স্যুইচ ট্যাবগুলি )
  • রং ("মো থিম / moe-dark" কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ )
  • গোষ্ঠীকরণ (বর্তমানে, ইমাস *buffers*এবং "নিয়মিত")
  • স্বয়ংক্রিয়ভাবে আপডেট ( ব্যবহার-প্যাকেজ সহ )

কনসোল-এর ট্যাব

(use-package tabbar
  :ensure t
  :bind
  ("<M-left>" . tabbar-backward)
  ("<M-right>" . tabbar-forward)

  :config
  (set-face-attribute
   'tabbar-button nil
   :box '(:line-width 1 :color "gray19"))

  (set-face-attribute
   'tabbar-selected nil
   :foreground "orange"
   :background "gray19"
   :box '(:line-width 1 :color "gray19"))

  (set-face-attribute
   'tabbar-unselected nil
   :foreground "gray75"
   :background "gray25"
   :box '(:line-width 1 :color "gray19"))

  (set-face-attribute
   'tabbar-highlight nil
   :foreground "black"
   :background "orange"
   :underline nil
   :box '(:line-width 1 :color "gray19" :style nil))

  (set-face-attribute
   'tabbar-modified nil
   :foreground "orange red"
   :background "gray25"
   :box '(:line-width 1 :color "gray19"))

  (set-face-attribute
   'tabbar-selected-modified nil
   :foreground "orange red"
   :background "gray19"
   :box '(:line-width 1 :color "gray19"))

  (custom-set-variables
   '(tabbar-separator (quote (0.2))))

  (defun tabbar-buffer-tab-label (tab)
    "Return a label for TAB.
  That is, a string used to represent it on the tab bar."
    (let ((label  (if tabbar--buffer-show-groups
                      (format " [%s] " (tabbar-tab-tabset tab))
                    (format " %s " (tabbar-tab-value tab)))))
      (if tabbar-auto-scroll-flag
          label
        (tabbar-shorten
         label (max 1 (/ (window-width)
                         (length (tabbar-view
                                  (tabbar-current-tabset)))))))))

  (defun px-tabbar-buffer-select-tab (event tab)
    "On mouse EVENT, select TAB."
    (let ((mouse-button (event-basic-type event))
          (buffer (tabbar-tab-value tab)))
      (cond
       ((eq mouse-button 'mouse-2) (with-current-buffer buffer (kill-buffer)))
       ((eq mouse-button 'mouse-3) (pop-to-buffer buffer t))
       (t (switch-to-buffer buffer)))
      (tabbar-buffer-show-groups nil)))

  (defun px-tabbar-buffer-help-on-tab (tab)
    "Return the help string shown when mouse is onto TAB."
    (if tabbar--buffer-show-groups
        (let* ((tabset (tabbar-tab-tabset tab))
               (tab (tabbar-selected-tab tabset)))
          (format "mouse-1: switch to buffer %S in group [%s]"
                  (buffer-name (tabbar-tab-value tab)) tabset))
      (format "\
mouse-1: switch to %S\n\
mouse-2: kill %S\n\
mouse-3: Open %S in another window"
              (buffer-name (tabbar-tab-value tab))
              (buffer-name (tabbar-tab-value tab))
              (buffer-name (tabbar-tab-value tab)))))

  (defun px-tabbar-buffer-groups ()
    "Sort tab groups."
    (list (cond ((or
                  (eq major-mode 'dired-mode)
                  (string-equal "*" (substring (buffer-name) 0 1))) "emacs")
                (t "user"))))
  (setq tabbar-help-on-tab-function 'px-tabbar-buffer-help-on-tab
        tabbar-select-tab-function 'px-tabbar-buffer-select-tab
        tabbar-buffer-groups-function 'px-tabbar-buffer-groups)

  :init
  (tabbar-mode 1))

সংযুক্তি 1 - মো থিম

(use-package moe-theme
  :ensure t
  :config
  (progn
    (load-theme 'moe-dark :no-confirm)
    (set-face-attribute 'fringe nil :background "gray19")))

আনেক্স 2 - শেষ 2 টি বাফার টগল করুন (কেবি ম্যাক্রো)

(define-key global-map [(control tab)] (kbd "C-x b <return>")) 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.