   (general-define-key :keymaps 'js-mode-map
                       "M-." 'nil)
   (general-define-key :keymaps 'js2-mode-map
-                      "C-k" 'js2r-kill)
+                      "C-k" 'js2r-kill
+                      ";"   'maio/electric-semicolon)
+  (general-define-key :keymaps 'tern-mode-keymap
+                      "M-."     'nil
+                      "M-,"     'nil
+                      "C-c C-r" 'nil
+                      "C-c r"   '(tern-rename-variable :which-key "refactor"))
   (general-define-key :keymaps 'dumb-jump-mode-map
                       "M-."   'hydra-dumb-jump/body
                       "C-M-g" 'nil

                      "C-c i d"   'inferior-haskell-find-definition
                      "C-c i c"   'haskell-interactive-mode-clear
                      ;; Lookup
                      "C-c l t"   'haskell-process-do-type
                      "C-c l i"   'haskell-process-do-info
                      ;; Refactor - Hare
                      "C-c r d m" 'hare-refactor-demote
                      "C-c r d d" 'hare-refactor-dupdef
                      "C-c r i c" 'hare-refactor-iftocase
                      "C-c r l o" 'hare-refactor-lift-one
                      "C-c r l t" 'hare-refactor-lifttotop
                      "C-c r r"   'hare-refactor-rename
                      "C-c r t"   'hare-refactor-roundtrip
                      "C-c r s h" 'hare-refactor-show)
  (general-define-key :keymaps 'undo-tree-map
                      "M-_" 'nil)
  (general-define-key :keymaps 'java-mode-map
                      "<f9> m" 'meghanada-mode
                      "<f9> j" 'jdee-mode)
  (general-define-key :keymaps 'popup-isearch-keymap
                      "C-'" 'popup-isearch-cancel)
  (general-define-key :keymaps 'sql-mode-map

  (general-define-key :keymaps 'emmet-mode-keymap
                      "C-<return>" 'nil)
  (general-define-key :keymaps 'haskell-mode-map
                      "<f9> l"    'lsp-mode
                      "M-<right>" 'haskell-move-nested-right
                      "M-<left>"  'haskell-move-nested-left
                      "C-c ."     'counsel-dash-at-point
                      ;; Debug
                      "C-c d"     '(:ignore t :which-key "debug")
                      "C-c d a"   'haskell-debug/abandon
                      "C-c d b"   'haskell-debug/break-on-function
                      "C-c d B"   'haskell-debug/delete
