একাধিক ইভি বাফার তৈরি করার সহজ পদ্ধতি


10

M-x ewwইউআরএল বা কীওয়ার্ডগুলির জন্য অনুরোধ জানায় এবং একটি নতুন *eww*বাফার খোলে । ইন eww-mode, Gসাথে আবদ্ধ eww, যা একক eww বাফারের সামগ্রীর প্রতিস্থাপন করে।

বিভিন্ন ওয়েবপৃষ্ঠাগুলির জন্য একাধিক বাফার তৈরি করতে, আমি একটি নতুন বাফার তৈরির জন্য eww-modeম্যানুয়ালি সেট করে , তারপরে G(বা M-x eww) টিপতে টিপুন অথবা ইউআরএল পরিদর্শন করতে গিয়েছি ।

আমি সহজেই এমন একটি ফাংশন লিখতে পারি যা আমার জন্য এগুলি করে তবে আমি আশ্চর্য হয়েছি যে এই কার্যকারিতাটি কেবল অন্তর্নির্মিত নয়। আমি কি শুধু মিস করছি?


Emacs 27 এখন ewwএকটি উপসর্গ যুক্তি দিয়ে কল করার জন্য সমর্থন যোগ করে ; নীচে আমার উত্তর দেখুন।
বেসিল

উত্তর:


6

আপনি সঠিক যে ewwস্বয়ংক্রিয়ভাবে আপনার জন্য নতুন বাফার তৈরি করে না। তবে আমি এই ট্রিকটি এর্গোম্যাক.এস.এস.আর.জি থেকে ব্যবহার করছি এবং এটি দুর্দান্ত কাজ করে!

নীচে বিলোপ করা হয়েছে, প্রতিবার আপনি যখন M-x ewwকোনও অ-ই-বিউজ বাফার থেকে করবেন, একটি অনন্য eww বাফার তৈরি হবে।

;; Auto-rename new eww buffers
(defun xah-rename-eww-hook ()
  "Rename eww browser's buffer so sites open in new page."
  (rename-buffer "eww" t))
(add-hook 'eww-mode-hook #'xah-rename-eww-hook)

আপনি যদি কোনও ইভিউ বাফারে থাকাকালীন কোনও নতুন ইভিউ বাফারটি ছড়িয়ে দিতে চান তবে নীচের পরামর্শটি উপস্থাপন করুন (আপনার এখনও উপরে বর্ণিত হওয়া প্রয়োজন যাতে নতুন ewwবাফারদের স্বতন্ত্র নাম দেওয়া যায়)।

;; C-u M-x eww will force a new eww buffer
(defun modi/force-new-eww-buffer (orig-fun &rest args)
  "When prefix argument is used, a new eww buffer will be created,
regardless of whether the current buffer is in `eww-mode'."
  (if current-prefix-arg
      (with-temp-buffer
        (apply orig-fun args))
    (apply orig-fun args)))  
(advice-add 'eww :around #'modi/force-new-eww-buffer)

এটি ইমাক্স 25 এ আমার জন্য কাজ করবে বলে মনে হচ্ছে না (আমি মাস্টার থেকে বিল্ডিং করছি)। আমি ব্যবহার করে আংশিক স্থিরতা rename-uniquelyপেয়েছি, যদিও আমি যদি ewwকোনও অ-ই-বি বাফার থেকে সক্রিয় করি তবে এটি কার্যকর । তবে আমি যদি কোনও ইভিউ বাফারে থাকি তবে হুকটি আগুন দেয় না, কারণ মোডটি পরিবর্তন হচ্ছে না। কমপক্ষে আমি ভাবছি যা ঘটছে।
আরপি ডিলন

তুমি ঠিক বলছো. আমি যা পোস্ট করেছি তা M-x ewwহ'ল উদ্দেশ্য হিসাবে ঠিক তখনই কাজ করে যদি আপনি অন-ই-বি-বাফার থেকে করেন। আপনি যদি কোনও ইভিউ বাফার চলাকালীন কোনও নতুন ইভিউ বাফার স্প্যান করার ইচ্ছা পোষণ করেছিলেন তবে এটি স্পষ্ট ছিল না। আমি কিছু আপডেট এলে সমাধানটি আপডেট করব। আমিও সর্বশেষতম মাস্টার তৈরিতে আছি।
দক্ষ মোদী

এই আচরণ নকশা রয়েছে ewwযেমন সোর্স কোড দেখা ফাংশন: (pop-to-buffer-same-window (if (eq major-mode 'eww-mode) (current-buffer) (get-buffer-create "*eww*")))
দক্ষ মোদী

@ আরপিডিলন আপনার সাথে পরামর্শের জন্য আপডেটটি দেখুন।
কুশল মোদী

আপডেটের জন্য ধন্যবাদ! পরামর্শ ব্যবহার করার পদ্ধতিটি বাস্তবে আগুন বলে মনে হচ্ছে না। আমি কোনও ফাংশন ব্যবহার করে একটি সহজ পদ্ধতির কথা ভাবছি যা আমার পক্ষে সেরা।
আরপি ডিলন

3

মনে ewwহয় এই আচরণটি এড়াতে ডিজাইন করা হয়েছে। eww-newযখন নতুন ইভিউ বাফার পছন্দ হয় তখন এই ফাংশনটি বলা যেতে পারে:

(defun eww-new ()
  (interactive)
  (let ((url (read-from-minibuffer "Enter URL or keywords: ")))
    (switch-to-buffer (generate-new-buffer "eww"))
    (eww-mode)
    (eww url)))

3

হালনাগাদ

এই আচরণ আলোচনা হয়েছিল বাগ # 34374 এবং এর মার্জ 2019-02-15

সুতরাং ইমাস ২ 27-এ, ewwএকটি উপসর্গ যুক্তির সাথে কল করে এটি ডিফল্ট বাফারটিকে পুনরায় ব্যবহার না করে নতুন বাফার ব্যবহার করতে বলে *eww*


আমি আশ্চর্য হয়েছি যে এই কার্যকারিতাটি কেবল অন্তর্নির্মিত নয়। আমি কি শুধু মিস করছি?

হ্যা এবং না. অনুরূপ হিসাবে Emacs 26 এ অনুরূপ কার্যকারিতা যুক্ত হয়েছিল eww-open-in-new-buffer, যা M-RETপূর্বনির্ধারিতভাবে EWW বাফারগুলিতে আবদ্ধ :

eww-open-in-new-buffer is an interactive compiled Lisp function in
‘eww.el’.

It is bound to M-RET, <menu-bar> <Eww> <Follow URL in new buffer>.

(eww-open-in-new-buffer)

Fetch link at point in a new EWW buffer.

একমাত্র সমস্যাটি হ'ল লেখার সময়, এই আদেশটি কেবল EWW বাফারগুলিতেই সীমাবদ্ধ। বিশেষত, এটি ইউটিউশন user-errorঅপশন দ্বারা নির্ধারিত হিসাবে কোনও অর্থবহ লিঙ্ক বিন্দুতে পাওয়া না গেলে এটি ছুড়ে ফেলে eww-suggest-uris:

eww-suggest-uris is a variable defined in ‘eww.el’.
Its value is
(eww-links-at-point url-get-url-at-point eww-current-url)

Documentation:
List of functions called to form the list of default URIs for ‘eww’.
Each of the elements is a function returning either a string or a list
of strings.  The results will be joined into a single list with
duplicate entries (if any) removed.

You can customize this variable.

This variable was introduced, or its default value was changed, in
version 25.1 of Emacs.

কমান্ডটির আরও একটি সীমাবদ্ধতা হ'ল এটি ব্যবহারকারীকে ইউআরএল বা অনুসন্ধানের পদগুলির জন্য অনুরোধ করে না, যেমন কমান্ডটি ewwবলে।

এখানে কিভাবে আপনার মধ্যে এই পার্থক্য সেতু পারে একটি সহজ উদাহরণ ewwএবং eww-open-in-new-buffer:

(defun my-eww-new-buffer (url)
  "Like `eww', but fetch URL in a new EWW buffer."
  (interactive (advice-eval-interactive-spec (cadr (interactive-form 'eww))))
  (let ((eww-suggest-uris (list (lambda () url))))
    (eww-open-in-new-buffer)))

এই কি আছে প্রথম কল interactiveবৈশিষ্ট এর eww, URL- এর যা অনুরোধ জানানো বা অনুসন্ধান যথারীতি শর্তাবলী। এরপরে eww-open-in-new-bufferএটি পূর্ববর্তী ইনপুট ইউআরএল বা অনুসন্ধানের পদগুলির সাথে একমাত্র প্রস্তাবিত ইউআরআই হিসাবে কল করে, যাতে আদেশটি কোনও তন্ত্র না ছুঁড়ে।

এই কমান্ডটি EWW বাফারগুলির মধ্যে এবং না উভয়ই কাজ করবে, সুতরাং এটি eww-open-in-new-bufferযদি আপনি পছন্দ করেন তবে এটি ডিফল্টটির জন্য একটি ড্রপ-ইন প্রতিস্থাপন হিসাবে কাজ করতে পারে :

(with-eval-after-load 'eww
  (define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))

যে কোনও উপায়ে, আপনি এটিকে যে কোনও জায়গা থেকে অনুরোধ করতে পারেন M-xmy-eww-new-bufferRETবা এটি আরও সুবিধাজনক কীতে বিশ্বব্যাপী আবদ্ধ করতে পারেন।


0

আমি কিছুটা আরপি ডিলন স্নিপেট প্রসারিত করেছি । যা (defalias 'w #'af/eww)নীচের ফাংশনটি ব্যবহার করে উপন্যাসের মতো এবং উনান তৈরি করতে ভাল প্রার্থী করে। পার্থক্যটি কেবলমাত্র শর্তযুক্ত চেক হয় যদি *eww*বাফারটি ইতিমধ্যে বিদ্যমান থাকে, তবে নতুনটি তৈরি করা হয়, যদি স্থানীয় না হয় তবে অনুরোধ ewwকরা হয়।

(defun af/eww ()
  (interactive)
  (let ((eww-current-buffer (get-buffer "*eww*"))
         (url nil))
    (if (eq eww-current-buffer nil)
      (eww)
      (setq url (read-from-minibuffer "Enter URL or keywords: "))
      (switch-to-buffer (generate-new-buffer "eww"))
      (eww-mode)
      (eww url)
    )))

0

আমি ইমাস 25.1 ব্যবহার করি এবং eww-open-in-new-bufferফাংশনটি সেখানে নেই। সুতরাং আমি যে পৃষ্ঠাতে আছি সে পৃষ্ঠাটি সম্পর্কে কিছুটা সহজ শিরোনাম সহ আমি যে ওয়েবসাইটের মধ্যে আছি সেটির নামকরণ করতে হবে এবং ইমাসে ewwখোলা অন্য যে কোনও বাফার থেকে আবার কল করা উচিত (উদাহরণস্বরূপ বাফার-মোড বাফার বা ডায়ার্ড বাফার থেকে, স্ক্র্যাচ থেকে, অন্য একটি দস্তাবেজ, যে কোনও) আমাকে অন্য ইভিউ বাফারে নিয়ে যায়। অবশেষে আমি Sসেখান থেকে নির্বাচন করতে eww বাফার তালিকার সাথে যাই। বিজোড় তবে এটি কাজ করে এবং কয়েকটি পদক্ষেপ সহ। আমি ভাবছি কেন eww-newশুরু থেকেই অন্তর্নির্মিত হয়নি। অবশ্যই এটি উপরের কোড সহ ক্লিনার, আমি চেষ্টা করে দেখব। ইমাম 26 এ ফাংশনটি যুক্ত হয়েছিল তা দেখে আমি আনন্দিত।


ইমাস 27-এ, ewwএকটি উপসর্গ যুক্তি দিয়ে কল করা এখন একটি নতুন EWW বাফার তৈরি করে; আমার উত্তর উপরে দেখুন।
তুলসী

আপনি যদি নতুন কোনও বাফার নাম আবিষ্কার করতে না চান তবে সাথে যান M-x rename-uniquely
স্টিফান

টিপটির জন্য আপনাকে ধন্যবাদ স্টিফান আমার ডেবিয়ান 9 রয়েছে এবং আমি
এমাক্সের

যাইহোক আমাকে আমার ইমাস আপডেট করতে হবে, আমি বিল্ট-ইন ব্রাউজারটি সব সময় ব্যবহার করি। এবং ডাব্লু 3 এম ট্যাবগুলি দিয়ে আমার প্রবাহকে সরিয়ে দেয়। ইভিও ব্যবহারিক এবং এটি আমার প্রয়োজন। এই বৈশিষ্ট্যটি সত্যই গুরুত্বপূর্ণ, আপডেটের জন্য বেসিলকে ধন্যবাদ, আপনি যে কাস্টম কমান্ডটি ভাগ করেছেন সেটি স্ট্যান্ডার্ড আচরণের জন্য একটি চতুর বিকল্প বলে মনে হচ্ছে। আমি org ফাইল, তথ্য বাফার, টার্মিনাল এবং ই ব্রাউজারের মাঝে সব সময় যাচ্ছি এবং আগের পৃষ্ঠাটি পুঁতে না দিয়ে হাতে হাতে ইইউ রাখা ভাল লাগবে।
তেচাপু

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