Improve programming modes, Add general hook for whitespace-cleanup/save buffer