The simple way is
if get(g:, 'myplugin_enable_feature', defaultvalue)
do whatever you want
Now when I need to check a setting in more than one place, I usually prefer to have a dedicated getter in my plugin to be sure I have the same default value everywhere
function! s:enable_feature() abort
return get(g:, 'myplugin_enable_feature', ...
Usually it suffices to use get() function. Like that
if get(g:, 'myplugin_enable_feature')
" do something
If the feature should be enabled by default you can change it to get(g:, 'myplugin_enable_feature', 1).
Patch 8.0.1445 introduced :h CmdlineChanged , you can use it together with :h input() to get what you want. Here is a simple example i wrote to update last line of current buffer to cmdline while typing in cmdline.
call setline('$', getcmdline())
I looked at the source and I don't see any user-facing way to disable the bell limit. You'd have to build your own version as you mentioned. Think twice about that, though...
Rather than being a killjoy "feature" this apparently was implemented for the sake of Vim stability. I saw a couple comments indicating that rapid bell sequences can hang Vim. Here's ...