কীভাবে অর্গ-মোড উত্স কোড ব্লক ": ইভাল নো" স্থিতি টগল করবেন


9

আমি প্রায়শই :evalশিরোনাম যুক্তি ব্যবহার করে org- মোড ব্যাবেলে নির্দিষ্ট কোড ব্লকের মূল্যায়ন সীমাবদ্ধ বা বাতিল করি ।

এখানে একটি উদাহরণ:

#+BEGIN_SRC emacs-lisp :results value scalar :eval no
(+ 1 1)
#+END_SRC

#+RESULTS:
: 2

আমি হাতে ব্লক :eval noএবং :eval n(বা :eval noসম্পূর্ণ মুছুন ) এর মধ্যে কোডগুলি টগল করি ।

#+PROPERTY: eval no সুবিধাজনক, তবে প্রতিটি কোড ব্লকের জন্য উপযুক্ত নয়।

:evalনীচের মতো স্থিতি টোগল করার আরও ভাল উপায় আছে কি?

C-c C-t     (org-todo)
Rotate the TODO state of the current item among
(unmarked) -> TODO -> DONE

উত্তর:


7

আমি একটি অপেক্ষাকৃত সুন্দর সমাধান নিয়ে এসেছি, যা org-in-block-pফাংশনটির উপর নির্ভর করে , যা আমি একবার দেখার পরামর্শ দিই। আপনার init.elফাইলটিতে নিম্নলিখিত কোড যুক্ত করুন:

(defun org-toggle-src-eval-no ()
  "Will toggle ':eval no' on the src block begin line"

  (defun in-src-block-p ()
    "Returns t when the point is inside a source code block"
    (string= "src" (org-in-block-p '("src"))))

  (defun beginning-src ()
    "Find the beginning of the src block"
    (let ((case-fold-search t)) (search-backward "#+BEGIN_SRC")))

  (defun toggle-eval-no ()
    "Handles the toggling of ' :eval no'"
     (save-excursion
      (end-of-line)
      (let ((case-fold-search t)) (search-backward "#+BEGIN_SRC")
       (if (search-forward " :eval no" (line-end-position) "f")
           (replace-match "")
         (insert " :eval no")
         ))))

  (if (in-src-block-p) (toggle-eval-no)))

(defun add-org-toggle-src-key ()
  (local-set-key (kbd "C-c t") (lambda () (interactive) (org-toggle-src-eval-no))))

(add-hook 'org-mode-hook 'add-org-toggle-src-key)

এটি ফাংশনটি সংজ্ঞায়িত করে org-toggle-src-eval-noএবং আপনি যা চান ঠিক তা করা উচিত; যে কোনও সময় আপনি কোনও কোড ব্লকের ভিতরে থাকবেন, এটি উপস্থিতি টগল করবে :eval no। আমি এটিকে আবদ্ধ করেছি C-c t, তবে আপনি যা খুশি তা মানচিত্রে নির্দ্বিধায়। শুভ org-ing।


1
অ্যামেজিং! এটা সত্যিই দুর্দান্ত! এটাই আমি চেয়েছিলাম! আমি এত তাড়াতাড়ি সমাধানের আশা করিনি। এদিকে আমি লক্ষ্য করেছি মাত্র একটি তুচ্ছ জিনিস। যখন আমার 2 কোড ব্লক রয়েছে, আমি যদি দ্বিতীয় # + BEGIN_SRC ব্লকের একটি লাইনের শুরুতে সিসি টি করি তবে প্রথম কোড ব্লকটি টগলড হবে। উভয় (অনুসন্ধান-পশ্চাদপদ "# + BEGIN_SRC") এর আগে সম্ভবত আমার (মুভ-এ-লাইন-অব-লাইন শৃঙ্খলা) যুক্ত করা উচিত?
RUserPassingBy

1
দুর্দান্ত পয়েন্ট। (end-of-line)অনুসন্ধানের আগে অন্তর্ভুক্ত করার জন্য আমি আমার উত্তর আপডেট করেছি , যা #+BEGIN_SRCআপনি যদি আগে থাকেন তবে অন্য বিন্দুটি সীমাবদ্ধ না রেখে পয়েন্টটি শেষের দিকে নিয়ে যায় । আপনার যদি এখনও সমস্যা হয় তবে আমাকে জানান।
জিজেস্টেইন

আমি আপনার কোড জন্য আপনাকে ধন্যবাদ! এটা সত্যিই দুর্দান্ত !!
RUserPassingBy

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