# Working setup for emacs org-mode

**URL:** <https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574>\
**Category:** General Usage\
**Tags:** emacs\
**Created:** [June 17, 2020, 2:54am UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574 "2020-06-17T02:54:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 17, 2020, 2:54am UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574/1 "2020-06-17T02:54:00Z")

</div>

I am confused when reading posts that used ob-emacs or ESS. Could someone post a .emacs setup that works? The idea is to write Julia codes in emacs org-mode and run the codes there.

Thanks!

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [June 17, 2020, 5:41am UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574/2 "2020-06-17T05:41:38Z")

</div>

I use [https://github.com/dzop/emacs-jupyter](https://github.com/dzop/emacs-jupyter) and I really like it! I don’t have my config handy, but I can post it later.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 17, 2020, 7:16am UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574/3 "2020-06-17T07:16:17Z")

</div>

Thank you! Yes, please!

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [June 18, 2020, 1:33am UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574/4 "2020-06-18T01:33:02Z")

</div>

Here you go:

```nohighlight
(require 'package)
(setq package-enable-at-startup nil)

(setq package-archives
      '(("GNU ELPA" . "https://elpa.gnu.org/packages/")
        ("MELPA Stable" . "https://stable.melpa.org/packages/")
        ("MELPA" . "https://melpa.org/packages/"))
      package-archive-priorities
      '(("MELPA Stable" . 10)
        ("GNU ELPA" . 5)
        ("MELPA" . 0)))

(package-initialize)

(unless (package-installed-p 'use-package)
	(package-refresh-contents)
	(package-install 'use-package))

(eval-when-compile
  (require 'use-package))

(use-package jupyter
  :ensure t
  :config
  (require 'jupyter-julia))

(setq org-src-fontify-natively t
      org-src-tab-acts-natively t
      org-confirm-babel-evaluate nil
      org-edit-src-content-indentation 0)

(org-babel-do-load-languages
 'org-babel-load-languages
 '((emacs-lisp . t)
   (jupyter . t)))

(add-to-list 'org-structure-template-alist
	     '("j" "#+BEGIN_SRC jupyter-julia :session jl
?
#+END_SRC"))

(setq org-babel-default-header-args:jupyter-julia '((:async . "yes")
						    (:exports . "both")
						    (:results . "scalar")))

```

This should be sufficient to have a pretty pleasant out-of-the-box Jupyter Julia experience in org mode and should auto-install the requisite packages.

I set it so that typing `<j` and then hitting the tab button will make a

```julia
#+BEGIN_SRC jupyter-julia :session jl

#+END_SRC

```

block where you can then write julia code and evaluate it `C-c C-c`.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [December 23, 2020, 11:07pm UTC](https://discourse.julialang.org/t/working-setup-for-emacs-org-mode/41574/5 "2020-12-23T23:07:33Z")

</div>

Thank you very very much! Sorry for the late response!
