Assuming we are working on Vim 7.3 and up, `colorcolumn` by default works off of `textwidth`. No need to use `matchadd` or other syntax highlighting stuff, nor use an autocmd.

``` vim
set colorcolumn=+1,+2,+3,+4,+5 " Five colums of gutter after textwidth
```

This will update if you change `textwidth` on the fly. It will do nothing if textwidth is not set. You can have a different `textwidth` in each buffer using `setlocal textwidth=78`, which could be tied to a filetype autocommand.