|
29 | 29 | (eval-when-compile (require 'subr-x)) |
30 | 30 | (require 'jupyter-repl) |
31 | 31 |
|
32 | | -(declare-function julia-latexsub-or-indent "ext:julia-mode" (arg)) |
33 | | - |
34 | | -(cl-defmethod jupyter-indent-line (&context (major-mode julia-mode)) |
35 | | - "Call `julia-latexsub-or-indent'." |
36 | | - (call-interactively #'julia-latexsub-or-indent)) |
| 32 | +(declare-function julia-mode-latexsub-completion-at-point-before |
| 33 | + "ext:julia-mode" ()) |
| 34 | +(declare-function julia-mode-latexsub-completion-at-point-around |
| 35 | + "ext:julia-mode" ()) |
| 36 | +(defvar julia-latexsub-abbrev-table) |
| 37 | +(defvar julia-force-tab-complete) |
37 | 38 |
|
38 | 39 | (cl-defmethod jupyter-load-file-code (file &context (jupyter-lang julia)) |
39 | 40 | (format "include(\"%s\");" file)) |
40 | 41 |
|
41 | 42 | ;;; Completion |
42 | 43 |
|
| 44 | +(define-abbrev-table 'jupyter-julia-abbrev-table () |
| 45 | + "Abbrev table for IJulia kernel with jupyter." |
| 46 | + :parents (list julia-latexsub-abbrev-table)) |
| 47 | + |
43 | 48 | (cl-defmethod jupyter-completion-prefix (&context (jupyter-lang julia)) |
44 | 49 | (cond |
45 | 50 | ;; Completing argument lists |
|
68 | 73 | (not (memq (char-syntax (char-before (1- beg))) '(?w ?_)))) |
69 | 74 | (setcar prefix (concat ":" (car prefix)))))))))))) |
70 | 75 |
|
71 | | -(cl-defmethod jupyter-completion-post-completion (candidate |
72 | | - &context (jupyter-lang julia)) |
73 | | - "Insert the unicode representation of a LaTeX completion." |
74 | | - (if (eq (aref candidate 0) ?\\) |
75 | | - (when (get-text-property 0 'annot candidate) |
76 | | - (search-backward candidate) |
77 | | - (delete-region (point) (match-end 0)) |
78 | | - ;; Alternatively use `julia-latexsub-or-indent', but I have found |
79 | | - ;; problems with that. |
80 | | - (insert (string-trim (get-text-property 0 'annot candidate)))) |
81 | | - (cl-call-next-method))) |
82 | | - |
83 | 76 | ;;; `markdown-mode' |
84 | 77 |
|
85 | 78 | (cl-defmethod jupyter-markdown-follow-link (link-text url _ref-label _title-text _bang |
@@ -207,7 +200,15 @@ if !isdefined(Main, :__JUPY_saved_dir) |
207 | 200 | IJulia.push_posterror_hook(popdir) |
208 | 201 | IJulia.push_postexecute_hook(popdir) |
209 | 202 | end |
210 | | -end"))) |
| 203 | +end")) |
| 204 | + (add-hook 'completion-at-point-functions |
| 205 | + #'julia-mode-latexsub-completion-at-point-before nil t) |
| 206 | + (add-hook 'completion-at-point-functions |
| 207 | + #'julia-mode-latexsub-completion-at-point-around nil t) |
| 208 | + (setq local-abbrev-table jupyter-julia-abbrev-table) |
| 209 | + (when julia-force-tab-complete |
| 210 | + (setq-local tab-always-indent 'complete) |
| 211 | + (abbrev-mode 1))) |
211 | 212 |
|
212 | 213 | (cl-defmethod jupyter-repl-after-init (&context (jupyter-lang julia)) |
213 | 214 | (add-function |
|
0 commit comments