散々既出だと思うのですが、カーソル移動系のコマンドを作ろうとすると、

(let ((bol (save-excursion (beginning-of-line) (point)))

などをものすごい頻度で使います。
もうそろそろ、C関数で行頭/行末のposを返す関数を載せてホスィ