Org- মোডে ক্লোজার কোড মূল্যায়ন কোনও আউটপুট উত্পাদন করে না


11

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

কি কাজ করছে না:

আমি যখন উত্স কোড ব্লকটি কার্যকর করি তখন আমি পাই No output produced

নমুনা এসসিআর কোড ব্লক

#+begin_src clojure
(+ 2 2)
#+end_src clojure

কি কাজ করছে:

  1. cider-jack-in কাজ করছে এবং আমি এনআরইপিএলে কোড সম্পাদন করতে সক্ষম হয়েছি
  2. আমি একটি .cljফাইল থেকে কোড নির্বাহ করতে সক্ষম

ধন্যবাদ

বিস্তারিত

স্পেসম্যাকস ব্যবহার করে ইমাস 25.1

সংগঠন-মোড 9.0.5

Org বাবেল কনফিগারেশন

(defun dotspacemacs/user-config ()
  (require 'ob)
  (require 'ob-clojure)
  (require 'paredit)
  (require 'org-babel-clojure)
  (setq org-babel-clojure-backend 'cider)
  (require 'cider)
  (org-babel-do-load-languages
   'org-babel-load-languages
   '((clojure . t)))
  )

আপনার যদি অন্য কোনও তথ্য প্রয়োজন হয় তবে আমাকে জানান let

উত্তর:


10

আমি সে একই সমস্যা দেখছি। কিছুটা খনন করার সময়, আমি মনে করি যে আমি সমস্যাটি চিহ্নিত করেছি। তবে কাকে এই প্রতিবেদন করা উচিত তা নিশ্চিত নয়।

সমস্যাটি org-babel-execute: Clojure ফাংশনে রয়েছে। এই ফাংশনটিতে কোডের নিম্নলিখিত বিট রয়েছে

(setq result
       (nrepl-dict-get
    (nrepl-sync-request:eval
     expanded (cider-current-connection) (cider-current-session))
    (if (or (member "output" result-params)
        (member "pp" result-params))
        "out"
      "value")))

সমস্যাটি nrepl-sync-অনুরোধের কলটিতে রয়েছে: eval। ডকুমেন্টেশন এই ফাংশন জন্য

(nrepl- সিঙ্ক-অনুরোধ: eval ইনপুট সংযোগ এবং alচ্ছিক এনএস)

সিআরএনক্রীনে এনআরপিএল সার্ভারে INPUT প্রেরণ করুন। অনুরোধটি কানেকশনের মাধ্যমে প্রেরণ করা হয়েছে। এনএস যদি নন-শূন্য থাকে তবে তা অনুরোধে অন্তর্ভুক্ত করুন।

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

(dict status (namespace-not-found done error done state state) id 17 session 43e9fd6c-82ed-49fe-9624-0cfc6f56f8b1 changed-namespaces (dict) repl-type cljclj)

নেমস্পেস-না-পাওয়া নোট করুন

হয় আর্গুমেন্টের (সিডার-কারেন্ট-এনএস) একটি কল হওয়া উচিত বা সম্ভবত এটি ছেড়ে দেওয়া উচিত কারণ আমি দেখছি না কীভাবে আপনি ব্লক মূল্যায়নের অংশ হিসাবে নাম স্থানটি পাস করতে পারেন।

সম্পাদনা: এখানে একটি সহজ প্যাচ যা সমস্যাটি সমাধান করার জন্য উপস্থিত হয়। Org git রেপোর বর্তমান প্রধানের বিপরীতে উত্পন্ন

---
 lisp/ob-clojure.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
index d407105..e542a29 100644
--- a/lisp/ob-clojure.el
+++ b/lisp/ob-clojure.el
@@ -44,6 +44,7 @@

 (declare-function cider-current-connection "ext:cider-client" (&optional type))
 (declare-function cider-current-session "ext:cider-client" ())
+(declare-function cider-current-ns "ext:cider-client" ())
 (declare-function nrepl--merge "ext:nrepl-client" (dict1 dict2))
 (declare-function nrepl-dict-get "ext:nrepl-client" (dict key))
 (declare-function nrepl-dict-put "ext:nrepl-client" (dict key value))
@@ -118,7 +119,7 @@ using the :show-process parameter."
                org-babel-clojure-sync-nrepl-timeout))
               (nrepl-sync-request:eval expanded
                        (cider-current-connection)
-                       (cider-current-session))))
+                       (cider-current-ns))))
           (setq result
             (concat
              (nrepl-dict-get response
@@ -153,7 +154,7 @@ using the :show-process parameter."
        ;; Update the status of the nREPL output session.
        (setq status (nrepl-dict-get response "status")))
          (cider-current-connection)
-         (cider-current-session))
+         (cider-current-ns))

         ;; Wait until the nREPL code finished to be processed.
         (while (not (member "done" status))
-- 
2.7.4

প্যাচটি ইম্যাক্স-অরগমোড তালিকায় প্রেরণ করেছে


সুতরাং আপনি কি বলছেন আমাদের ফাংশনটি সম্পাদনা করা উচিত এবং এটির সাথে প্রতিস্থাপন করা উচিত (cider-current-ns)? এবং যদি তাই হয় তবে আমি কোথায় এই ফাংশনটি খুঁজে পাব?
জিল শাহ

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

আপনার সমাধান নিখুঁতভাবে কাজ করছে। আমার ob-clojureবয়স কিছুটা বড় ছিল তাই আমি নতুনকে টানলাম, প্রাসঙ্গিক পরিবর্তনগুলি করেছি এবং এটি কার্যকর! তোমাকে অনেক ধন্যবাদ! আমি আশা করি আপনি কিছু দিন আগে উত্তর দিয়েছি! আমি আপনাকে অবশ্যই অনুগ্রহ দিতাম। :) ধন্যবাদ!
জিল শাহ

1
3 জুন 2017, ইম্যাকস 25.1.1, org 9.0.7, স্পেসম্যাকস 0.200.9 হিসাবে, যখন আমি স্পেসম্যাকগুলির একটি নতুন ক্লোন শাখা বিকাশ করেছি এবং আমার এলপা ডিরেক্টরিটি মুছেছি তখন এই ফিক্সটি এখনও নেই। কাজ করার জন্য যে কোনও কোড-ব্লকের eval পাওয়ার জন্য আমাকে এখনও org ডিরেক্টরিগুলি পরিষ্কার করতে হবে find ~/.emacs.d/elpa/org* -name "*elc" -delete, তারপরে উপরের প্যাচটি ম্যানুয়ালি প্রয়োগ করুন। সুসংবাদটি প্যাচটি আজ কাজ করে works
রেব কেবিন

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

0

Org-babel কে ব্লকটিতে আপনাকে উত্পাদিত ফলাফলগুলিতে কী অন্তর্ভুক্ত করতে চান তা বলার ক্ষেত্রে শিরোনাম যুক্তি থাকতে হবে - মূল্যায়ন বা ফলাফলকে স্টাডাউট বা উভয়ই ফলাফল। আপনার ক্ষেত্রে, এমন কোনও আউটপুট নেই যা মূল্যায়ন (+ 1 1)করে। ব্যবহার করে দেখুন (println (+ 1 1))

#+name: Lazy Sequences in Clojure
#+begin_src clojure
 (def a-lazy-sequence (cons 1 (lazy-seq (cons (+1 2) ()))))
#+end_src

#+name: List comprehensions in Clojure
#+begin_src clojure :results output
 (println (str (for [x (range 3)
                     y #{:a :b :c}]
                 [x y])))

#+end_src

#+RESULTS: List comprehensions in Clojure
 : (c l o j u r e . l a n g . L a z y S e q @ e a a 0 1 c e 7)

দুর্ভাগ্যক্রমে, (println (+ 1 1))কাজ করছে না। আপনার উপরের কোডটি আমি কপি-পেস্ট করেছি এবং এটিও কার্যকর হয় না।
জিল শাহ

2
আমার একই সমস্যা মনে হচ্ছে। list.gnu.org/archive/html/emacs-orgmode/2017-02/msg00429.html
stardiviner

0

চেষ্টা

#+begin_src clojure :results value
(+ 2 2)
#+end_src clojure

যা আউটপুট পরিবর্তে প্রত্যাবর্তিত মান মুদ্রণ করে।


1
এখনও কাজ করে না, বার্তাটির ক্ষেত্রটিতে "কোড ব্লকের কোনও মূল্য ফেরানো হয়নি" দেখায়।
stardiviner

0

এই সমস্যাটি স্পেসম্যাকসের জন্য অগত্যা নির্দিষ্ট নয়।

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

বিভিন্ন ইম্যাক এবং org সংস্করণগুলির অনেকগুলি পুনরায় ইনস্টল করার চেষ্টা করার পরে অবশেষে আমি দেখতে পেলাম যে অ্যাকোম্যাকস (!) এবং অর্গ 9.0.5 ( http://orgmode.org/ এ নির্দেশিত একটি টার্জেড হিসাবে ডাউনলোড করা) কাছাকাছি পৌঁছাতে সফল হয়েছিল code block produced no outputসমস্যা এই পোস্টারও অভিজ্ঞ।

যদিও অ্যাকোম্যাকস প্রত্যেকের জন্য দীর্ঘমেয়াদী সমাধান নাও হতে পারে, এটি অবশ্যই অন্যদের যারা ক্লোজারের সাথে org-babel ব্যবহারের উপর অত্যন্ত নির্ভরশীল তাদের উপরের সমাধানটি পুরোপুরি স্বীকৃত এবং প্রয়োগ না করা পর্যন্ত এই সমস্যাটি ঘটাতে সহায়তা করতে পারে।

এই মার্চ 9, 2017 হিসাবে অ্যাকোম্যাকস দ্বারা ব্যবহৃত ইম্যাক্সের সংস্করণটি হ'ল:

Aquamacs 3.3 GNU Emacs 25.1.1 (x86_64-apple-darwin14.1.0, NS appkit-1344.72 Version 10.10.2 (Build 14C109)) of 2016-09-19 on 24a02dbf6b34ae061ef4df89f15bfbc5d3ed497e

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