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)