X-Git-Url: https://code.delx.au/dotemacs/blobdiff_plain/16bc85ee3bb72684be2e0427a493edeac3e0a1af..bed83966f185a6b1284851e93b27e79bb2c96f47:/lisp/my-file-modes.el diff --git a/lisp/my-file-modes.el b/lisp/my-file-modes.el index b430f55..a010ac7 100644 --- a/lisp/my-file-modes.el +++ b/lisp/my-file-modes.el @@ -26,11 +26,9 @@ (require 'json-mode) (require 'js) -(add-hook 'json-mode-hook - (lambda () - (set (make-local-variable 'js-indent-level) 2))) - (require 'js2-mode) +(require 'typescript-mode) +(require 'tide) (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) (add-to-list 'interpreter-mode-alist '("node" . js2-mode)) (setq js2-concat-multiline-strings 'eol) @@ -38,28 +36,39 @@ (setq js2-mode-show-parse-errors nil) (setq js2-mode-show-strict-warnings nil) (setq js--declaration-keyword-re "x^") ; declarations should have normal indentation -(require 'js2-refactor) + +(add-hook 'js2-mode-hook #'tide-setup) (add-hook 'js2-mode-hook #'js2-refactor-mode) +(add-hook 'typescript-mode-hook #'tide-setup) +(add-hook 'typescript-mode-hook #'js2-refactor-mode) + +(defun tide-project-root () + (or + tide-project-root + (let ((root (or (locate-dominating-file default-directory "tsconfig.json") + (locate-dominating-file default-directory "jsconfig.json") + (locate-dominating-file default-directory ".git") + (locate-dominating-file default-directory "package.json")))) + (unless root + (message (tide-join (list "Couldn't locate JavaScript project root folder. Using '" default-directory "' as project root."))) + (setq root default-directory)) + (let ((full-path (expand-file-name root))) + (setq tide-project-root full-path) + full-path)))) + +(require 'js2-refactor) (js2r-add-keybindings-with-prefix "C-c C-m") (setq js2r-always-insert-parens-around-arrow-function-params t) (setq js2r-prefered-quote-type 2) -(when (require 'tern nil 'noerror) - (add-hook 'js2-mode-hook (lambda () (tern-mode t)))) -(defun tern-project-dir () - (or (and (equal tern-last-file-name (buffer-file-name)) tern-project-dir) - (and (not (buffer-file-name)) (setf tern-project-dir "")) - (setf tern-project-dir (locate-dominating-file default-directory ".git"))) - ;; Track the file name to detect if it changed, which means the project - ;; directory needs to be found again. - (setf tern-last-file-name (buffer-file-name)) - tern-project-dir) - - -(when (require 'ledger-mode nil 'noerror) - (add-to-list 'auto-mode-alist '("\\.ledger\\'" . ledger-mode)) - (setq ledger-post-amount-alignment-column 72) - (setq ledger-reconcile-default-commodity "AUD") - (setq ledger-clear-whole-transactions t)) + +(require 'rjsx-mode) + + +(require 'ledger-mode nil 'noerror) +(add-to-list 'auto-mode-alist '("\\.ledger\\'" . ledger-mode)) +(setq ledger-post-amount-alignment-column 72) +(setq ledger-reconcile-default-commodity "AUD") +(setq ledger-clear-whole-transactions t) (require 'markdown-mode) (setq markdown-command "markdown_py -x markdown.extensions.smart_strong -x markdown.extensions.fenced_code -x markdown.extensions.nl2br") @@ -79,6 +88,9 @@ (require 'slime) (setq inferior-lisp-program "sbcl") +(require 'sh-script) +(setq sh-use-smie nil) + (require 'ssh-file-modes) (when (require 'stumpwm-mode nil 'noerror)