Current buffer based menus
From Vim Tips Wiki
created February 14, 2002 · complexity intermediate · author Tomas Zellerin · version 6.0
If you have different menus for different filetypes, and you want to have only the menu relevant to current buffer displayed, you can use this approach:
In your vimrc:
au BufEnter * if exists('b:BuffEnter')|exec b:BuffEnter|endif au BufLeave * if exists('b:BuffEnter')|exec b:BuffLeave|endif
In appropriate ftplugin/?.vim, there are assigned commands to create or destroy the menus - here typed in directly, may be of course call to a menu-generating function or whatever.
let b:BuffEnter='amenu C.added ...' let b:BuffLeave='unmenu! C|unmenu C'