I use double brackets heavily for links. Is there anyway to config smart autocompletion such that pressing brackets twice I get [ instead of [], and once the prompt is at left of ] in [, pressing ] again close the link, that is, produces the final []?
My first thought is use org: C-c C-l, and type your link, with optional description.
Second thought, write a function like:
(defun my-link (s) (interactive "sLink: ") (insert (format "[[%s]" s)))
and bind it to some key if you like.
Third thought: look into yasnippet or skeleton.