emacs.d/elpa/kubernetes-20200114.436/kubernetes-modes.el
2020-02-03 19:45:34 +01:00

90 lines
3.7 KiB
EmacsLisp

;;; kubernetes-modes.el --- Base modes for Kubernetes. -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'magit)
(require 'subr-x)
(autoload 'kubernetes-config-popup "kubernetes-popups")
(autoload 'kubernetes-copy-thing-at-point "kubernetes-commands")
(autoload 'kubernetes-describe-popup "kubernetes-popups")
(autoload 'kubernetes-exec-popup "kubernetes-popups")
(autoload 'kubernetes-execute-marks "kubernetes-commands")
(autoload 'kubernetes-labels-popup "kubernetes-popups")
(autoload 'kubernetes-logs-popup "kubernetes-popups")
(autoload 'kubernetes-mark-for-delete "kubernetes-commands")
(autoload 'kubernetes-navigate "kubernetes-commands")
(autoload 'kubernetes-overview-popup "kubernetes-popups")
(autoload 'kubernetes-refresh "kubernetes-commands")
(autoload 'kubernetes-unmark "kubernetes-commands")
(autoload 'kubernetes-unmark-all "kubernetes-commands")
;;;###autoload
(define-derived-mode kubernetes-display-thing-mode kubernetes-mode "Kubernetes Object"
"Mode for inspecting a Kubernetes object.
\\{kubernetes-display-thing-mode-map}"
:group 'kubernetes)
;;;###autoload
(defvar kubernetes-mode-map
(let ((keymap (make-sparse-keymap)))
;; Section controls
(define-key keymap (kbd "p") #'magit-section-backward)
(define-key keymap (kbd "n") #'magit-section-forward)
(define-key keymap (kbd "M-p") #'magit-section-backward-sibling)
(define-key keymap (kbd "M-n") #'magit-section-forward-sibling)
(define-key keymap (kbd "C-i") #'magit-section-toggle)
(define-key keymap (kbd "^") #'magit-section-up)
(define-key keymap [tab] #'magit-section-toggle)
(define-key keymap [C-tab] #'magit-section-cycle)
(define-key keymap [M-tab] #'magit-section-cycle-diffs)
(define-key keymap [S-tab] #'magit-section-cycle-global)
;; Misc
(define-key keymap (kbd "q") #'quit-window)
(define-key keymap (kbd "RET") #'kubernetes-navigate)
(define-key keymap (kbd "M-w") #'kubernetes-copy-thing-at-point)
(define-key keymap (kbd "h") #'describe-mode)
(define-key keymap (kbd "?") #'kubernetes-overview-popup)
(define-key keymap (kbd "c") #'kubernetes-config-popup)
(define-key keymap (kbd "d") #'kubernetes-describe-popup)
(define-key keymap (kbd "D") #'kubernetes-mark-for-delete)
(define-key keymap (kbd "e") #'kubernetes-exec-popup)
(define-key keymap (kbd "g") #'kubernetes-refresh)
(define-key keymap (kbd "l") #'kubernetes-logs-popup)
(define-key keymap (kbd "L") #'kubernetes-labels-popup)
(define-key keymap (kbd "u") #'kubernetes-unmark)
(define-key keymap (kbd "U") #'kubernetes-unmark-all)
(define-key keymap (kbd "x") #'kubernetes-execute-marks)
keymap)
"Keymap for `kubernetes-mode'. This is the base keymap for all derived modes.")
;;;###autoload
(define-derived-mode kubernetes-mode special-mode "Kubernetes"
"Base mode for Kubernetes modes.
\\{kubernetes-mode-map}"
:group 'kubernetes
(read-only-mode)
(buffer-disable-undo)
(setq truncate-lines t)
(setq-local line-move-visual t)
(setq show-trailing-whitespace nil)
(setq list-buffers-directory (abbreviate-file-name default-directory))
(hack-dir-local-variables-non-file-buffer)
(make-local-variable 'text-property-default-nonsticky)
(push (cons 'keymap t) text-property-default-nonsticky)
(push (cons 'kubernetes-nav t) text-property-default-nonsticky)
(push (cons 'kubernetes-copy t) text-property-default-nonsticky)
(add-hook 'post-command-hook #'magit-section-update-highlight t t)
(when (bound-and-true-p global-linum-mode)
(linum-mode -1))
(when (and (fboundp 'nlinum-mode)
(bound-and-true-p global-nlinum-mode))
(nlinum-mode -1)))
(provide 'kubernetes-modes)
;;; kubernetes-modes.el ends here