Skip to content

Commit

Permalink
qwerty & company
Browse files Browse the repository at this point in the history
  • Loading branch information
tianshu committed Apr 18, 2020
1 parent 1b81625 commit 1215046
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 9 deletions.
7 changes: 7 additions & 0 deletions meow-command.el
Original file line number Diff line number Diff line change
Expand Up @@ -962,6 +962,13 @@ Argument ARG if not nil, switching in a new window."
(interactive)
(meow--execute-kbd-macro meow--kbd-eval-last-exp))

;; Aliases

(defalias 'meow-backward #'meow-head)
(defalias 'meow-backward-select #'meow-head-select)
(defalias 'meow-forward #'meow-tail)
(defalias 'meow-forward-select #'meow-tail-select)

(provide 'meow-command)

;;; meow-command.el ends here
43 changes: 43 additions & 0 deletions meow-company.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
;;; meow-company.el --- Make Meow play well with company
;;; -*- lexical-binding: t -*-

;; This file is not part of GNU Emacs.

;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License
;; as published by the Free Software Foundation; either version 3
;; of the License, or (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:
;; Setup for company.
;; Before we exit insert mode, abort company completion.

;;; Code:

(require 'meow-var)

(declare-function company--active-p "company")
(declare-function company-abort "company")
(declare-function meow-insert-exit "meow-command")

(defun meow--company-maybe-abort-advice ()
"Adviced for meow-insert-exit."
(when company-candidates
(company-abort)))

(defun meow--company-setup ()
"Setup for company."
(advice-add 'meow-insert-exit :before #'meow--company-maybe-abort-advice))

(provide 'meow-company)
;;; meow-company.el ends here
3 changes: 3 additions & 0 deletions meow-core.el
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
(require 'meow-eldoc)
(require 'meow-wgrep)
(require 'meow-yas)
(require 'meow-company)

;;;###autoload
(define-minor-mode meow-insert-mode
Expand Down Expand Up @@ -184,6 +185,8 @@ then SPC will be bound to LEADER."
(meow--wgrep-setup))
(when (featurep 'yasnippet)
(meow--yas-setup))
(when (featurep 'company)
(meow--company-setup))
(add-hook 'post-command-hook #'meow--post-command-function))

(defun meow--global-disable ()
Expand Down
31 changes: 22 additions & 9 deletions meow-keymap.el
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@

;;; Code:

(require 'meow-var)

(defvar-local meow--space-command nil
"Current command on SPC in special mode buffer.")

Expand All @@ -31,29 +33,29 @@

(defvar meow-keymap
(let ((keymap (make-sparse-keymap)))
keymap))
keymap)
"Global keymap for Meow.")

(defvar meow-leader-base-keymap
(let ((keymap (make-sparse-keymap)))
(define-key keymap (kbd "SPC") 'meow-space)
(define-key keymap (kbd "x") 'meow-keypad-start)
(define-key keymap (kbd "c") 'meow-keypad-start)
(define-key keymap (kbd "e") 'meow-eval-last-exp)
keymap))
keymap)
"A base keymap for leader key.")

(defvar meow--leader-mode-keymaps nil
"Leader keymaps used for major modes.")

(defvar meow-insert-state-keymap
(let ((keymap (make-keymap)))
(define-key keymap (kbd "<escape>") 'meow-insert-exit)
keymap))
keymap)
"Keymap for Meow insert state.")

(defvar meow-normal-state-keymap
(let ((keymap (make-keymap)))
;; M-x
(define-key keymap (kbd "$") 'meow-M-x)

;; Keyboard Quit
(define-key keymap (kbd "g") 'meow-keyboard-quit)

Expand Down Expand Up @@ -141,13 +143,23 @@
(define-key keymap (kbd "TAB") 'meow-back-to-indentation)
(define-key keymap (kbd "<escape>") 'meow-last-buffer)

keymap))
(when (eq meow-layout 'qwerty)
(define-key keymap (kbd "f") 'meow-forward)
(define-key keymap (kbd "F") 'meow-forward-select)
(define-key keymap (kbd "b") 'meow-backward)
(define-key keymap (kbd "B") 'meow-backward-select)
(define-key keymap (kbd "t") 'meow-forwarding)
(define-key keymap (kbd "h") 'meow-block))

keymap)
"Keymap for Meow normal state.")

;;;###autoload
(defvar meow-motion-state-keymap
(let ((keymap (make-sparse-keymap)))
(define-key keymap [escape] 'meow-last-buffer)
keymap))
keymap)
"Keymap for Meow motion state.")

;;;###autoload
(defvar meow-keypad-state-keymap
Expand All @@ -165,7 +177,8 @@
(define-key map (kbd "TAB") 'meow-keypad-self-insert)
(define-key map (kbd "<return>") 'meow-keypad-self-insert)
(define-key map (kbd "RET") 'meow-keypad-self-insert))
map))
map)
"Keymap for Meow keypad state.")

(provide 'meow-keymap)
;;; meow-keymap.el ends here
8 changes: 8 additions & 0 deletions meow-var.el
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@

;;; Code:

;; Customize

(defcustom meow-layout 'dvorak
"Keyboard layout."
:options '(dvorak dvp qwerty colemak)
:type 'symbol
:group 'meow)

;; Keypad states

(defvar meow--keypad-meta-prefix "m")
Expand Down

0 comments on commit 1215046

Please sign in to comment.