mi versión de emacs es 24.3.1.
Entiendo que tengo que poner el ob-C.el (disponible desde aquí ) en una ruta donde Emacs pueda leerlo.
Primero copié y pegué el código de ese archivo .el a mi archivo .emacs y reinicié emacs. luego fui a un bloque de código C (dentro de un archivo de organización) e intenté ejecutarlo (usando Cc Cc). el minibúfer dijo 'no hay función org-babel-execute para C'. La misma historia se desarrolló al intentar ejecutar un bloque de código C ++. tenga en cuenta que R y python evalúan perfectamente desde mis archivos de organización. Los problemas parecen ser solo con estos lenguajes compilados.
Luego intenté poner este ob-C.el dentro del directorio ~ / .emacs.d para ver si eso ayudaba. reinició emacs y comprobó. No funcionó.
luego intenté ponerlo en un directorio ~ / .emacs.d / lisp y agregué las siguientes líneas a mi archivo .emacs
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
después de reiniciar emacs, la evaluación de los bloques de código C o C ++ desde un archivo de organización aún no funciona. sigo recibiendo el mismo error "no org-babel-execute function for C" o "no org-babel-execute function for C ++".
Actualizar
Actualicé mi versión de emacs a 24.5, eliminé todos los subdirectorios anteriores de elpa y melpa en mi directorio ~ / .emacs.d. sospechando que tenía que ver con el orden en que coloqué mi
(custom-set-variables
'(org-babel-load-languages
(quote
((emacs-lisp . t)
(C . t)
(css . t)
(sh . t)
(awk . t)
(R . t))))
y
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
bloques de código, pongo la carga "ob-C.el" antes de lo de org-babel-load-languages. Luego ejecuté el bloque de código de C ++ varias veces. sin suerte.
luego eliminé todo (limpié el bloque de variables personalizadas en el archivo .emacs) y ahora mi archivo .emacs se ve así
;; 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)))
Aún no funciona.
El código que estoy tratando de evaluar en un búfer orgmode es:
#+BEGIN_SRC c
printf("Hello world");
#+END_SRC
El búfer My Messages se ve así después de reiniciar emacs e intentar ejecutar el bloque de código anterior:
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

loadyrequire.requirese carga (en caso de que el archivo tenga unaprovidedeclaración, que en este caso sí lo hace), pero tampoco necesita elrequireporque esto se manejaorg-babel-do-load-languages, debe asegurarse de solicitarloorgantes de que ocurra algo de eso. Además, creo queCnoc, ¿lo intentaste?Respuestas:
Realmente solo necesitas este bit en tu archivo init:
Tenga en cuenta que es una capital
C. Esto le permite a Babel procesar bloques fuente C, C ++ y D.fuente
org-babel-execute:c++función, que se definiría enob-C.el, pero la forma de decirle a Babel que necesita cargarob-C.eles llamarorg-babel-do-load-languages.