কীভাবে এমএক্স এবং সিএফ কে ইতিহাস ভাগ করবেন?


11

এটি বেশ সাধারণ যে আমি কমান্ডের ডকুমেন্টেশনগুলির সাথে সন্ধান করব C-h fএবং এরপরেই কমান্ডটি অনুরোধ করব M-x

এই মুহুর্তে, আমি "সর্বশেষ ভিউ কমান্ডটি চাওয়ার" সবচেয়ে স্বল্পতম উপায়টি হল এর নামটি (হেল্প বাফার থেকে বা ইতিহাস থেকে) অনুলিপি করা এবং এটির মিনিফার M-xপ্রম্পটে ইঙ্ক করা ।

আমি যা চাই তা হ'ল describe-functionইতিহাসের অংশ হতে কমান্ড নামগুলির জন্য execute-extended-command। সুতরাং আমি ঠিক করতে পারে M-x M-p RET

এটি করার সহজতম উপায় কী?


1
কোনও উত্তর নয়, তবে আপনার কর্মপ্রবাহের উন্নতি হবে: আপনি কি শুনেছেন smexএবং করেছেন helm-M-x? পূর্ববর্তীটি মেলপাতে রয়েছে, দ্বিতীয়টি মেলপাতে অন্তর্ভুক্ত রয়েছে helm
এহভিন্স

উত্তর:


7

"সবচেয়ে সহজ উপায়" হ'ল কেবল আপনার নিজস্ব সংস্করণটি সংজ্ঞায়িত করা describe-functionএবং এটির সাথে বাঁধা C-h f

ভ্যানিলা কোড নিন এবং কেবলমাত্র কলটি পরিবর্তন করুন completing-readযাতে এটি একই ইতিহাসের তালিকা ব্যবহার করে যা M-x( execute-extended-command) ব্যবহার করে extended-command-history

(defun my-describe-function (function)
  "Display the full documentation of FUNCTION (a symbol)."
  (interactive
   (let ((fn (function-called-at-point))
         (enable-recursive-minibuffers t)
         val)
     (setq val (completing-read
                (if fn
                    (format "Describe function (default %s): " fn)
                  "Describe function: ")
                obarray 'fboundp t nil
                'extended-command-history ; <======================
                (and fn (symbol-name fn))))
     (list (if (equal val "") fn (intern val)))))
  (if (null function)
      (message "You didn't specify a function")
    (help-setup-xref (list #'describe-function function)
                     (called-interactively-p 'interactive))
    (save-excursion
      (with-help-window (help-buffer)
        (prin1 function)
        (princ " is ")
        (describe-function-1 function)
        (with-current-buffer standard-output
          (buffer-string))))))

(global-set-key "\C-hf" 'my-describe-function)

আমি আসল কোডটি কীভাবে খুঁজে পেলাম? C-h f describe-function, C-h k M-x, C-h f execute-extended-command। কোডের জন্য execute-extended-commandআমি দেখেছি এটি কমান্ডের নামটি ব্যবহার করে read-extended-commandএবং এটি কলকে আর্গুমেন্ট হিসাবে completing-readপাস করছে readsextended-command-historyHISTORY


8

আমি আপনার প্রশ্নের সঠিক উত্তর না দিয়ে যুক্ত করতে পারি, তবে একটি ওয়ার্কফ্লো যা এর প্রয়োজনীয়তা দূর করে।

আমি এর smexপরিবর্তে ব্যবহার করি execute-extended-command। মিনি মিনিয়ারে একবার smex:

  • RET কল execute-extended-command
  • C-h f কল smex-describe-function
  • M-. কল smex-find-function

আমি ডিফল্ট বাইন্ডিং পছন্দ করি না, তাই আমি সেগুলি কাস্টমাইজ করেছি:

(eval-after-load 'smex
  `(defun smex-prepare-ido-bindings ()
     (define-key ido-completion-map (kbd "TAB") 'minibuffer-complete)
     (define-key ido-completion-map (kbd "C-,") 'smex-describe-function)
     (define-key ido-completion-map (kbd "C-w") 'smex-where-is)
     (define-key ido-completion-map (kbd "C-.") 'smex-find-function)
     (define-key ido-completion-map (kbd "C-a") 'move-beginning-of-line)
     (define-key ido-completion-map "\C-i" 'smex-helm)))

6

দয়া করে মনে রাখবেন যে এর সহায়তা বাফার থেকে কমান্ডটি চাওয়া খুব সহজ। টাইপ করার পরে C-h fশুধু টাইপ করুন M-x M-n RET। এটি কাজ করে কারণ একটি নতুন সহায়তা বাফারে কমান্সের নামটি কার্সারের নীচে বাফারের শীর্ষে রয়েছে এবং M-nএটি মিনিবাফারে পুনরুদ্ধার করে।

তবে, আপনি যদি extended-command-historyপ্রতিটি বার এটির ডকুমেন্টেশন দেখার সময় কমান্ড যুক্ত করতে চান তবে আপনি একটি ছোট পরামর্শ দিয়ে এটি করতে পারেন:

(defun describe-function-extended-command-history (function)
  "Add command name to the history."
  (when (commandp function)
    (add-to-history 'extended-command-history (symbol-name function))))

(advice-add 'describe-function :before #'describe-function-extended-command-history)

বা নতুন ম্যাক্রো ব্যবহার করে define-adviceসবে 25.0.50 এ যুক্ত হয়েছে:

(define-advice describe-function (:before (function))
  "Add command name to the history."
  (when (commandp function)
    (add-to-history 'extended-command-history (symbol-name function))))

যদি চেহারা আপ ফাংশন না হয় (interactive)?
এমবোর্কে

(commandp function)সন্ধান করা ফাংশনটি ইন্টারেক্টিভ যাচাই করে কারণ কেবলমাত্র আদেশগুলি যুক্ত করা উচিত extended-command-history। সুতরাং যদি সন্ধানী ফাংশনটি ইন্টারেক্টিভ না হয় তবে এতে যুক্ত হয় না extended-command-history
link0ff

আহ, আমি এটা মিস করেছি। ব্যাখ্যার জন্য ধন্যবাদ!
এমবার্ক

1

আপনি যদি ব্যবহার helm-M-xকরেন তবে C-h fকমান্ডের ডকুমেন্টেশন সন্ধান করার জন্য টাইপ করার দরকার নেই , ডকুমেন্টেশনের প্রদর্শন টগল করার জন্য কেবল ব্যবহার করুন C-jবা C-zচালানোর সময় helm-M-x

আরও দেখুন হাল Mx এর বৈশিষ্ট্য

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