How to adapt my work style to the employer's standard in Emacs
I write some set up code in ~/.custom.el. It will detect which machine and what directory I'm working on. Then I hook the set up code when major mode (js2-mode, web-mode, for example) loaded.
In my ~/.emacs,
(if (file-readable-p (expand-file-name "~/.custom.el")) (load-file (expand-file-name "~/.custom.el")))
Content of my ~/.custom.el:
;; (getenv "HOSTNAME") won't work because $HOSTNAME is not an env variable ;; (system-name) won't work because as Optus required, my /etc/hosts is changed (defun my/at-office () (interactive) (let ((my-hostname (with-temp-buffer (shell-command "hostname" t) (goto-char (point-max)) (delete-char -1) (buffer-string)) )) (and (string= my-hostname "my-sydney-workpc") (not (or (string= my-hostname "sydneypc") (string= my-hostname "ChenBinMacAir") (string= my-hostname "eee") ))) )) (defun my/use-office-style () (interactive) (let ((dir (if (buffer-file-name) (file-name-directory (buffer-file-name)) ""))) (string-match-p "CompanyProject" dir) )) (defun my/setup-develop-environment () (cond ((my/use-office-style) (message "Office code style!") (setq coffee-tab-width 4) (setq javascript-indent-level 4) (setq js-indent-level 4) (setq js2-basic-offset 4) (setq web-mode-indent-style 4)) (t (message "My code style!") (setq coffee-tab-width 4) (setq javascript-indent-level 2) (setq js-indent-level 2) (setq js2-basic-offset 2) (setq web-mode-indent-style 2)) )) (add-hook 'js2-mode-hook 'my/setup-develop-environment) (add-hook 'web-mode-hook 'my/setup-develop-environment)