(define-key minibuffer-local-map
[f3] (lambda () (interactive)
(insert (buffer-name (current-buffer-not-mini)))))
(defun current-buffer-not-mini ()
"Return current-buffer if current buffer is not the *mini-buffer*
else return buffer before minibuf is activated."
(if (not (window-minibuffer-p)) (current-buffer)
(if (eq (get-lru-window) (next-window))
(window-buffer (previous-window)) (window-buffer (next-window)))))
(define-key minibuffer-local-map
[f3] (lambda () (interactive) (insert (buffer-name))))
(define-key minibuffer-local-map [f3]
(lambda () (interactive)
(insert (buffer-name (window-buffer (minibuffer-selected-window))))))
(require 'shell)
(define-key minibuffer-local-map (kbd "C-i") 'comint-dynamic-complete)
(define-key minibuffer-local-map [f3]
(lambda() (interactive) (insert (buffer-file-name (nth 1 (buffer-list))))))