Hi, There is a bug that turn off semantic-mode it only restores current buffer's imenu-create-index-function but actually turning on semantic-mode had changed each buffer's variable. Reproduce steps: 1) Open two files (eg /tmp/a.c, /tmp/b.c) in two buffers; 2) Turn on semantic-mode, it will change the imenu-create-index-function value for each buffer; 3) Turn off semantic-mode, it will restore current buffer's value (eg: b.c), but another one (eg: a.c) won't restored. When turning on semantic-mode, it applies changes to each buffer, 1048 (dolist (b (buffer-list)) 1049 (with-current-buffer b 1050 (semantic-new-buffer-fcn)))) But turning off semantic does not restore the var for each buffer, only restores current buffer. This patch will fix the issue. Please help review it. Thanks. Best Regards, Lin