Emacs auto-completion for non-programmers
CREATED:
UPDATED:
That's easy if you use company-mode.
Say if you want to complete words ONLY in org-mode,
(require 'company)
(add-hook 'after-init-hook 'global-company-mode)
;; Don't enable company-mode in below major modes, OPTIONAL
(setq company-global-modes '(not eshell-mode comint-mode erc-mode rcirc-mode))
;; "text-mode" is a major mode for editing files of text in a human language"
;; most major modes for non-programmers inherit from text-mode
(defun text-mode-hook-setup ()
;; make `company-backends' local is critcal
;; or else, you will have completion in every major mode, that's very annoying!
(make-local-variable 'company-backends)
;; company-ispell is the plugin to complete words
(add-to-list 'company-backends 'company-ispell)
;; OPTIONAL, if `company-ispell-dictionary' is nil, `ispell-complete-word-dict' is used
;; but I prefer hard code the dictionary path. That's more portable.
(setq company-ispell-dictionary (file-truename "~/.emacs.d/misc/english-words.txt")))
(add-hook 'text-mode-hook 'text-mode-hook-setup)
(defun toggle-company-ispell ()
(interactive)
(cond
((memq 'company-ispell company-backends)
(setq company-backends (delete 'company-ispell company-backends))
(message "company-ispell disabled"))
(t
(add-to-list 'company-backends 'company-ispell)
(message "company-ispell enabled!"))))
`M-x toggle-company-ispell` to toggle company-ispell in any major mode.
"english-words.txt" is just a plain text file where lines sorted alphabetically. Every line is a word.
You can download my english-words.txt.