Config: extract keybinding functions and clean up key configs
- Add init-kbd-func.el for keybinding helper functions - Move global-display-line-numbers-mode from early-init.el to init.el - Slim down init-kbd.el: remove hydra-multiple-cursors, migrate defs - Reorganize dirvish config - Remove scattered global-set-key bindings from init-org, init-ui, etc. - Guard server-start with server-running-p check - Set ibuffer-default-sorting-mode to filename - Tweak gptel config
This commit is contained in:
@@ -12,7 +12,6 @@
|
|||||||
(scroll-bar-mode -1)) ; 禁用滚动条
|
(scroll-bar-mode -1)) ; 禁用滚动条
|
||||||
(menu-bar-mode -1) ; 禁用菜单栏
|
(menu-bar-mode -1) ; 禁用菜单栏
|
||||||
(setq display-line-numbers-type '2)
|
(setq display-line-numbers-type '2)
|
||||||
(global-display-line-numbers-mode t) ; 启用行号
|
|
||||||
(setq display-line-numbers-grow-only t) ; 行号栏只增不减
|
(setq display-line-numbers-grow-only t) ; 行号栏只增不减
|
||||||
(setq display-line-numbers-width-start 4) ; 预设4位宽度
|
(setq display-line-numbers-width-start 4) ; 预设4位宽度
|
||||||
|
|
||||||
|
|||||||
3
init.el
3
init.el
@@ -13,6 +13,8 @@
|
|||||||
(when (file-exists-p custom-file)
|
(when (file-exists-p custom-file)
|
||||||
(load-file custom-file))
|
(load-file custom-file))
|
||||||
|
|
||||||
|
(global-display-line-numbers-mode t)
|
||||||
|
|
||||||
(require 'init-const)
|
(require 'init-const)
|
||||||
(require 'init-startup)
|
(require 'init-startup)
|
||||||
(require 'init-elpa)
|
(require 'init-elpa)
|
||||||
@@ -27,6 +29,7 @@
|
|||||||
(require 'init-gptel)
|
(require 'init-gptel)
|
||||||
(require 'init-workspace)
|
(require 'init-workspace)
|
||||||
(require 'init-ui)
|
(require 'init-ui)
|
||||||
|
(require 'init-kbd-func)
|
||||||
(require 'init-kbd)
|
(require 'init-kbd)
|
||||||
(require 'init-segmentation)
|
(require 'init-segmentation)
|
||||||
|
|
||||||
|
|||||||
@@ -6,23 +6,6 @@
|
|||||||
|
|
||||||
(setq dired-dwim-target t)
|
(setq dired-dwim-target t)
|
||||||
|
|
||||||
(with-eval-after-load 'dirvish
|
|
||||||
(define-key dirvish-mode-map (kbd "<down>")
|
|
||||||
(lambda () (interactive) (forward-line 1) (dired-move-to-filename)))
|
|
||||||
(define-key dirvish-mode-map (kbd "C-n")
|
|
||||||
(lambda () (interactive) (forward-line 1) (dired-move-to-filename)))
|
|
||||||
(define-key dirvish-mode-map (kbd "n")
|
|
||||||
(lambda () (interactive) (forward-line 1) (dired-move-to-filename)))
|
|
||||||
(define-key dirvish-mode-map (kbd "b") 'dired-up-directory)
|
|
||||||
(define-key dirvish-mode-map (kbd "C-b") 'dired-up-directory)
|
|
||||||
(define-key dirvish-mode-map (kbd "<left>") 'dired-up-directory)
|
|
||||||
(define-key dirvish-mode-map (kbd "<right>") 'dired-find-file)
|
|
||||||
(define-key dirvish-mode-map (kbd "C-f") 'dired-find-file)
|
|
||||||
(define-key dirvish-mode-map (kbd "<SPC>") 'dirvish-layout-toggle))
|
|
||||||
|
|
||||||
(with-eval-after-load 'dirvish
|
|
||||||
(add-hook 'dired-mode-hook #'dired-hide-details-mode))
|
|
||||||
|
|
||||||
;; dirvish
|
;; dirvish
|
||||||
(use-package dirvish
|
(use-package dirvish
|
||||||
:init
|
:init
|
||||||
@@ -39,6 +22,9 @@
|
|||||||
|
|
||||||
(setq dirvish-default-layout '(1 0.15 0.45))
|
(setq dirvish-default-layout '(1 0.15 0.45))
|
||||||
|
|
||||||
|
(with-eval-after-load 'dirvish
|
||||||
|
(add-hook 'dired-mode-hook #'dired-hide-details-mode))
|
||||||
|
|
||||||
:custom
|
:custom
|
||||||
(dirvish-quick-access-entries
|
(dirvish-quick-access-entries
|
||||||
(cond
|
(cond
|
||||||
@@ -56,7 +42,8 @@
|
|||||||
("p" "~/Pictures/" "Pictures")
|
("p" "~/Pictures/" "Pictures")
|
||||||
("d" "~/Downloads/" "Download")
|
("d" "~/Downloads/" "Download")
|
||||||
("v" "~/Movies/" "Videos")
|
("v" "~/Movies/" "Videos")
|
||||||
("n" "~/org/my-org-note/" "Notes")))
|
("n" "~/org/my-org-note/" "Notes")
|
||||||
|
("g" "~/gptel/" "gptel sessions")))
|
||||||
|
|
||||||
(*is-linux*
|
(*is-linux*
|
||||||
'(("h" "~/" "Home")
|
'(("h" "~/" "Home")
|
||||||
@@ -65,7 +52,8 @@
|
|||||||
("p" "~/图片/" "Pictures")
|
("p" "~/图片/" "Pictures")
|
||||||
("d" "~/downloads/" "Downloads")
|
("d" "~/downloads/" "Downloads")
|
||||||
("v" "~/视频/" "Videos")
|
("v" "~/视频/" "Videos")
|
||||||
("n" "~/org/my-org-note/" "Notes")))
|
("n" "~/org/my-org-note/" "Notes")
|
||||||
|
("g" "~/gptel/" "gptel sessions")))
|
||||||
(t nil))))
|
(t nil))))
|
||||||
|
|
||||||
(use-package trashed
|
(use-package trashed
|
||||||
|
|||||||
@@ -148,10 +148,7 @@ from the last 1500 characters of the buffer."
|
|||||||
(message "WARNING: gptel-request did not register callback!")))))
|
(message "WARNING: gptel-request did not register callback!")))))
|
||||||
|
|
||||||
(with-eval-after-load 'gptel
|
(with-eval-after-load 'gptel
|
||||||
(define-key gptel-mode-map (kbd "C-c C-s") #'my-gptel-save-session)
|
(define-key gptel-mode-map (kbd "C-c C-s") #'my-gptel-save-session)))
|
||||||
(setf gptel--system-message
|
|
||||||
"You are a large language model living in Emacs and a helpful assistant. Respond concisely.
|
|
||||||
- NEVER use unescaped org-mode headings. Lines MUST NOT begin with `* `, `** `, `*** `, etc. If you must start a line with asterisks, use the standard org escape format `,*` (e.g. `,* Heading`, `,** Sub-heading`).")))
|
|
||||||
|
|
||||||
(use-package gptel-agent
|
(use-package gptel-agent
|
||||||
:init
|
:init
|
||||||
|
|||||||
110
lisp/init-kbd-func.el
Normal file
110
lisp/init-kbd-func.el
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
;;; init-kbd-func.el --- functions for keybindings -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(defun open-init-file()
|
||||||
|
"Open user's init.el file in ~/.emacs.d ."
|
||||||
|
(interactive)
|
||||||
|
(find-file "~/.emacs.d/init.el"))
|
||||||
|
|
||||||
|
(when *is-windows*
|
||||||
|
(defun restart-emacs ()
|
||||||
|
"Restart emacs (for Windows)"
|
||||||
|
(interactive)
|
||||||
|
(save-some-buffers)
|
||||||
|
(w32-shell-execute "open" "runemacs.exe")
|
||||||
|
(kill-emacs)))
|
||||||
|
|
||||||
|
(defun my/jinx-smart-toggle ()
|
||||||
|
"Toggle jinx-mode smartly.
|
||||||
|
Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise toggle global-jinx-mode."
|
||||||
|
(interactive)
|
||||||
|
(unless (featurep 'jinx)
|
||||||
|
(require 'jinx))
|
||||||
|
(let ((local-on (bound-and-true-p jinx-mode))
|
||||||
|
(global-on (bound-and-true-p global-jinx-mode)))
|
||||||
|
(cond
|
||||||
|
((and local-on (not global-on))
|
||||||
|
(message "disable jinx-mode in current buffer")
|
||||||
|
(jinx-mode -1))
|
||||||
|
(t
|
||||||
|
(if global-on
|
||||||
|
(progn
|
||||||
|
(message "disable global-jinx-mode")
|
||||||
|
(global-jinx-mode -1))
|
||||||
|
(progn
|
||||||
|
(message "enable global-jinx-mode")
|
||||||
|
(global-jinx-mode 1)))))))
|
||||||
|
|
||||||
|
(defun duplicate-and-move-to-next-line()
|
||||||
|
"Duplicate current line and move to next line."
|
||||||
|
(interactive)
|
||||||
|
(progn
|
||||||
|
(duplicate-line)
|
||||||
|
(next-line)))
|
||||||
|
|
||||||
|
(defun popper-toggle-type-delete-other-window()
|
||||||
|
"Toggle type of popper window and delete other window."
|
||||||
|
(interactive)
|
||||||
|
(popper-toggle-type)
|
||||||
|
(delete-other-windows))
|
||||||
|
|
||||||
|
(defun consult-directory-externally (file)
|
||||||
|
"Open FILE externally using the default application of the system."
|
||||||
|
(interactive "fOpen externally: ")
|
||||||
|
(if (and (eq system-type 'windows-nt)
|
||||||
|
(fboundp 'w32-shell-execute))
|
||||||
|
(shell-command-to-string (encode-coding-string (replace-regexp-in-string "/" "\\\\"
|
||||||
|
(format "explorer.exe %s" (file-name-directory (expand-file-name file))))
|
||||||
|
'gbk))
|
||||||
|
(call-process (pcase system-type
|
||||||
|
('darwin "open")
|
||||||
|
('cygwin "cygstart")
|
||||||
|
(_ "xdg-open"))
|
||||||
|
nil 0 nil
|
||||||
|
(file-name-directory (expand-file-name file)))))
|
||||||
|
|
||||||
|
(defun my-open-current-directory ()
|
||||||
|
"Open current directory in default file explorer."
|
||||||
|
(interactive)
|
||||||
|
(consult-directory-externally default-directory))
|
||||||
|
|
||||||
|
(defun org-cycle-current-subtree()
|
||||||
|
"Cycle current subtree."
|
||||||
|
(interactive)
|
||||||
|
(org-back-to-heading)
|
||||||
|
(org-cycle))
|
||||||
|
|
||||||
|
(defun consult-org-ripgrep ()
|
||||||
|
"Jump to org agenda files use consult-ripgrep."
|
||||||
|
(interactive)
|
||||||
|
(consult-ripgrep org-agenda-files))
|
||||||
|
|
||||||
|
(defun org-journal-open-current-journal-file-delete-other-window()
|
||||||
|
"Call org-journal-open-current-journal-file and delete other window."
|
||||||
|
(interactive)
|
||||||
|
(org-journal-open-current-journal-file)
|
||||||
|
(delete-other-windows))
|
||||||
|
|
||||||
|
(defun org-journal-new-entry-delete-other-window()
|
||||||
|
"Call org-journal-new-entry and delete other window."
|
||||||
|
(interactive)
|
||||||
|
(org-journal-new-entry nil)
|
||||||
|
(delete-other-windows))
|
||||||
|
|
||||||
|
(defun switch-to-emms-playlist()
|
||||||
|
"Switch to emms playlist."
|
||||||
|
(interactive)
|
||||||
|
(switch-to-buffer "*EMMS Playlist*"))
|
||||||
|
|
||||||
|
(defun my/dired-next-line()
|
||||||
|
"move to forward line in dired buffer"
|
||||||
|
(interactive)
|
||||||
|
(forward-line 1)
|
||||||
|
(dired-move-to-filename))
|
||||||
|
|
||||||
|
(provide 'init-kbd-func)
|
||||||
|
|
||||||
|
;;; init-kbd-func.el ends here
|
||||||
661
lisp/init-kbd.el
661
lisp/init-kbd.el
@@ -4,13 +4,243 @@
|
|||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
;; 好像是ivy-posframe里的函数,后面要用
|
(use-package general)
|
||||||
(defun childframe-completion-workable-p ()
|
|
||||||
"Check if childframe completion is workable."
|
|
||||||
(and (display-graphic-p)
|
|
||||||
(not (eq system-type 'windows-nt))
|
|
||||||
(>= emacs-major-version 26)))
|
|
||||||
|
|
||||||
|
;; 修改mac键位
|
||||||
|
(when *is-mac*
|
||||||
|
(setq mac-command-modifier 'meta)
|
||||||
|
(setq mac-option-modifier 'none))
|
||||||
|
|
||||||
|
;; g for gptel
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c g"
|
||||||
|
"o" 'gptel
|
||||||
|
"m" 'gptel-menu
|
||||||
|
"s" 'gptel-send
|
||||||
|
"a" 'gptel-agent
|
||||||
|
"t" 'gptel-tools)
|
||||||
|
|
||||||
|
(general-def gptel-mode-map
|
||||||
|
"C-c C-s" 'my-gptel-save-session)
|
||||||
|
|
||||||
|
;; u for ui
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c u"
|
||||||
|
"l" 'global-tab-line-mode
|
||||||
|
"d" 'disable-theme
|
||||||
|
"f" 'rainbow-mode
|
||||||
|
"b" 'indent-bars-mode
|
||||||
|
"t" 'consult-theme
|
||||||
|
"c" 'my-color-picker)
|
||||||
|
|
||||||
|
;; f for find and consult command
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c f"
|
||||||
|
"r" 'consult-recent-file
|
||||||
|
"f" 'consult-fd
|
||||||
|
"g" 'consult-ripgrep
|
||||||
|
"e" 'consult-flycheck
|
||||||
|
"l" 'consult-locate
|
||||||
|
"m" 'consult-fd-global
|
||||||
|
"d" 'my-open-current-directory
|
||||||
|
"j" 'consult-jinx)
|
||||||
|
|
||||||
|
;; t for modes toggle
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c t"
|
||||||
|
"f" 'global-flycheck-mode
|
||||||
|
"j" 'my/jinx-smart-toggle
|
||||||
|
"g" 'gptel-mode)
|
||||||
|
|
||||||
|
;; o for org-mode
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c o"
|
||||||
|
"s" 'consult-org-agenda
|
||||||
|
"g" 'consult-org-ripgrep
|
||||||
|
"C" 'calendar
|
||||||
|
"c" 'org-capture
|
||||||
|
"p" 'my-blog-publish
|
||||||
|
"v" 'my-blog-preview)
|
||||||
|
|
||||||
|
;; q for org-ql
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c q"
|
||||||
|
"s" 'org-ql-search
|
||||||
|
"v" 'org-ql-view)
|
||||||
|
|
||||||
|
;; j for journal
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c j"
|
||||||
|
"o" 'org-journal-open-current-journal-file-delete-other-window
|
||||||
|
"n" 'org-journal-new-entry-delete-other-window)
|
||||||
|
|
||||||
|
;; m for media
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c m"
|
||||||
|
"n" 'emms-next
|
||||||
|
"p" 'emms-previous
|
||||||
|
"b" 'emms-browser
|
||||||
|
"q" 'emms-stop
|
||||||
|
"S" 'emms-toggle-single-track
|
||||||
|
"l" 'switch-to-emms-playlist
|
||||||
|
"d" 'my-emms-play-directory)
|
||||||
|
|
||||||
|
;; d for dired
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c d"
|
||||||
|
"a" 'dirvish-quick-access
|
||||||
|
"s" 'dirvish-side
|
||||||
|
"h" 'dirvish-history-menu)
|
||||||
|
|
||||||
|
;; scratch buffer
|
||||||
|
(if *is-mac*
|
||||||
|
(general-def "C-c <f12>" 'scratch-buffer)
|
||||||
|
(general-def "C-c <delete>" 'scratch-buffer))
|
||||||
|
|
||||||
|
;; dired
|
||||||
|
(general-def (dired-mode-map dirvish-mode-map)
|
||||||
|
"h" 'dirvish-history-menu
|
||||||
|
"M-," 'scroll-other-window-down
|
||||||
|
"M-." 'scroll-other-window
|
||||||
|
"<mouse-2>" 'emms-play-dired
|
||||||
|
"C-c m a" 'emms-add-dired
|
||||||
|
"<down>" 'my/dired-next-line
|
||||||
|
"C-n" 'my/dired-next-line
|
||||||
|
"n" 'my/dired-next-line
|
||||||
|
"b" 'dired-up-directory
|
||||||
|
"C-b" 'dired-up-directory
|
||||||
|
"<right>" 'dired-find-file
|
||||||
|
"<left>" 'dired-up-directory
|
||||||
|
"C-f" 'dired-find-file
|
||||||
|
"<SPC>" 'dirvish-layout-toggle)
|
||||||
|
|
||||||
|
;; flycheck
|
||||||
|
(general-def flycheck-mode-map
|
||||||
|
"M-{" 'flycheck-previous-error
|
||||||
|
"M-}" 'flycheck-next-error)
|
||||||
|
|
||||||
|
;; vterm
|
||||||
|
(general-def vterm-mode-map
|
||||||
|
"M-]" nil
|
||||||
|
"C-x C-x" 'vterm-send-C-x)
|
||||||
|
|
||||||
|
;; embark
|
||||||
|
(general-def embark-file-map
|
||||||
|
"d" 'consult-directory-externally
|
||||||
|
"p" 'emms-play-dired)
|
||||||
|
|
||||||
|
(general-def minibuffer-local-map
|
||||||
|
"C-c C-e" 'embark-export)
|
||||||
|
|
||||||
|
;; markdown
|
||||||
|
(general-def markdown-mode-map
|
||||||
|
"M-p" nil
|
||||||
|
"M-n" nil)
|
||||||
|
|
||||||
|
;; org-mode
|
||||||
|
(general-def org-mode-map
|
||||||
|
"C-<tab>" 'org-cycle-current-subtree
|
||||||
|
"C-c i" 'consult-org-heading
|
||||||
|
"C-c o w" 'my-org-refile-to-new-file)
|
||||||
|
|
||||||
|
;; emms
|
||||||
|
(general-def emms-playlist-mode-map
|
||||||
|
"<prior>" 'emms-previous
|
||||||
|
"<next>" 'emms-next)
|
||||||
|
|
||||||
|
;; perspective
|
||||||
|
(general-def persp-mode-map
|
||||||
|
"C-c p c" nil
|
||||||
|
"C-M-<left>" 'persp-prev
|
||||||
|
"C-M-<right>" 'persp-next
|
||||||
|
"C-c p d" 'persp-kill)
|
||||||
|
|
||||||
|
;; global map with C-c prefix
|
||||||
|
(general-def
|
||||||
|
:prefix "C-c"
|
||||||
|
"c" 'hydra-multiple-cursors/body
|
||||||
|
"r" 'restart-emacs
|
||||||
|
"e" 'er/expand-region
|
||||||
|
"s" 'consult-focus-lines
|
||||||
|
"i" 'consult-imenu
|
||||||
|
"a" 'org-agenda
|
||||||
|
"l" 'org-store-link
|
||||||
|
"k" 'comment-line
|
||||||
|
"v" 'vterm)
|
||||||
|
|
||||||
|
;; global map
|
||||||
|
(general-def
|
||||||
|
|
||||||
|
;; buffer, file, and window
|
||||||
|
"<f2>" 'open-init-file
|
||||||
|
"<mouse-4>" 'previous-buffer
|
||||||
|
"<mouse-5>" 'next-buffer
|
||||||
|
"M-[" 'previous-buffer
|
||||||
|
"M-]" 'next-buffer
|
||||||
|
"C-x C-b" 'ibuffer-other-window
|
||||||
|
"C-x K" 'crux-kill-other-buffers
|
||||||
|
"C-x b" 'consult-buffer
|
||||||
|
"M-o" 'ace-window
|
||||||
|
|
||||||
|
;; edit
|
||||||
|
"M-c" 'capitalize-dwim
|
||||||
|
"M-u" 'upcase-dwim
|
||||||
|
"M-l" 'downcase-dwim
|
||||||
|
"C-," 'duplicate-and-move-to-next-line
|
||||||
|
"C-k" 'crux-smart-kill-line
|
||||||
|
"C-<backspace>" 'crux-kill-line-backwards
|
||||||
|
"C-o" 'crux-smart-open-line
|
||||||
|
"C-a" 'crux-move-beginning-of-line
|
||||||
|
"M-y" 'consult-yank-from-kill-ring
|
||||||
|
"C-c <backspace>" 'hungry-delete-backward
|
||||||
|
"C-c C-<backspace>" 'hungry-delete-forward
|
||||||
|
"M-P" 'drag-stuff-up
|
||||||
|
"M-N" 'drag-stuff-down
|
||||||
|
|
||||||
|
;; undo
|
||||||
|
"C-/" 'undo-fu-only-undo
|
||||||
|
"C-?" 'undo-fu-only-redo
|
||||||
|
"C-x u" 'vundo
|
||||||
|
|
||||||
|
;; navigate
|
||||||
|
"M-p" 'backward-paragraph
|
||||||
|
"M-n" 'forward-paragraph
|
||||||
|
"<mouse-2>" 'xref-find-definitions-at-mouse
|
||||||
|
"C-s" 'consult-line
|
||||||
|
"C-M-;" 'avy-goto-char
|
||||||
|
"C-M-'" 'avy-goto-word-1
|
||||||
|
"M-g g" 'avy-goto-line
|
||||||
|
|
||||||
|
;; window
|
||||||
|
"M-<left>" 'shrink-window-horizontally
|
||||||
|
"M-<right>" 'enlarge-window-horizontally
|
||||||
|
"M-<down>" 'shrink-window
|
||||||
|
"M-<up>" 'enlarge-window
|
||||||
|
"<f10>" 'esw/swap-two-windows
|
||||||
|
"M-`" 'popper-toggle
|
||||||
|
"C-M-=" 'popper-toggle-type-delete-other-window
|
||||||
|
|
||||||
|
;; other
|
||||||
|
"C-x r b" 'consult-bookmark
|
||||||
|
"C-;" 'embark-act
|
||||||
|
"<mouse-3>" 'global-tab-line-mode)
|
||||||
|
|
||||||
|
;; expand region
|
||||||
|
(setq expand-region-reset-fast-key "r")
|
||||||
|
(setq expand-region-contract-fast-key "c")
|
||||||
|
|
||||||
|
;; save-some-buffer时diff更改
|
||||||
|
(add-to-list 'save-some-buffers-action-alist
|
||||||
|
(list "d"
|
||||||
|
(lambda (buffer) (diff-buffer-with-file (buffer-file-name buffer)))
|
||||||
|
"show diff between the buffer and its file"))
|
||||||
|
|
||||||
|
;; 在calendar中快速打开当天日记
|
||||||
|
(general-def calendar-mode-map
|
||||||
|
"j o" 'org-journal-open-entry-for-editing
|
||||||
|
"<RET>" 'org-journal-open-entry-for-editing)
|
||||||
|
|
||||||
|
;; hydra
|
||||||
(use-package hydra
|
(use-package hydra
|
||||||
:defines (consult-imenu-config)
|
:defines (consult-imenu-config)
|
||||||
:init
|
:init
|
||||||
@@ -26,7 +256,7 @@
|
|||||||
|
|
||||||
;; multiple-cursors
|
;; multiple-cursors
|
||||||
(defhydra hydra-multiple-cursors ()
|
(defhydra hydra-multiple-cursors ()
|
||||||
"
|
"
|
||||||
^Mark^ ^Unmark^ ^Other^
|
^Mark^ ^Unmark^ ^Other^
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
_p_ : prev line _P_ : previous _c_ : edit lines
|
_p_ : prev line _P_ : previous _c_ : edit lines
|
||||||
@@ -36,412 +266,17 @@ _b_ : prev symbol
|
|||||||
_s_ : in region
|
_s_ : in region
|
||||||
_a_ : all dwim
|
_a_ : all dwim
|
||||||
"
|
"
|
||||||
("p" mc/mark-previous-like-this)
|
("p" mc/mark-previous-like-this)
|
||||||
("n" mc/mark-next-like-this)
|
("n" mc/mark-next-like-this)
|
||||||
("b" mc/mark-previous-like-this-symbol)
|
("b" mc/mark-previous-like-this-symbol)
|
||||||
("f" mc/mark-next-like-this-symbol)
|
("f" mc/mark-next-like-this-symbol)
|
||||||
("P" mc/unmark-previous-like-this)
|
("P" mc/unmark-previous-like-this)
|
||||||
("N" mc/unmark-next-like-this)
|
("N" mc/unmark-next-like-this)
|
||||||
("a" mc/mark-all-dwim)
|
("a" mc/mark-all-dwim)
|
||||||
("s" mc/mark-all-in-region)
|
("s" mc/mark-all-in-region)
|
||||||
("c" mc/edit-lines)
|
("c" mc/edit-lines)
|
||||||
("." mc/mark-pop)
|
("." mc/mark-pop)
|
||||||
("q" nil))
|
("q" nil))
|
||||||
|
|
||||||
(global-set-key (kbd "C-c c") 'hydra-multiple-cursors/body)
|
|
||||||
|
|
||||||
(use-package general)
|
|
||||||
|
|
||||||
;; 修改mac键位
|
|
||||||
(when *is-mac*
|
|
||||||
(setq mac-command-modifier 'meta)
|
|
||||||
(setq mac-option-modifier 'none))
|
|
||||||
|
|
||||||
;; 使用F2打开init.el
|
|
||||||
(defun open-init-file()
|
|
||||||
"Open user's init.el file in ~/.emacs.d ."
|
|
||||||
(interactive)
|
|
||||||
(find-file "~/.emacs.d/init.el"))
|
|
||||||
|
|
||||||
(global-set-key (kbd "<f2>") 'open-init-file)
|
|
||||||
|
|
||||||
;; 根据平台使用不同的重启方式
|
|
||||||
(if *is-windows*
|
|
||||||
(progn
|
|
||||||
(defun restart-emacs ()
|
|
||||||
"Restart emacs (for Windows)"
|
|
||||||
(interactive)
|
|
||||||
(save-some-buffers)
|
|
||||||
(w32-shell-execute "open" "runemacs.exe")
|
|
||||||
(kill-emacs))
|
|
||||||
(global-set-key (kbd "C-c r") 'restart-emacs))
|
|
||||||
(global-set-key (kbd "C-c r") 'restart-emacs))
|
|
||||||
|
|
||||||
;; expand region
|
|
||||||
(global-set-key (kbd "C-c e") 'er/expand-region)
|
|
||||||
(setq expand-region-reset-fast-key "r")
|
|
||||||
(setq expand-region-contract-fast-key "c")
|
|
||||||
|
|
||||||
;; 大小写
|
|
||||||
(global-set-key (kbd "M-c") 'capitalize-dwim)
|
|
||||||
(global-set-key (kbd "M-u") 'upcase-dwim)
|
|
||||||
(global-set-key (kbd "M-l") 'downcase-dwim)
|
|
||||||
|
|
||||||
;; jinx相关
|
|
||||||
(defun my/jinx-smart-toggle ()
|
|
||||||
"Toggle jinx-mode smartly.
|
|
||||||
Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise toggle global-jinx-mode."
|
|
||||||
(interactive)
|
|
||||||
(unless (featurep 'jinx)
|
|
||||||
(require 'jinx))
|
|
||||||
(let ((local-on (bound-and-true-p jinx-mode))
|
|
||||||
(global-on (bound-and-true-p global-jinx-mode)))
|
|
||||||
(cond
|
|
||||||
((and local-on (not global-on))
|
|
||||||
(message "disable jinx-mode in current buffer")
|
|
||||||
(jinx-mode -1))
|
|
||||||
(t
|
|
||||||
(if global-on
|
|
||||||
(progn
|
|
||||||
(message "disable global-jinx-mode")
|
|
||||||
(global-jinx-mode -1))
|
|
||||||
(progn
|
|
||||||
(message "enable global-jinx-mode")
|
|
||||||
(global-jinx-mode 1)))))))
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c j j") 'my/jinx-smart-toggle)
|
|
||||||
(with-eval-after-load 'init-jinx
|
|
||||||
(global-set-key (kbd "C-c f j") 'consult-jinx))
|
|
||||||
|
|
||||||
;; pair编辑
|
|
||||||
;; (global-set-key (kbd "C-c p d") 'delete-pair)
|
|
||||||
|
|
||||||
;; 快速复制当前行
|
|
||||||
(defun duplicate-and-move-to-next-line()
|
|
||||||
"Duplicate current line and move to next line."
|
|
||||||
(interactive)
|
|
||||||
(progn
|
|
||||||
(duplicate-line)
|
|
||||||
(next-line)))
|
|
||||||
(global-set-key (kbd "C-,") 'duplicate-and-move-to-next-line)
|
|
||||||
|
|
||||||
;; 切换buffer
|
|
||||||
(defun my-tab-line-buffers ()
|
|
||||||
"Get list of buffers shown in tab-line."
|
|
||||||
(mapcar (lambda (tab)
|
|
||||||
(if (consp tab) (cdr tab) tab))
|
|
||||||
(funcall tab-line-tabs-function)))
|
|
||||||
|
|
||||||
(defun previous-buffer-with-tab-line ()
|
|
||||||
"Switch to previous buffer in tab-line order."
|
|
||||||
(interactive)
|
|
||||||
(let ((already-enabled global-tab-line-mode))
|
|
||||||
(unless already-enabled
|
|
||||||
(global-tab-line-mode 1))
|
|
||||||
(let* ((buffers (my-tab-line-buffers))
|
|
||||||
(current (current-buffer))
|
|
||||||
(pos (cl-position current buffers)))
|
|
||||||
(when pos
|
|
||||||
(switch-to-buffer
|
|
||||||
(nth (mod (1- pos) (length buffers)) buffers))))
|
|
||||||
(unless already-enabled
|
|
||||||
(run-with-idle-timer 0.5 nil (lambda () (global-tab-line-mode -1))))))
|
|
||||||
|
|
||||||
(defun next-buffer-with-tab-line ()
|
|
||||||
"Switch to next buffer in tab-line order."
|
|
||||||
(interactive)
|
|
||||||
(let ((already-enabled global-tab-line-mode))
|
|
||||||
(unless already-enabled
|
|
||||||
(global-tab-line-mode 1))
|
|
||||||
(let* ((buffers (my-tab-line-buffers))
|
|
||||||
(current (current-buffer))
|
|
||||||
(pos (cl-position current buffers)))
|
|
||||||
(when pos
|
|
||||||
(switch-to-buffer
|
|
||||||
(nth (mod (1+ pos) (length buffers)) buffers))))
|
|
||||||
(unless already-enabled
|
|
||||||
(run-with-idle-timer 0.5 nil (lambda () (global-tab-line-mode -1))))))
|
|
||||||
|
|
||||||
(global-set-key (kbd "<f3>") 'previous-buffer-with-tab-line)
|
|
||||||
(global-set-key (kbd "<mouse-4>") 'previous-buffer)
|
|
||||||
(global-set-key (kbd "M-[") 'previous-buffer)
|
|
||||||
(global-set-key (kbd "<f4>") 'next-buffer-with-tab-line)
|
|
||||||
(global-set-key (kbd "<mouse-5>") 'next-buffer)
|
|
||||||
(global-set-key (kbd "M-]") 'next-buffer)
|
|
||||||
|
|
||||||
;; 打开tab-line-mode
|
|
||||||
(global-set-key (kbd "C-c u l") 'global-tab-line-mode)
|
|
||||||
(global-set-key (kbd "<mouse-3>") 'global-tab-line-mode)
|
|
||||||
|
|
||||||
;; 关闭主题
|
|
||||||
(global-set-key (kbd "C-c u d") 'disable-theme)
|
|
||||||
(global-set-key (kbd "C-c u f") 'describe-face)
|
|
||||||
(global-set-key (kbd "C-c u r") 'rainbow-mode)
|
|
||||||
|
|
||||||
;; indent-bars
|
|
||||||
(global-set-key (kbd "C-c u b") 'indent-bars-mode)
|
|
||||||
|
|
||||||
;; 打开ibuffer
|
|
||||||
(global-set-key (kbd "C-x C-b") 'ibuffer-other-window)
|
|
||||||
(setq ibuffer-default-sorting-mode 'filename)
|
|
||||||
|
|
||||||
;; 段落导航
|
|
||||||
(global-set-key (kbd "M-p") 'backward-paragraph)
|
|
||||||
(global-set-key (kbd "M-n") 'forward-paragraph)
|
|
||||||
|
|
||||||
;; 中键使用embark打开定义
|
|
||||||
(global-set-key (kbd "<mouse-2>") 'xref-find-definitions)
|
|
||||||
|
|
||||||
;; 使用快速切换到scratch buffer
|
|
||||||
(if *is-mac*
|
|
||||||
(global-set-key (kbd "C-c <f12>") 'scratch-buffer)
|
|
||||||
(global-set-key (kbd "C-c <delete>") 'scratch-buffer))
|
|
||||||
|
|
||||||
;; 调整window
|
|
||||||
(global-set-key (kbd "M-<left>") 'shrink-window-horizontally)
|
|
||||||
(global-set-key (kbd "M-<right>") 'enlarge-window-horizontally)
|
|
||||||
(global-set-key (kbd "M-<up>") 'enlarge-window)
|
|
||||||
(global-set-key (kbd "M-<down>") 'shrink-window)
|
|
||||||
|
|
||||||
;; es-windows
|
|
||||||
(global-set-key (kbd "<f10>") 'esw/swap-two-windows)
|
|
||||||
|
|
||||||
;; popper
|
|
||||||
(global-set-key (kbd "M-`") 'popper-toggle-latest)
|
|
||||||
|
|
||||||
(defun popper-toggle-type-delete-other-window()
|
|
||||||
"Toggle type of popper window and delete other window."
|
|
||||||
(interactive)
|
|
||||||
(popper-toggle-type)
|
|
||||||
(delete-other-windows))
|
|
||||||
(global-set-key (kbd "C-M-=") 'popper-toggle-type-delete-other-window)
|
|
||||||
|
|
||||||
;; crux相关
|
|
||||||
(global-set-key (kbd "C-<backspace>") 'crux-kill-line-backwards) ;; C-DEL kill line backwards
|
|
||||||
(global-set-key (kbd "C-c k") 'comment-line) ;; 快速注释
|
|
||||||
(global-set-key (kbd "C-k") 'crux-smart-kill-line) ;; smart kill line
|
|
||||||
(global-set-key (kbd "C-a") 'crux-move-beginning-of-line) ;; 移动到第一个缩进而非行首
|
|
||||||
(global-set-key (kbd "C-x K") 'crux-kill-other-buffers) ;; 删除除当前buffer之外的buffer
|
|
||||||
|
|
||||||
;; undo-fu
|
|
||||||
(global-set-key (kbd "C-/") 'undo-fu-only-undo)
|
|
||||||
(global-set-key (kbd "C-?") 'undo-fu-only-redo)
|
|
||||||
|
|
||||||
;; vundo
|
|
||||||
(global-set-key (kbd "C-x u") 'vundo)
|
|
||||||
|
|
||||||
;; consult
|
|
||||||
(global-set-key (kbd "C-x b") 'consult-buffer) ;; buffer菜单
|
|
||||||
(global-set-key (kbd "C-s") 'consult-line) ;; 搜索
|
|
||||||
(global-set-key (kbd "C-c s") 'consult-focus-lines) ;; focus line
|
|
||||||
(global-set-key (kbd "C-c i") 'consult-imenu) ;; imenu
|
|
||||||
(global-set-key (kbd "C-c f r") 'consult-recent-file) ;; 最近打开
|
|
||||||
(global-set-key (kbd "C-c f f") 'consult-fd) ;; 调用fd进行目录内搜索
|
|
||||||
(global-set-key (kbd "C-c f g") 'consult-ripgrep) ;; consult-ripgrep
|
|
||||||
(global-set-key (kbd "M-y") 'consult-yank-from-kill-ring) ;; 从kill ring中粘贴
|
|
||||||
(global-set-key (kbd "C-x r b") 'consult-bookmark) ;; 书签菜单,embark中有更多操作
|
|
||||||
(define-key minibuffer-local-map (kbd "C-c C-e") 'embark-export) ;; 把minibuffer结果在一个菜单中显示
|
|
||||||
(global-set-key (kbd "C-c f e") 'consult-flycheck) ;; flycheck菜单
|
|
||||||
(global-set-key (kbd "C-c u t") 'consult-theme) ;; 主题预览
|
|
||||||
|
|
||||||
(if *is-mac*
|
|
||||||
(progn
|
|
||||||
(global-set-key (kbd "C-c f l") 'consult-fd-global)
|
|
||||||
(global-set-key (kbd "C-c f m") 'consult-locate))
|
|
||||||
(global-set-key (kbd "C-c f l") 'consult-locate)
|
|
||||||
(global-set-key (kbd "C-c f m") 'consult-fd-global))
|
|
||||||
|
|
||||||
;; flycheck
|
|
||||||
(global-set-key (kbd "C-c f c") 'global-flycheck-mode)
|
|
||||||
(with-eval-after-load 'flycheck
|
|
||||||
(define-key flycheck-mode-map (kbd "M-{") 'flycheck-previous-error)
|
|
||||||
(define-key flycheck-mode-map (kbd "M-}") 'flycheck-next-error))
|
|
||||||
|
|
||||||
;; avy
|
|
||||||
(global-set-key (kbd "C-M-;") 'avy-goto-char)
|
|
||||||
(global-set-key (kbd "C-M-'") 'avy-goto-word-1)
|
|
||||||
(global-set-key (kbd "M-g g") 'avy-goto-line)
|
|
||||||
|
|
||||||
;; hungry-delete
|
|
||||||
(global-set-key (kbd "C-c DEL") 'hungry-delete-backward) ;; 向后删除到第一个非空字符
|
|
||||||
(global-set-key (kbd "C-c C-<backspace>") 'hungry-delete-forward) ;; 向前删除到第一个非空字符
|
|
||||||
|
|
||||||
;; drag-stuff
|
|
||||||
(global-set-key (kbd "M-P") 'drag-stuff-up)
|
|
||||||
(global-set-key (kbd "M-N") 'drag-stuff-down)
|
|
||||||
|
|
||||||
;; ace-windows
|
|
||||||
(global-set-key (kbd "M-o") 'ace-window)
|
|
||||||
|
|
||||||
;; embark,修饰键之后加C-h可以查看所有指令
|
|
||||||
(global-set-key (kbd "C-;") 'embark-act)
|
|
||||||
|
|
||||||
;; vterm
|
|
||||||
(global-set-key (kbd "C-c v") 'vterm)
|
|
||||||
(with-eval-after-load 'vterm
|
|
||||||
(define-key vterm-mode-map (kbd "M-]") nil)
|
|
||||||
(define-key vterm-mode-map (kbd "C-x C-x") 'vterm-send-C-x))
|
|
||||||
|
|
||||||
;; ;; eshell
|
|
||||||
;; (with-eval-after-load 'eshell
|
|
||||||
;; (define-key eshell-mode-map (kbd "M-n") nil)
|
|
||||||
;; (define-key eshell-mode-map (kbd "M-p") nil)
|
|
||||||
;; (define-key eshell-mode-map (kbd "M-{") 'eshell-previous-matching-input-from-input)
|
|
||||||
;; (define-key eshell-mode-map (kbd "M-}") 'eshell-next-matching-input-from-input))
|
|
||||||
|
|
||||||
;; 打开目录
|
|
||||||
(defun consult-directory-externally (file)
|
|
||||||
"Open FILE externally using the default application of the system."
|
|
||||||
(interactive "fOpen externally: ")
|
|
||||||
(if (and (eq system-type 'windows-nt)
|
|
||||||
(fboundp 'w32-shell-execute))
|
|
||||||
(shell-command-to-string (encode-coding-string (replace-regexp-in-string "/" "\\\\"
|
|
||||||
(format "explorer.exe %s" (file-name-directory (expand-file-name file))))
|
|
||||||
'gbk))
|
|
||||||
(call-process (pcase system-type
|
|
||||||
('darwin "open")
|
|
||||||
('cygwin "cygstart")
|
|
||||||
(_ "xdg-open"))
|
|
||||||
nil 0 nil
|
|
||||||
(file-name-directory (expand-file-name file)))))
|
|
||||||
|
|
||||||
(with-eval-after-load 'embark
|
|
||||||
(define-key embark-file-map (kbd "d") 'consult-directory-externally))
|
|
||||||
|
|
||||||
;;打开当前文件的目录
|
|
||||||
(defun my-open-current-directory ()
|
|
||||||
"Open current directory in default file explorer."
|
|
||||||
(interactive)
|
|
||||||
(consult-directory-externally default-directory))
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c f d") 'my-open-current-directory)
|
|
||||||
|
|
||||||
;; save-some-buffer时diff更改
|
|
||||||
(add-to-list 'save-some-buffers-action-alist
|
|
||||||
(list "d"
|
|
||||||
(lambda (buffer) (diff-buffer-with-file (buffer-file-name buffer)))
|
|
||||||
"show diff between the buffer and its file"))
|
|
||||||
;; markdown
|
|
||||||
(with-eval-after-load 'markdown-mode
|
|
||||||
(define-key markdown-mode-map (kbd "M-p") nil)
|
|
||||||
(define-key markdown-mode-map (kbd "M-n") nil))
|
|
||||||
|
|
||||||
;; org-mode相关
|
|
||||||
;; cycle当前subtree
|
|
||||||
(defun org-cycle-current-subtree()
|
|
||||||
"Cycle current subtree."
|
|
||||||
(interactive)
|
|
||||||
(org-back-to-heading)
|
|
||||||
(org-cycle))
|
|
||||||
(global-set-key (kbd "C-<tab>") 'org-cycle-current-subtree)
|
|
||||||
|
|
||||||
;; heading菜单
|
|
||||||
(with-eval-after-load 'org
|
|
||||||
(define-key org-mode-map (kbd "C-c i") 'consult-org-heading))
|
|
||||||
|
|
||||||
;; 用consult检索org-agenda-file标题
|
|
||||||
(global-set-key (kbd "C-c o s") 'consult-org-agenda)
|
|
||||||
|
|
||||||
;; 用ripgrep搜索org-agenda-file
|
|
||||||
(defun my/org-agenda-rifle ()
|
|
||||||
"Jump to org agenda files use consult-ripgrep."
|
|
||||||
(interactive)
|
|
||||||
(consult-ripgrep org-agenda-files))
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c o g") 'my/org-agenda-rifle)
|
|
||||||
|
|
||||||
;; 存储一个链接
|
|
||||||
(global-set-key (kbd "C-c l") 'org-store-link)
|
|
||||||
|
|
||||||
;; 打开calendar
|
|
||||||
(global-set-key (kbd "C-c o C") 'calendar)
|
|
||||||
|
|
||||||
;; 在calendar中快速打开当天日记
|
|
||||||
(eval-after-load "calendar"
|
|
||||||
(progn
|
|
||||||
'(define-key calendar-mode-map (kbd "j o") 'org-journal-open-entry-for-editing)
|
|
||||||
'(define-key calendar-mode-map (kbd "<RET>") 'org-journal-open-entry-for-editing)))
|
|
||||||
|
|
||||||
;; org-ql
|
|
||||||
(global-set-key (kbd "C-c q s") 'org-ql-search)
|
|
||||||
(global-set-key (kbd "C-c q v") 'org-ql-view)
|
|
||||||
|
|
||||||
;; 日记
|
|
||||||
(defun org-journal-open-current-journal-file-delete-other-window()
|
|
||||||
"Call org-journal-open-current-journal-file and delete other window."
|
|
||||||
(interactive)
|
|
||||||
(org-journal-open-current-journal-file)
|
|
||||||
(delete-other-windows))
|
|
||||||
|
|
||||||
(defun org-journal-new-entry-delete-other-window()
|
|
||||||
"Call org-journal-new-entry and delete other window."
|
|
||||||
(interactive)
|
|
||||||
(org-journal-new-entry nil)
|
|
||||||
(delete-other-windows))
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c j o") 'org-journal-open-current-journal-file-delete-other-window)
|
|
||||||
(global-set-key (kbd "C-c j n") 'org-journal-new-entry-delete-other-window)
|
|
||||||
|
|
||||||
;; emms
|
|
||||||
(global-set-key (kbd "C-c m n") 'emms-next)
|
|
||||||
(global-set-key (kbd "C-c m p") 'emms-previous)
|
|
||||||
(global-set-key (kbd "C-c m b") 'emms-browser)
|
|
||||||
(global-set-key (kbd "C-c m q") 'emms-stop)
|
|
||||||
(global-set-key (kbd "C-c m S") 'emms-toggle-single-track) ;自动连播开关
|
|
||||||
|
|
||||||
(with-eval-after-load 'embark
|
|
||||||
(define-key embark-file-map (kbd "p") 'emms-play-dired))
|
|
||||||
|
|
||||||
(add-hook 'dired-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(local-unset-key (kbd "<mouse-2>"))
|
|
||||||
(local-set-key (kbd "<mouse-2>") 'emms-play-dired)
|
|
||||||
(local-set-key (kbd "C-c m a") 'emms-add-dired)))
|
|
||||||
|
|
||||||
(add-hook 'emms-playlist-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(local-unset-key (kbd "<prior>"))
|
|
||||||
(local-unset-key (kbd "<next>"))
|
|
||||||
(local-set-key (kbd "<prior>") 'emms-previous)
|
|
||||||
(local-set-key (kbd "<next>") 'emms-next)))
|
|
||||||
|
|
||||||
(defun switch-to-emms-playlist()
|
|
||||||
"Switch to emms playlist."
|
|
||||||
(interactive)
|
|
||||||
(switch-to-buffer "*EMMS Playlist*"))
|
|
||||||
(global-set-key (kbd "C-c m l") 'switch-to-emms-playlist)
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c m d") 'my-emms-play-directory)
|
|
||||||
|
|
||||||
;; dashboard
|
|
||||||
(global-set-key (kbd "C-c D") 'dashboard-open)
|
|
||||||
|
|
||||||
;; dired
|
|
||||||
(with-eval-after-load 'dirvish
|
|
||||||
(global-set-key (kbd "C-c d a") 'dirvish-quick-access)
|
|
||||||
(global-set-key (kbd "C-c d s") 'dirvish-side)
|
|
||||||
(global-set-key (kbd "C-c d h") 'dirvish-history-menu)
|
|
||||||
(global-set-key (kbd "C-x d") 'dired-jump)
|
|
||||||
(global-set-key (kbd "C-x C-j") 'dired)
|
|
||||||
(define-key dired-mode-map (kbd "h") 'dirvish-history-menu)
|
|
||||||
(define-key dired-mode-map (kbd "M-,") 'scroll-other-window-down)
|
|
||||||
(define-key dired-mode-map (kbd "M-.") 'scroll-other-window))
|
|
||||||
|
|
||||||
;; perspective
|
|
||||||
(global-set-key (kbd "C-M-<left>") 'persp-prev)
|
|
||||||
(global-set-key (kbd "C-M-<right>") 'persp-next)
|
|
||||||
(define-key persp-mode-map (kbd "C-c p c") nil)
|
|
||||||
(global-set-key (kbd "C-c p d") 'persp-kill)
|
|
||||||
|
|
||||||
;; gptel
|
|
||||||
(general-def
|
|
||||||
:prefix "C-c g"
|
|
||||||
"o" 'gptel
|
|
||||||
"m" 'gptel-menu
|
|
||||||
"s" 'gptel-send
|
|
||||||
"a" 'gptel-agent
|
|
||||||
"t" 'gptel-tools
|
|
||||||
"g" 'gptel-mode)
|
|
||||||
|
|
||||||
(provide 'init-kbd)
|
(provide 'init-kbd)
|
||||||
|
|
||||||
|
|||||||
@@ -135,9 +135,6 @@
|
|||||||
(find-file-other-window filepath)
|
(find-file-other-window filepath)
|
||||||
(message "Successfully refiled to %s" filepath)))
|
(message "Successfully refiled to %s" filepath)))
|
||||||
|
|
||||||
(with-eval-after-load 'org
|
|
||||||
(define-key org-mode-map (kbd "C-c o w") #'my-org-refile-to-new-file))
|
|
||||||
|
|
||||||
(provide 'init-org-refile)
|
(provide 'init-org-refile)
|
||||||
|
|
||||||
;;; init-org-refile.el ends here
|
;;; init-org-refile.el ends here
|
||||||
|
|||||||
@@ -150,8 +150,6 @@
|
|||||||
(sequence "WAITING(w@/!)" "SOMEDAY(S)" "|" "CANCELLED(c@/!)" "MEETING(m)" "PHONE(p)"))))
|
(sequence "WAITING(w@/!)" "SOMEDAY(S)" "|" "CANCELLED(c@/!)" "MEETING(m)" "PHONE(p)"))))
|
||||||
|
|
||||||
;; agenda相关
|
;; agenda相关
|
||||||
(global-set-key (kbd "C-c a") 'org-agenda)
|
|
||||||
|
|
||||||
(when *is-windows*
|
(when *is-windows*
|
||||||
(setq org-agenda-files '("h:/emacs/hugo/this-is-my-blog/all-blog.org"
|
(setq org-agenda-files '("h:/emacs/hugo/this-is-my-blog/all-blog.org"
|
||||||
"h:/emacs/my-org-daily/"
|
"h:/emacs/my-org-daily/"
|
||||||
@@ -295,8 +293,6 @@
|
|||||||
|
|
||||||
(setq org-bookmark-names-plist nil)
|
(setq org-bookmark-names-plist nil)
|
||||||
|
|
||||||
(global-set-key (kbd "C-c o c") 'org-capture)
|
|
||||||
|
|
||||||
;; 批量调整表格
|
;; 批量调整表格
|
||||||
(defun org-table-align-all ()
|
(defun org-table-align-all ()
|
||||||
"Ajust all table in current buffer."
|
"Ajust all table in current buffer."
|
||||||
@@ -373,8 +369,6 @@ See `org-capture-templates' for more information."
|
|||||||
(message "Push may have failed or nothing to push, check *Messages* buffer for details")
|
(message "Push may have failed or nothing to push, check *Messages* buffer for details")
|
||||||
(message "Push successfully %s" timestamp)))))
|
(message "Push successfully %s" timestamp)))))
|
||||||
|
|
||||||
(global-set-key (kbd "C-c o p") 'my-blog-publish)
|
|
||||||
|
|
||||||
;; 预览博客
|
;; 预览博客
|
||||||
(defun my-blog-preview ()
|
(defun my-blog-preview ()
|
||||||
"Save and preview blog."
|
"Save and preview blog."
|
||||||
@@ -391,8 +385,6 @@ See `org-capture-templates' for more information."
|
|||||||
;; 自动打开浏览器
|
;; 自动打开浏览器
|
||||||
(browse-url "http://localhost:1313")))
|
(browse-url "http://localhost:1313")))
|
||||||
|
|
||||||
(global-set-key (kbd "C-c o v") 'my-blog-preview)
|
|
||||||
|
|
||||||
(provide 'init-org)
|
(provide 'init-org)
|
||||||
|
|
||||||
;;; init-org.el ends here
|
;;; init-org.el ends here
|
||||||
|
|||||||
@@ -227,22 +227,7 @@ targets."
|
|||||||
(lambda ()
|
(lambda ()
|
||||||
(ibuffer-projectile-set-filter-groups)
|
(ibuffer-projectile-set-filter-groups)
|
||||||
(unless (eq ibuffer-sorting-mode 'alphabetic)
|
(unless (eq ibuffer-sorting-mode 'alphabetic)
|
||||||
(ibuffer-do-sort-by-alphabetic))))
|
(ibuffer-do-sort-by-alphabetic)))))
|
||||||
(when (centaur-treesit-available-p)
|
|
||||||
(defun treesit-mark-bigger-node ()
|
|
||||||
"Use tree-sitter to mark regions."
|
|
||||||
(let* ((root (treesit-buffer-root-node))
|
|
||||||
(node (treesit-node-descendant-for-range root (region-beginning) (region-end)))
|
|
||||||
(node-start (treesit-node-start node))
|
|
||||||
(node-end (treesit-node-end node)))
|
|
||||||
;; Node fits the region exactly. Try its parent node instead.
|
|
||||||
(when (and (= (region-beginning) node-start) (= (region-end) node-end))
|
|
||||||
(when-let* ((node (treesit-node-parent node)))
|
|
||||||
(setq node-start (treesit-node-start node)
|
|
||||||
node-end (treesit-node-end node))))
|
|
||||||
(set-mark node-end)
|
|
||||||
(goto-char node-start)))
|
|
||||||
(add-to-list 'er/try-expand-list 'treesit-mark-bigger-node)))
|
|
||||||
|
|
||||||
;; avy中文支持
|
;; avy中文支持
|
||||||
(use-package ace-pinyin
|
(use-package ace-pinyin
|
||||||
|
|||||||
@@ -65,7 +65,9 @@
|
|||||||
(advice-add 'scratch-buffer :after #'my/scratch-set-mode)
|
(advice-add 'scratch-buffer :after #'my/scratch-set-mode)
|
||||||
|
|
||||||
;; 开启server mode
|
;; 开启server mode
|
||||||
(server-start)
|
(require 'server)
|
||||||
|
(unless (server-running-p)
|
||||||
|
(server-start))
|
||||||
|
|
||||||
;; 窗口名
|
;; 窗口名
|
||||||
(setq-default frame-title-format '("%b - Emacs"))
|
(setq-default frame-title-format '("%b - Emacs"))
|
||||||
@@ -73,6 +75,9 @@
|
|||||||
;; electirc-pair-mode
|
;; electirc-pair-mode
|
||||||
(add-hook 'org-mode-hook 'electric-pair-local-mode)
|
(add-hook 'org-mode-hook 'electric-pair-local-mode)
|
||||||
|
|
||||||
|
;; ibuffer
|
||||||
|
(setq ibuffer-default-sorting-mode 'filename)
|
||||||
|
|
||||||
;; short anwser
|
;; short anwser
|
||||||
(if (boundp 'use-short-answers)
|
(if (boundp 'use-short-answers)
|
||||||
(setq use-short-answers t)
|
(setq use-short-answers t)
|
||||||
|
|||||||
@@ -33,8 +33,6 @@
|
|||||||
colors))))
|
colors))))
|
||||||
(string-trim (car (split-string choice)))))
|
(string-trim (car (split-string choice)))))
|
||||||
|
|
||||||
(global-set-key (kbd "C-c u c") 'my-color-picker)
|
|
||||||
|
|
||||||
;; rainbow mode
|
;; rainbow mode
|
||||||
(use-package rainbow-mode)
|
(use-package rainbow-mode)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user