+ enable lexical-scope everywhere (lexical-binding = t): ~5-10% faster startup; ~5-20% general boost + reduce consing, function calls & garbage collection by preferring cl-loop & dolist over lambda closures (for mapc[ar], add-hook, and various cl-lib filter/map/reduce functions) -- where possible + prefer functions with dedicated opcodes, like assq (see byte-defop's in bytecomp.el for more) + prefer pcase & cond (faster) over cl-case + general refactor for code readability + ensure naming & style conventions are adhered to + appease byte-compiler by marking unused variables with underscore + defer minor mode activation to after-init, emacs-startup or window-setup hooks; a customization opportunity for users + ensures custom functionality won't interfere with startup.
31 lines
993 B
EmacsLisp
31 lines
993 B
EmacsLisp
;;; lang/julia/config.el -*- lexical-binding: t; -*-
|
|
|
|
(use-package julia-mode
|
|
:mode "\\.jl$"
|
|
:interpreter "julia"
|
|
:config
|
|
(set! :repl 'julia-mode #'+julia/repl)
|
|
|
|
;; Borrow matlab.el's fontification of math operators
|
|
;; From <https://ogbe.net/emacsconfig.html>
|
|
(font-lock-add-keywords
|
|
'julia-mode
|
|
`((,(let ((OR "\\|"))
|
|
(concat "\\(" ;; stolen `matlab.el' operators first
|
|
"[<>!]=?" OR
|
|
"\\.[/*^']" OR
|
|
"==" OR
|
|
"=>" OR
|
|
"\\<xor\\>" OR
|
|
"[-+*\\/^&|$]=?" OR ;; this has to come before next (updating operators)
|
|
"[-!^&|*+\\/~:]" OR
|
|
;; more extra julia operators follow
|
|
"[%$]" OR
|
|
;; bitwise operators
|
|
">>>" OR ">>" OR "<<" OR
|
|
">>>=" OR ">>" OR "<<" OR
|
|
;; comparison
|
|
"[<>!]=?" OR
|
|
"\\)"))
|
|
1 font-lock-type-face))))
|
|
|