icomplete mostly as powerful as smex. That's why I removed external dependency.
--- a/.emacs-my Thu Oct 13 21:11:11 2016 +0300
+++ b/.emacs-my Thu Oct 13 21:17:44 2016 +0300
@@ -1075,15 +1075,7 @@
(global-set-key "\C-x\C-b" 'ibuffer)
(global-set-key [s-insert] 'ibuffer)
-;; `smex' is alternative for `icomplete'.
-;; https://github.com/nonsequitur/smex/
-;; It is based on `ido'.
-(ignore-errors
- (require 'smex)
- (smex-initialize)
- (global-set-key (kbd "M-X") 'smex))
-
-(unless (featurep 'icomplete)
+(unless (featurep 'smex)
(require 'icomplete)
(icomplete-mode 1))
(setq icomplete-with-completion-tables t)
--- a/.emacs-obsolete Thu Oct 13 21:11:11 2016 +0300
+++ b/.emacs-obsolete Thu Oct 13 21:17:44 2016 +0300
@@ -341,3 +341,16 @@
((eq window-system 'w32)
(set-frame-font "Courier New-10:antialias=none") ))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(message "smex")
+
+;; icomplete also allow flex matching with '*', try 'M-x *copy*as TAB'
+
+;; `smex' is alternative for `icomplete'.
+;; https://github.com/nonsequitur/smex/
+;; It is based on `ido'.
+(ignore-errors
+ (require 'smex)
+ (smex-initialize)
+ (global-set-key (kbd "M-X") 'smex))
+