Cách khắc phục định nghĩa chức năng của Symbol Symbol là void: org-babel-get-header


7

Làm thế nào để bạn gặp rắc rối bắn này? (cố gắng chạy sh block async)

#+BEGIN_SRC sh                                                                                                   
/tmp/7.sh                                                                                                        
#+END_SRC

Sau đó tôi làm

C-c C-c

tôi có

Symbol's function definition is void: org-babel-get-header

Thiết lập của tôi

mở đầu cài đặt emacs25 org

;; my ~/prelude/personal/personal.el
(prelude-require-package 'ob-async)                                                                              
(require 'ob-async)   
(setq org-confirm-babel-evaluate nil)                                                                            

(org-babel-do-load-languages                                                                                     
 'org-babel-load-languages                                                                                       
 '(                                                                                                              
   (sh . t)                                                                                                      
   (ruby . t)                                                                                                    
   ))  


(Hôm nay) có 34 câu hỏi phù hợp với function definition is void: emacs.stackexchange.com/ . Lỗi luôn có nghĩa tương tự, theo nghĩa trước mắt, mặc dù cách khắc phục phù hợp có thể khác nhau trong các trường hợp khác nhau (ví dụ: cố gắng sử dụng một biến như một chức năng, gói chưa được tải, phiên bản Emacs sai). Nguyên nhân phổ biến nhất không phải là đầu tiên tải thư viện cần thiết. Sẽ thật tuyệt nếu ai đó cẩn thận hợp nhất hầu hết hoặc tất cả những câu hỏi đó thành một câu hỏi cộng đồng mới, chung chung với một câu trả lời hay.
vẽ

Câu trả lời:


12

Theo https://lists.gnu.org/archive/html/emacs-orgmode/2015-11/msg00425.html ob-sh đã được đổi tên ob-shelltrong org 8.2 ... và tôi trích dẫn từ đó:

org-babel-get-header đã bị xóa trong 0d000f5 (babel: thay đổi nhỏ trong API., 2015-10-29), nhưng ob-sh.el cũ vẫn đang cố gắng gọi nó.

Điều đó có nghĩa là bạn nên thay thế (sh . t)bằng (shell . t)trong cuộc gọi của bạn org-babel-do-load-languages. Và đừng quên bắt đầu lại emacs sau đó! ;-)

EDIT: Bạn không cần thay đổi ngôn ngữ nguồn của các khối mã nguồn từ shthành shell. Nó chỉ quan trọng để gọi org-babel-shell-initialize.

Các ngôn ngữ mã nguồn được hỗ trợ bởi ob-shellđược xác định trong tùy chọn org-babel-shell-names(có thể được tùy chỉnh).

Giá trị mặc định org-babel-shell-nameslà:

'("sh" "bash" "csh" "ash" "dash" "ksh" "mksh" "posh")

Từ các tên org-babel-execute:...chức năng được tạo ra bởi org-babel-shell-initialize.


Điều gì về tiêu đề khối mã, sử dụng sh hoặc shell
chiến binh người Mỹ-ninja

Bạn có thể sử dụng một trong hai, nhưng có một chút khác biệt giữa chúng. Xem emacs.stackexchange.com/questions353321/iêu
erikstokes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.