Major optimization refactor, across the board
+ 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.
This commit is contained in:
parent
64a142b3fc
commit
c7254e7bdc
154 changed files with 1101 additions and 1118 deletions
|
@ -1,4 +1,4 @@
|
|||
;;; lang/assembly/config.el
|
||||
;;; lang/assembly/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! mips-mode :mode "\\.mips$")
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/cc/autoload.el
|
||||
;;; lang/cc/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +cc/autoclose->-maybe ()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/cc/config.el --- C, C++, and Objective-C
|
||||
;;; lang/cc/config.el --- c, c++, and obj-c -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! cc-mode
|
||||
:commands (c-mode c++-mode objc-mode java-mode)
|
||||
|
@ -67,7 +67,7 @@
|
|||
(c-set-offset 'arglist-intro '+)
|
||||
(c-set-offset 'arglist-close '0)
|
||||
|
||||
(defun +cc--c-lineup-inclass (langelem)
|
||||
(defun +cc--c-lineup-inclass (_langelem)
|
||||
(if (memq major-mode '(c-mode c++-mode))
|
||||
(let ((inclass (assq 'inclass c-syntactic-context)))
|
||||
(save-excursion
|
||||
|
@ -115,12 +115,15 @@
|
|||
(def-package! irony
|
||||
:after cc-mode
|
||||
:commands irony-install-server
|
||||
:init
|
||||
(add-hook! 'c-mode-common-hook
|
||||
(when (memq major-mode '(c-mode c++-mode objc-mode))
|
||||
(irony-mode +1)))
|
||||
:config
|
||||
:preface
|
||||
(setq irony-server-install-prefix (concat doom-etc-dir "irony-server/"))
|
||||
:init
|
||||
(defun +cc|init-irony-mode ()
|
||||
(when (memq major-mode '(c-mode c++-mode objc-mode))
|
||||
(when (file-directory-p irony-server-install-prefix)
|
||||
(irony-mode +1))))
|
||||
(add-hook 'c-mode-common-hook #'+cc|init-irony-mode)
|
||||
:config
|
||||
(add-hook! 'irony-mode-hook #'(irony-eldoc flycheck-mode))
|
||||
(add-hook! 'c++-mode-hook
|
||||
(make-local-variable 'irony-additional-clang-options)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/clojure/config.el
|
||||
;;; lang/clojure/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! clojure-mode
|
||||
:mode "\\.clj$")
|
||||
|
@ -6,5 +6,4 @@
|
|||
(def-package! cider
|
||||
:commands (cider-jack-in cider-mode)
|
||||
:config
|
||||
(setq
|
||||
nrepl-hide-special-buffers t))
|
||||
(setq nrepl-hide-special-buffers t))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; module-crystal.el
|
||||
;;; lang/crystal/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! crystal-mode
|
||||
:mode "\\.cr$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; module-csharp.el
|
||||
;;; lang/csharp/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! csharp-mode :mode "\\.cs$")
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; module-data.el
|
||||
;;; lang/data/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(push '("/sxhkdrc" . conf-mode) auto-mode-alist)
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
;;; lang/elixir/autoload/elixir.el
|
||||
;;; lang/elixir/autoload/elixir.el -*- lexical-binding: t; -*-
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
;;; lang/elixir/config.el
|
||||
;;; lang/elixir/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! elixir-mode
|
||||
:mode ("\\.ex$")
|
||||
:mode "\\.ex$"
|
||||
:init
|
||||
(add-hook 'elixir-mode-hook #'turn-off-smartparens-mode)
|
||||
(add-hook 'elixir-mode-hook #'alchemist)
|
||||
(add-hook! 'elixir-mode-hook #'(turn-off-smartparens-mode alchemist))
|
||||
:config
|
||||
(set! :company-backend 'elixir-mode '(alchemist-company company-yasnippet)))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/elm/config.el
|
||||
;;; lang/elm/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! elm-mode
|
||||
:mode "\\.elm$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/emacs-lisp/autoload.el
|
||||
;;; lang/emacs-lisp/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +emacs-lisp/repl ()
|
||||
|
@ -20,18 +20,16 @@ to a pop up buffer."
|
|||
(buf (get-buffer-create "*doom eval*"))
|
||||
(inhibit-read-only t)
|
||||
lines)
|
||||
(unwind-protect
|
||||
(progn
|
||||
(with-current-buffer buf
|
||||
(read-only-mode +1)
|
||||
(erase-buffer)
|
||||
(setq-local scroll-margin 0)
|
||||
(emacs-lisp-mode)
|
||||
(prin1 result buf)
|
||||
(pp-buffer)
|
||||
(setq lines (count-lines (point-min) (point-max)))
|
||||
(goto-char (point-min))
|
||||
(if (> lines 1)
|
||||
(doom-popup-buffer buf)
|
||||
(message "%s" (buffer-substring (point-min) (point-max)))
|
||||
(kill-buffer buf)))))))
|
||||
(with-current-buffer buf
|
||||
(read-only-mode +1)
|
||||
(erase-buffer)
|
||||
(setq-local scroll-margin 0)
|
||||
(emacs-lisp-mode)
|
||||
(prin1 result buf)
|
||||
(pp-buffer)
|
||||
(setq lines (count-lines (point-min) (point-max)))
|
||||
(goto-char (point-min))
|
||||
(if (> lines 1)
|
||||
(doom-popup-buffer buf)
|
||||
(message "%s" (buffer-substring (point-min) (point-max)))
|
||||
(kill-buffer buf)))))
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
;;; lang/emacs-lisp/config.el
|
||||
;;; lang/emacs-lisp/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! elisp-mode ; built-in
|
||||
:mode ("/Cask$" . emacs-lisp-mode)
|
||||
:init
|
||||
(add-hook 'emacs-lisp-mode-hook #'+emacs-lisp|hook)
|
||||
|
||||
:config
|
||||
(set! :repl 'emacs-lisp-mode #'+emacs-lisp/repl)
|
||||
(set! :eval 'emacs-lisp-mode #'+emacs-lisp-eval)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/go/autoload.el
|
||||
;;; lang/go/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
;; TODO (defun +go/build ())
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/go/config.el
|
||||
;;; lang/go/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! go-mode
|
||||
:mode "\\.go$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; module-haskell.el
|
||||
;;; lang/haskell/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! haskell-mode
|
||||
:mode "\\.hs$"
|
||||
|
@ -10,7 +10,6 @@
|
|||
(load "haskell-mode-autoloads" nil t)
|
||||
|
||||
(set! :repl 'haskell-mode #'switch-to-haskell)
|
||||
|
||||
(push ".hi" completion-ignored-extensions)
|
||||
|
||||
(autoload 'switch-to-haskell "inf-haskell" nil t)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/java/config.el
|
||||
;;; lang/java/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; yasnippet defuns
|
||||
;;;###autoload
|
||||
|
@ -9,7 +9,7 @@
|
|||
|
||||
;;;###autoload
|
||||
(defun +java-android-mode-in-tags (&rest tags)
|
||||
(-contains? tags (android-mode-tag-name)))
|
||||
(cl-find (android-mode-tag-name) tags))
|
||||
|
||||
;;;###autoload
|
||||
(defun +java-android-mode-tag-name ()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/java/config.el
|
||||
;;; lang/java/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! meghanada
|
||||
:commands meghanada-mode
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/javascript/+screeps.el
|
||||
;;; lang/javascript/+screeps.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; TODO Constants may be out-of-date
|
||||
|
||||
|
@ -171,8 +171,9 @@
|
|||
:match "/screeps/.+$"
|
||||
:modes (+javascript-npm-mode))
|
||||
|
||||
(add-hook! '+javascript-screeps-mode-hook
|
||||
(defun +javascript|init-screeps-mode ()
|
||||
(when (eq major-mode 'js2-mode)
|
||||
(push 'javascript-jshint flycheck-disabled-checkers)
|
||||
(cl-pushnew 'javascript-jshint flycheck-disabled-checkers)
|
||||
(setq js2-additional-externs (append '("_") screeps-objects screeps-constants))))
|
||||
(add-hook '+javascript-screeps-mode-hook #'+javascript|init-screeps-mode)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/javascript/autoload.el
|
||||
;;; lang/javascript/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +javascript-npm-conf (make-hash-table :test 'equal))
|
||||
|
||||
|
@ -17,13 +17,13 @@ ignore the cache."
|
|||
;;;###autoload
|
||||
(defun +javascript-npm-dep-p (packages &optional project-root refresh-p)
|
||||
(when-let (data (and (bound-and-true-p +javascript-npm-mode)
|
||||
(+javascript-npm-conf)))
|
||||
(+javascript-npm-conf project-root refresh-p)))
|
||||
(let ((deps (append (cdr (assq 'dependencies data))
|
||||
(cdr (assq 'devDependencies data)))))
|
||||
(cond ((listp packages)
|
||||
(funcall (if (eq (car packages) 'and)
|
||||
'cl-every
|
||||
'cl-some)
|
||||
#'cl-every
|
||||
#'cl-some)
|
||||
(lambda (pkg) (assq pkg deps))
|
||||
(if (listp packages) packages (list packages))))
|
||||
((symbolp packages)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;; lang/javascript/config.el
|
||||
;;; lang/javascript/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(load! +screeps)
|
||||
|
||||
|
@ -17,12 +17,13 @@
|
|||
(add-hook! 'js2-mode-hook (setq js-switch-indent-offset js-indent-level))
|
||||
|
||||
;; Favor local eslint over global, if available
|
||||
(add-hook! 'flycheck-mode-hook
|
||||
(defun +javascript|init-flycheck-elint ()
|
||||
(when (derived-mode-p 'js-mode 'js2-mode)
|
||||
(when-let ((eslint (expand-file-name "node_modules/eslint/bin/eslint.js" (doom-project-root)))
|
||||
(exists-p (file-exists-p eslint))
|
||||
(executable-p (file-executable-p eslint)))
|
||||
(setq-local flycheck-javascript-eslint-executable eslint))))
|
||||
(add-hook 'flycheck-mode-hook #'+javascript|init-flycheck-elint)
|
||||
|
||||
(set! :repl 'js2-mode '+javascript/repl)
|
||||
(set! :electric 'js2-mode :chars '(?\} ?\) ?.))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/julia/autoload.el
|
||||
;;; lang/julia/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +julia/repl ()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/julia/config.el
|
||||
;;; lang/julia/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(use-package julia-mode
|
||||
:mode "\\.jl$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/latex/config.el
|
||||
;;; lang/latex/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +latex-bibtex-dir "~/work/writing/biblio/"
|
||||
"Where bibtex files are kept.")
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
;;; lang/lua/autoload.el
|
||||
;;; lang/lua/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +lua/repl ()
|
||||
"Open Lua REPL."
|
||||
(interactive)
|
||||
(lua-start-process "lua" "lua")
|
||||
(pop-to-buffer lua-process-buffer))
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/lua/config.el --- lua + Love2D
|
||||
;;; lang/lua/config.el --- lua + Love2D -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! lua-mode
|
||||
:mode "\\.lua$"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;;; lang/markdown/autoload.el
|
||||
;;; lang/markdown/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Implement strike-through formatting
|
||||
(defvar +text--markdown-regex-del
|
||||
(defvar +markdown--regex-del
|
||||
"\\(^\\|[^\\]\\)\\(\\(~\\{2\\}\\)\\([^ \n \\]\\|[^ \n ]\\(?:.\\|\n[^\n]\\)*?[^\\ ]\\)\\(\\3\\)\\)")
|
||||
|
||||
;;;###autoload
|
||||
|
@ -11,12 +11,13 @@
|
|||
(let ((delim "~~"))
|
||||
(if (markdown-use-region-p)
|
||||
;; Active region
|
||||
(let ((bounds (markdown-unwrap-things-in-region
|
||||
(region-beginning) (region-end)
|
||||
+text--markdown-regex-del 2 4)))
|
||||
(markdown-wrap-or-insert delim delim nil (car bounds) (cdr bounds)))
|
||||
(destructuring-bind (beg end)
|
||||
(markdown-unwrap-things-in-region
|
||||
(region-beginning) (region-end)
|
||||
+markdown--regex-del 2 4)
|
||||
(markdown-wrap-or-insert delim delim nil beg end))
|
||||
;; Bold markup removal, bold word at point, or empty markup insertion
|
||||
(if (thing-at-point-looking-at +text--markdown-regex-del)
|
||||
(if (thing-at-point-looking-at +markdown--regex-del)
|
||||
(markdown-unwrap-thing-at-point nil 2 4)
|
||||
(markdown-wrap-or-insert delim delim 'word nil nil)))))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/markdown/config.el
|
||||
;;; lang/markdown/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! markdown-mode
|
||||
:mode ("\\.m\\(d\\|arkdown\\)$" "/README$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/php/autoload.el
|
||||
;;; lang/php/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +php-composer-conf (make-hash-table :test 'equal))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/php/config.el
|
||||
;;; lang/php/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; (def-package! hack-mode
|
||||
;; :mode "\\.hh$"
|
||||
|
@ -52,7 +52,8 @@
|
|||
;; company will set up itself
|
||||
(advice-add #'php-extras-company-setup :override #'ignore)
|
||||
:config
|
||||
(setq php-extras-eldoc-functions-file (concat doom-etc-dir "php-extras-eldoc-functions"))
|
||||
(setq php-extras-eldoc-functions-file
|
||||
(concat doom-etc-dir "php-extras-eldoc-functions"))
|
||||
|
||||
;; Make expensive php-extras generation async
|
||||
(unless (file-exists-p (concat php-extras-eldoc-functions-file ".el"))
|
||||
|
|
|
@ -1,25 +1,20 @@
|
|||
;;; lang/purescript/config.el
|
||||
;;; lang/purescript/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! purescript-mode
|
||||
:mode "\\.purs$"
|
||||
:config
|
||||
(add-hook! 'purescript-mode-hook #'flycheck-mode)
|
||||
(add-hook! 'purescript-mode-hook #'company-mode)
|
||||
(add-hook! 'purescript-mode-hook #'purescript-indentation-mode)
|
||||
(add-hook! 'purescript-mode-hook #'rainbow-delimiters-mode)
|
||||
(load "purescript-mode-autoloads" nil t)
|
||||
)
|
||||
(add-hook! 'purescript-mode-hook
|
||||
#'(flycheck-mode purescript-indentation-mode rainbow-delimiters-mode))
|
||||
|
||||
(load "purescript-mode-autoloads" nil t))
|
||||
|
||||
;; (def-package! flycheck-purescript
|
||||
;; :after purescript-mode
|
||||
;; :config
|
||||
;; (add-hook! 'flycheck-mode-hook #'flycheck-purescript-setup)
|
||||
;; )
|
||||
;; (add-hook 'flycheck-mode-hook #'flycheck-purescript-setup))
|
||||
|
||||
(def-package! psc-ide
|
||||
:after purescript-mode
|
||||
:config
|
||||
(require 'psc-ide)
|
||||
(add-hook! 'purescript-mode-hook #'psc-ide-mode)
|
||||
)
|
||||
(add-hook 'purescript-mode-hook #'psc-ide-mode))
|
||||
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
;;; lang/purescript/packages.el
|
||||
|
||||
;; As far as I can tell, at the moment, flycheck-purescript does not work well
|
||||
;; due to expecting the compiler to be psc rather than purs.
|
||||
;; However, one of purescript-mode or psc-ide seems to handle flycheck, so it
|
||||
;; might be unnecessary altogether.
|
||||
;; (package! flycheck-purescript)
|
||||
;; due to expecting the compiler to be psc rather than purs. However, one of
|
||||
;; purescript-mode or psc-ide seems to handle flycheck, so it might be
|
||||
;; unnecessary altogether.
|
||||
;;(package! flycheck-purescript)
|
||||
|
||||
(package! psc-ide)
|
||||
(package! purescript-mode)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/python/autoload.el
|
||||
;;; lang/python/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +python/repl ()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/python/config.el
|
||||
;;; lang/python/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! python
|
||||
:commands python-mode
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/rest/config.el
|
||||
;;; lang/rest/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! restclient
|
||||
:commands restclient-mode
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/ruby/config.el
|
||||
;;; lang/ruby/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! ruby-mode
|
||||
:mode ("\\.rb$" "\\.rake$" "\\.gemspec$" "\\.?pryrc$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/rust/autoload.el
|
||||
;;; lang/rust/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; TODO (defun +rust/run-cargo () (interactive))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; module-rust.el
|
||||
;;; lang/rust/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +rust-ext-dir (concat doom-etc-dir "rust/")
|
||||
"TODO")
|
||||
|
@ -16,11 +16,14 @@
|
|||
:after rust-mode
|
||||
:preface
|
||||
:init
|
||||
(add-hook! rust-mode '(racer-mode eldoc-mode flycheck-rust-setup))
|
||||
(add-hook! 'rust-mode-hook #'(racer-mode eldoc-mode flycheck-rust-setup))
|
||||
:config
|
||||
(setq racer-cmd (expand-file-name "racer/target/release/racer" +rust-ext-dir)
|
||||
racer-rust-src-path (expand-file-name "rust/src/" +rust-ext-dir))
|
||||
|
||||
(unless (file-exists-p racer-cmd)
|
||||
(warn "rust-mode: racer binary can't be found; auto-completion is disabled"))
|
||||
|
||||
;; TODO Unit test keybinds
|
||||
(map! :map rust-mode-map :m "gd" #'racer-find-definition))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/scala/config.el
|
||||
;;; lang/scala/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! scala-mode
|
||||
:mode "\\.s\\(cala\\|bt\\)$"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/sh/config.el
|
||||
;;; lang/sh/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar sh-extra-font-lock--keywords
|
||||
`((+sh--match-var-in-double-quoted-string
|
||||
|
@ -13,8 +12,7 @@
|
|||
;;;###autoload
|
||||
(defun +sh--in-double-quoted-string-p ()
|
||||
"Non-nil if point in inside a double-quoted string."
|
||||
(let ((state (syntax-ppss)))
|
||||
(eq (nth 3 state) ?\")))
|
||||
(eq (nth 3 (syntax-ppss)) ?\"))
|
||||
|
||||
;;;###autoload
|
||||
(defun +sh--match-var-in-double-quoted-string (limit)
|
||||
|
@ -39,6 +37,7 @@
|
|||
(with-no-warnings
|
||||
(font-lock-fontify-buffer)))))
|
||||
|
||||
(defvar sh-shell-file)
|
||||
;;;###autoload
|
||||
(defun +sh/repl ()
|
||||
"Open a shell REPL."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/sh/config.el
|
||||
;;; lang/sh/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! sh-script ; built-in
|
||||
:mode ("\\.zsh$" . sh-mode)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/swift/config.el
|
||||
;;; lang/swift/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; TODO Set up emacs task runners for fruitstrap
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
|||
(add-hook 'swift-mode-hook #'flycheck-mode)
|
||||
:config
|
||||
(set! :repl 'swift-mode #'swift-mode-run-repl) ; TODO test this
|
||||
(push 'swift flycheck-checkers))
|
||||
(cl-pushnew 'swift flycheck-checkers))
|
||||
|
||||
|
||||
(def-package! company-sourcekit
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/typescript/config.el
|
||||
;;; lang/typescript/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! typescript-mode
|
||||
:mode "\\.ts$"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/web/+css.el
|
||||
;;; lang/web/+css.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; css-mode hooks apply to scss and less-css modes
|
||||
(add-hook 'css-mode-hook #'rainbow-delimiters-mode)
|
||||
|
@ -53,5 +53,5 @@
|
|||
|
||||
(def-package! stylus-mode
|
||||
:mode "\\.styl$"
|
||||
:init (add-hook! stylus-mode '(yas-minor-mode-on flycheck-mode)))
|
||||
:init (add-hook! stylus-mode #'(yas-minor-mode-on flycheck-mode)))
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
;;; lang/web/config.el
|
||||
;;; lang/web/+html.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! web-mode
|
||||
:mode ("\\.p?html?$"
|
||||
"\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
||||
"\\.erb$"
|
||||
"\\.jsp$"
|
||||
"\\.as[cp]x$"
|
||||
"\\.mustache$"
|
||||
"\\.tsx$"
|
||||
"wp-content/themes/.+/.+\\.php$")
|
||||
:mode "\\.p?html?$"
|
||||
:mode "\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
||||
:mode "\\.erb$"
|
||||
:mode "\\.jsp$"
|
||||
:mode "\\.as[cp]x$"
|
||||
:mode "\\.mustache$"
|
||||
:mode "\\.tsx$"
|
||||
:mode "wp-content/themes/.+/.+\\.php$"
|
||||
:init
|
||||
(add-hook 'web-mode-hook #'turn-off-smartparens-mode)
|
||||
:config
|
||||
|
@ -38,7 +38,8 @@
|
|||
|
||||
|
||||
(def-package! pug-mode
|
||||
:mode ("\\.jade$" "\\.pug$")
|
||||
:mode "\\.jade$"
|
||||
:mode "\\.pug$"
|
||||
:config
|
||||
(set! :company-backend 'pug-mode '(company-yasnippet))
|
||||
(map! :map pug-mode-map
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/web/+css.el
|
||||
;;; lang/web/autoload/css.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
;; TODO (defun +css/scss-build ())
|
||||
|
@ -12,10 +12,9 @@
|
|||
(interactive)
|
||||
;; TODO Remove evil dependency
|
||||
(save-excursion
|
||||
(let* ((bounds (or (ignore-errors (evil-a-curly))
|
||||
(user-error "No block found")))
|
||||
(beg (car bounds))
|
||||
(end (cadr bounds)))
|
||||
(destructuring-bind (beg end)
|
||||
(or (ignore-errors (evil-a-curly))
|
||||
(user-error "No block found"))
|
||||
(if (= (line-number-at-pos beg) (line-number-at-pos end))
|
||||
(save-excursion
|
||||
(goto-char (1+ beg)) (insert "\n")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/html/autoload/evil.el
|
||||
;;; lang/html/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload (autoload '+web:encode-html-entities "lang/web/autoload/evil" nil t)
|
||||
(evil-define-operator +web:encode-html-entities (beg end &optional input)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/web/autoload/html.el
|
||||
;;; lang/web/autoload/html.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defvar +web-entities-list
|
||||
|
@ -16,14 +16,12 @@ character.")
|
|||
"HTML encode/decode TEXT. Based on Xah's replace HTML named entities function
|
||||
@ http://ergoemacs.org/emacs/elisp_replace_html_entities_command.html"
|
||||
(interactive "<!><r>")
|
||||
(mapc (lambda (rep)
|
||||
(let ((from (elt rep (if decode-p 0 1)))
|
||||
(to (elt rep (if decode-p 1 0)))
|
||||
(case-fold-search t))
|
||||
(when (string-match-p (regexp-quote from) text)
|
||||
(setq text (s-replace from to text)))))
|
||||
+web-entities-list)
|
||||
text)
|
||||
(dolist (rep +web-entities-list text)
|
||||
(let ((from (elt rep (if decode-p 0 1)))
|
||||
(to (elt rep (if decode-p 1 0)))
|
||||
(case-fold-search t))
|
||||
(when (string-match-p (regexp-quote from) text)
|
||||
(setq text (s-replace from to text))))))
|
||||
|
||||
(defun +web--entities-region (beg end &optional decode-p)
|
||||
"HTML encode/decode the selected region. Based on Xah's replace HTML named entities
|
||||
|
@ -31,11 +29,10 @@ function @ http://ergoemacs.org/emacs/elisp_replace_html_entities_command.html"
|
|||
(save-restriction
|
||||
(narrow-to-region beg end)
|
||||
(let (case-fold-search)
|
||||
(mapc (lambda (rep)
|
||||
(goto-char (point-min))
|
||||
(while (search-forward (elt rep (if decode-p 0 1)) nil t)
|
||||
(replace-match (elt rep (if decode-p 1 0)) 'FIXEDCASE 'LITERAL)))
|
||||
reps))))
|
||||
(dolist (rep reps)
|
||||
(goto-char (point-min))
|
||||
(while (search-forward (elt rep (if decode-p 0 1)) nil t)
|
||||
(replace-match (elt rep (if decode-p 1 0)) 'FIXEDCASE 'LITERAL))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun +web-encode-entities (text)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
;;; lang/web/autoload/web.el
|
||||
;;; lang/web/autoload/web.el -*- lexical-binding: t; -*-
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; lang/web/config.el
|
||||
;;; lang/web/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(load! +html)
|
||||
(load! +css)
|
||||
|
@ -39,9 +39,10 @@
|
|||
:modes (web-mode js-mode coffee-mode css-mode haml-mode pug-mode)
|
||||
:files (and "config.yml" (or "_layouts/" "_posts/"))
|
||||
:init
|
||||
(add-hook! '+web-jekyll-mode-hook
|
||||
(defun +web|init-jekyll-mode ()
|
||||
(when (eq major-mode 'web-mode)
|
||||
(web-mode-set-engine "django"))))
|
||||
(web-mode-set-engine "django")))
|
||||
(add-hook '+web-jekyll-mode-hook #'+web|init-jekyll-mode))
|
||||
|
||||
(def-project-mode! +web-wordpress-mode
|
||||
:modes (php-mode web-mode css-mode haml-mode pug-mode)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue