Auto completion for Emacs using the D Completion Daemon (DCD).
The auto-complete package must be installed. Also, yasnippet and popwin are recommended.
Installing ac-dcd from MELPA (see below) automatically installs auto-complete if not already installed.
Make sure that the dcd-client and dcd-server binaries are in your PATH. Otherwise, please
set the variables dcd-executable and dcd-server-executable using M-x customize.
Add this to your .emacs / init.el:
;;; ac-dcd
(require 'ac-dcd)
(add-hook 'd-mode-hook
(lambda ()
(auto-complete-mode t)
(when (featurep 'yasnippet) (yas-minor-mode-on))
(ac-dcd-maybe-start-server)
(ac-dcd-add-imports)
(add-to-list 'ac-sources 'ac-source-dcd)
(define-key d-mode-map (kbd "C-c ?") 'ac-dcd-show-ddoc-with-buffer)
(define-key d-mode-map (kbd "C-c .") 'ac-dcd-goto-definition)
(define-key d-mode-map (kbd "C-c ,") 'ac-dcd-goto-def-pop-marker)
(define-key d-mode-map (kbd "C-c s") 'ac-dcd-search-symbol)
(when (featurep 'popwin)
(add-to-list 'popwin:special-display-config
`(,ac-dcd-error-buffer-name :noselect t))
(add-to-list 'popwin:special-display-config
`(,ac-dcd-document-buffer-name :position right :width 80))
(add-to-list 'popwin:special-display-config
`(,ac-dcd-search-symbol-buffer-name :position bottom :width 5)))))
Alternatively,
(add-hook 'd-mode-hook 'ac-dcd-setup)
Which does the same as the code above.
- You can set import paths using
M-x customize-variable RET ac-dcd-flags. - Alternatively, if you're using DUB to manage your
project, you can use
M-x ac-dcd-add-importsto add import paths of the current project automatically. - When something is wrong, please, check variables with
M-x customize-apropos RET ac-dcdand restart server withM-x ac-dcd-init-server.
- Dlang source for auto-complete
- Function calltip expansion with yasnippet
- Show ddoc with
C-c ? - Goto definition with
C-c . - After goto definition, you can pop to previous position with
C-c , - Search for a symbol and show the results in a temporary buffer with
C-c s
Install from MELPA or MELPA Stable with:
M-x package-install RET ac-dcd.
ac-dcd-maybe-start-server only guaranteed to work with one Emacs instance. On systems
with pidof, A 2nd Emacs will not attempt to start its own dcd-server and simply talk
to the one already running.
- UTF-8 support is in place. However, UTF-16 and UTF-32 may not work correctly. (Need help!)