একটি org- মোড কোড ব্লকে ত্রুটি এবং সতর্কতা প্রদর্শন করুন


10

একটি org ফাইলে পাইথন কোড ব্লকের মূল্যায়ন করার সময় আমি সতর্কতা এবং ত্রুটিগুলি জানাতে সক্ষম হতে চাই।

একটি কোড ব্লক পাইথন সিনট্যাক্স ত্রুটি আছে যখন, org সহায়কভাবে তাদের নামক একটি পৃথক বাফারে পপ আপ *Org-Babel Error Output*। টেবিল হিসাবে অরগ মোডে একটি অ্যারের ফলাফল ফেরত দেওয়ার ক্ষমতা বজায় রেখে সেখানেও আমার নিজের সতর্কতাগুলি পাঠাতে সক্ষম হওয়াই ভাল লাগবে :results value

পরিষ্কার করে বলতে গেলে, আমি যে ধরণের জিনিসটি কাজ করতে পারি তার একটি চতুর উদাহরণ এখানে দেওয়া হয়েছে:

#+BEGIN_SRC python 
    import sys
    sys.stderr.write('Warning.\n')
    sys.stderr.flush()
    return [['Table', 'header'], ['table', 'data']]
#+END_SRC

#+RESULTS:
| Table | header |
| table | data   |

যুক্ত করতে সম্পাদিত: org- মোড তালিকার এই আলোচনাটি পরামর্শ দেয় যে কোড-ব্লক মূল্যায়ন ব্যর্থ হলেই ত্রুটি আউটপুট প্রদর্শিত হবে। সুতরাং দেখে মনে হচ্ছে এটি সম্ভব, তবে কেবল মূল্যায়ন বাতিল exit(1)বা অনুরূপ ব্যবহার করে ।


কনস্ট্যান্টাইন এর উত্তর আমার পক্ষে নিখুঁতভাবে কাজ করে, যদি এটিও আপনার সমাধান হয় তবে দয়া করে উত্তরটি গ্রহণ করুন, যদি এটি আপনার প্রশ্ন আপডেট না করে থাকে তবে দয়া করে।
atevm

উত্তর:


6

ইমেল শুল্টে org-modeমেলিং তালিকায় বর্ণিত হিসাবে (প্রশ্নের লিঙ্কটি দেখুন) আমরা এটি org-babel-evalঅর্জনের জন্য সংশোধন করতে পারি :

(defvar org-babel-eval-verbose t
  "A non-nil value makes `org-babel-eval' display")

(defun org-babel-eval (cmd body)
  "Run CMD on BODY.
If CMD succeeds then return its results, otherwise display
STDERR with `org-babel-eval-error-notify'."
  (let ((err-buff (get-buffer-create " *Org-Babel Error*")) exit-code)
    (with-current-buffer err-buff (erase-buffer))
    (with-temp-buffer
      (insert body)
      (setq exit-code
            (org-babel--shell-command-on-region
             (point-min) (point-max) cmd err-buff))
      (if (or (not (numberp exit-code)) (> exit-code 0)
              (and org-babel-eval-verbose (> (buffer-size err-buff) 0))) ; new condition
          (progn
            (with-current-buffer err-buff
              (org-babel-eval-error-notify exit-code (buffer-string)))
            nil)
        (buffer-string)))))

এখন যদি org-babel-eval-verboseসেট করা থাকে t, উত্স কোড ব্লকের মূল্যায়নের সময় স্টার্ডারে মুদ্রিত আউটপুটটি আলাদা উইন্ডোতে ঠিক যেমন উত্স কোডের মূল্যায়ন ব্যর্থ হয়।

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