Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; For proper supporting quoted macro names with `gtags' and `univirsal ctags'
- ;; add to `~/.ctags.d/erlang.ctags':
- ;; --regex-erlang=/^[ \t]*-define[ \t]*\('([-_[:alnum:]]+)'/\1/d/
- (use-package mode-local)
- (use-package flycheck)
- (use-package ivy-erlang-complete)
- (use-package ggtags)
- (defvar erlang-local-options nil
- "Options to pass to erlang-local checker.
- Usually you would like to define it in `.dir-locals.el', for example:
- ((erlang-mode . ((erlang-local-options . (\"+{parse_transform, lager_transform}\"
- \"+{parse_transform, cut}\"
- \"+{parse_transform, do}\")
- ))))")
- (defun my-flycheck-erlang-enablep ()
- (string-suffix-p ".erl" (buffer-file-name)))
- (flycheck-define-checker erlang-local
- "An Erlang syntax checker using the Erlang interpreter."
- :command ("erlc" (eval
- (if (projectile-project-p)
- (let* ((default-directory (projectile-project-root))
- (lib-dir (shell-command-to-string "rebar3 path --lib"))
- (ebin-dirs (split-string (shell-command-to-string "rebar3 path --ebin") " "))
- (inc-dirs (cons lib-dir (mapcar
- (lambda (dir)
- (concat (string-remove-suffix "ebin" dir)
- "include"))
- ebin-dirs))))
- (apply #'append (append (mapcar
- (lambda (dir) (list "-I" dir))
- inc-dirs)
- (mapcar
- (lambda (dir) (list "-pa" dir))
- ebin-dirs))))
- nil))
- (eval erlang-local-options)
- "-o" temporary-directory "-Wall" source)
- :error-patterns
- ((warning line-start (file-name) ":" line ": Warning:" (message) line-end)
- (error line-start (file-name) ":" line ": " (message) line-end))
- :modes erlang-mode
- :enabled my-flycheck-erlang-enablep)
- (defun my-inferior-erlang-rebar3 ()
- "Erlang shell using rebar3."
- (interactive)
- (let ((default-directory (projectile-project-root)))
- (inferior-erlang "rebar3 auto"))
- )
- (use-package erlang
- :ensure t
- :init
- (require 'erlang-start)
- (setq erlang-root-dir (expand-file-name "~/.local/lib/erlang/21.0")
- erlang-man-root-dir (expand-file-name "~/.local/lib/erlang/21.0/man"))
- (add-to-list 'exec-path (expand-file-name "~/.local/lib/erlang/21.0/bin"))
- :config
- (setq erlang-shell-function 'my-inferior-erlang-rebar3)
- (setq-mode-local erlang-mode
- flycheck-check-syntax-automatically '(mode-enabled idle-change)
- flycheck-idle-change-delay 5.0)
- (add-hook 'erlang-mode-hook #'(lambda ()
- (flycheck-select-checker 'erlang-local)
- (flycheck-mode)))
- (add-hook 'erlang-mode-hook #'(lambda () (ggtags-mode 1)))
- (add-hook 'erlang-mode-hook #'company-erlang-init)
- (add-hook 'erlang-shell-mode-hook
- #'(lambda ()
- (setq comint-output-filter-functions 'comint-truncate-buffer
- comint-buffer-maximum-size 5000
- comint-scroll-show-maximum-output t
- comint-input-ring-size 500)))
- (add-hook 'after-save-hook #'ivy-erlang-complete-reparse)
- :mode
- ("rebar\\.config$" . erlang-mode)
- ("relx\\.config$" . erlang-mode)
- ("system\\.config$" . erlang-mode)
- ("\\.app\\.src$" . erlang-mode))
Add Comment
Please, Sign In to add comment