]> code.delx.au - gnu-emacs-elpa/commitdiff
Added special keymap that is activated on demand.
authorNikolaj Schumacher <git@nschum.de>
Sun, 15 Mar 2009 21:28:48 +0000 (22:28 +0100)
committerNikolaj Schumacher <git@nschum.de>
Fri, 20 Mar 2009 09:20:42 +0000 (10:20 +0100)
company-elisp.el
company.el

index df7e5686b3ee288ff175f680e4569cbf051a1866..231446b7fe53e8e29ff13e229509e9222a748a42 100644 (file)
@@ -60,8 +60,9 @@
          (doc (if (fboundp symbol)
                   (documentation symbol t)
                 (documentation-property symbol 'variable-documentation t))))
-    (when (string-match ".*$" doc)
-      (match-string 0 doc))))
+    (and (stringp doc)
+         (string-match ".*$" doc)
+         (match-string 0 doc))))
 
 (defun company-elisp (command &optional arg &rest ignored)
   (case command
index e479fa49008f6e53201e442fee1556e569f1980c..e3867b84fb3175239e9147c94703c4083cd4a68b 100644 (file)
 
 ;;; mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defvar company-mode-map
+(defvar company-current-map (make-sparse-keymap))
+
+(defvar company-mode-map (make-sparse-keymap))
+
+(defvar company-active-map
   (let ((keymap (make-sparse-keymap)))
+    (set-keymap-parent keymap company-mode-map)
     (define-key keymap (kbd "M-n") 'company-select-next)
     (define-key keymap (kbd "M-p") 'company-select-previous)
-    (define-key keymap (kbd "M-<return>") 'company-complete-selection)
-    (define-key keymap "\t" 'company-complete)
+    (define-key keymap "\C-m" 'company-complete-selection)
+    (define-key keymap "\t" 'company-complete-common)
     (define-key keymap (kbd "<f1>") 'company-show-doc-buffer)
     keymap))
 
 ;;;###autoload
 (define-minor-mode company-mode
   ""
-  nil " comp" company-mode-map
+  nil " comp" nil
   (if company-mode
       (progn
+        (add-to-list 'minor-mode-overriding-map-alist
+                     (cons 'company-mode company-current-map))
         (add-hook 'pre-command-hook 'company-pre-command nil t)
         (add-hook 'post-command-hook 'company-post-command nil t)
         (company-timer-set 'company-idle-delay
   (if company-candidates
       (progn
         (setq company-point (point))
+        (set-keymap-parent company-current-map company-active-map)
         (company-call-frontends 'update))
     (company-cancel)))
 
         company-selection 0
         company-selection-changed nil
         company-point nil)
-  (company-call-frontends 'hide))
+  (company-call-frontends 'hide)
+  (set-keymap-parent company-current-map company-mode-map))
 
 (defun company-abort ()
   (company-cancel)