]> code.delx.au - dotemacs/blobdiff - lisp/my-file-modes.el
Improved tide-project-root to understand git and package.json
[dotemacs] / lisp / my-file-modes.el
index 326e6eeea76c47f534333c479e51137afb9a1ff2..a010ac7e68a865d4683ff0019017d725bcd22f2c 100644 (file)
@@ -1,9 +1,19 @@
+;;; -*- lexical-binding: t -*-
+
 (setq-default indent-tabs-mode nil)
-(setq-default c-basic-offset 4)
-(setq-default python-indent-offset 4)
+(setq-default require-final-newline t)
+
+(require 'cc-mode)
+(setq c-auto-align-backslashes nil)
+(setq c-default-style '((java-mode . "java")
+                        (awk-mode . "awk")
+                        (other . "stroustrup")))
+
+(require 'closure-template-html-mode)
+(setq sgml-basic-offset 4)
 
 (require 'coffee-mode)
-(setq-default coffee-tab-width 4)
+(setq coffee-tab-width 4)
 
 (require 'dockerfile-mode)
 
 
 (require 'json-mode)
 (require 'js)
-(add-hook 'json-mode-hook
-          (lambda ()
-            (make-local-variable 'js-indent-level)
-            (setq 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)
 (setq js2-highlight-external-variables nil)
+(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
+
+(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)
+
+(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")
+(add-to-list 'auto-mode-alist '("\\.mdown\\'" . markdown-mode) t)
 
 (require 'pkgbuild-mode)
 
 (require 'python)
 (add-hook 'python-mode-hook
-          (lambda () (setq forward-sexp-function nil)))
+          (lambda ()
+            (setq forward-sexp-function nil)
+            (set (make-local-variable 'python-indent-offset) 4)))
+
 
 (require 'scala-mode)
 
 (require 'slime)
-(setq inferior-lisp-program "clisp")
+(setq inferior-lisp-program "sbcl")
+
+(require 'sh-script)
+(setq sh-use-smie nil)
+
+(require 'ssh-file-modes)
+
+(when (require 'stumpwm-mode nil 'noerror)
+  (add-to-list 'auto-mode-alist '("/\\.stumpwmrc\\'" . stumpwm-mode)))
+
+(require 'wgrep)
+(setq wgrep-auto-save-buffer t)
 
 (require 'yaml-mode)