I've been doing a lot of work that's required me to keep an eye on word counts recently, so I've needed a decent word count function in Emacs. The easiest way to implement this was to use the wc command from CNU coreutils.
(defun word-count nil "Count words in buffer" (interactive)
(let ((start (if mark-active (point) (point-min)))
(end (if mark-active (mark) (point-max))))
(shell-command-on-region start end "wc -w")))
If the the mark is active, it counts the number of words marked, otherwise counts the entire buffer. I have this bound to C-c C-w.
I also extended tab completion with dabbrev-expand to all file buffers, so I can use it in MATLAB, Bash, Python, etc. This was inspired by doing lots of MATLAB programming recently at my newly started summer job at Cambridge Silicon Radio.
(defun indent-or-complete ()
"Complete if point is at end of a word, otherwise indent line."
(interactive)
(if (looking-at "\\>")
(dabbrev-expand nil)
(indent-for-tab-command)))
(add-hook 'find-file-hook
(function (lambda ()
(local-set-key (kbd "<tab>") 'indent-or-complete))))