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.