+ 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.
32 lines
974 B
EmacsLisp
32 lines
974 B
EmacsLisp
;;; lang/java/config.el -*- lexical-binding: t; -*-
|
|
|
|
;; yasnippet defuns
|
|
;;;###autoload
|
|
(defun +java-android-mode-is-layout-file ()
|
|
(and android-mode
|
|
(eq major-mode 'nxml-mode)
|
|
(string-equal (file-name-base (directory-file-name default-directory)) "layout")))
|
|
|
|
;;;###autoload
|
|
(defun +java-android-mode-in-tags (&rest tags)
|
|
(cl-find (android-mode-tag-name) tags))
|
|
|
|
;;;###autoload
|
|
(defun +java-android-mode-tag-name ()
|
|
(save-excursion
|
|
(let (beg end)
|
|
(nxml-backward-up-element)
|
|
(evil-forward-word-begin)
|
|
(setq beg (point))
|
|
(evil-forward-WORD-end)
|
|
(setq end (1+ (point)))
|
|
(buffer-substring-no-properties beg end))))
|
|
|
|
;;;###autoload
|
|
(defun +java|android-mode-maybe ()
|
|
(when (doom-project-has! (or "local.properties"
|
|
"AndroidManifest.xml"
|
|
"src/main/AndroidManifest.xml"))
|
|
(android-mode +1)
|
|
(doom/set-build-command "./gradlew %s" "build.gradle")))
|
|
|