la mia versione di emacs è 24.3.1.
capisco che devo inserire ob-C.el (disponibile da qui ) in un percorso in cui Emacs può leggerlo.
ho prima copiato e incollato il codice da quel file .el nel mio file .emacs e ho riavviato emacs. poi sono andato a un blocco di codice C (all'interno di un file org) e ho provato a eseguirlo (usando Cc Cc). il minibuffer disse "nessuna funzione org-babel-execute per C". la stessa storia giocata con il tentativo di eseguire un blocco di codice C ++. nota che R e Python valutano perfettamente all'interno dei miei file organizzativi. i problemi sembrano essere solo con questi linguaggi compilati.
poi ho provato a mettere questo ob-C.el nella directory ~ / .emacs.d per vedere se questo ha aiutato le cose. riavviato emacs e controllato. non ha funzionato.
poi ho provato a inserirlo in una directory ~ / .emacs.d / lisp e ho aggiunto le seguenti righe al mio file .emacs
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
dopo aver riavviato emacs, la valutazione dei blocchi di codice C o C ++ dall'interno di un file org non funziona ancora. continuo a ricevere lo stesso errore "nessuna funzione org-babel-execute per C" o "nessuna funzione org-babel-execute per C ++".
Aggiornare
ho aggiornato la mia versione di emacs alla 24.5, cancellato tutte le precedenti sottodirectory elpa e melpa nella mia directory ~ / .emacs.d. sospettando che avesse a che fare con l'ordine in cui ho inserito il mio
(custom-set-variables
'(org-babel-load-languages
(quote
((emacs-lisp . t)
(C . t)
(css . t)
(sh . t)
(awk . t)
(R . t))))
e
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
blocchi di codice, ho messo il carico "ob-C.el" prima della cosa org-babel-load-languages. ho quindi eseguito più volte il blocco di codice c ++. senza fortuna.
poi ho rimosso tutto (ripulito il blocco custom-set-variabili nel file .emacs) e ora il mio file .emacs sembra
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
;; load the languages that are needed
(org-babel-do-load-languages
'org-babel-load-languages '((C . t)))
Non funziona ancora.
Il codice che sto cercando di valutare in un buffer orgmode è:
#+BEGIN_SRC c
printf("Hello world");
#+END_SRC
Il buffer Messaggi personali si presenta così dopo aver riavviato emacs e aver tentato di eseguire il blocco di codice sopra riportato:
Loading /home/taeten/.emacs.d/lisp/ob-C.el (source)...done
Wrote /home/taeten/.emacs.d/.emacs.desktop.lock
Desktop: 1 frame, 0 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit [2 times]
Making completion list... [3 times]
org-babel-execute-src-block: No org-babel-execute function for c! [5
times]
Ignoring unknown mode `elisp-mode'
File local-variables error: (void-function elisp-mode)
byte-code: Beginning of buffer [6 times]
byte-code: Beginning of buffer
load
erequire
.require
esegue il caricamento (nel caso in cui il file abbiaprovide
un'istruzione, che in questo caso lo fa), ma non è necessario ancherequire
perché questo è gestito daorg-babel-do-load-languages
, è necessario assicurarsi di richiedereorg
prima che ciò accada. Inoltre, penso diC
noc
, ci hai provato?