Skip to content

Commit

Permalink
add init-ai.el
Browse files Browse the repository at this point in the history
  • Loading branch information
JJPandari committed Jul 9, 2024
1 parent 70f307d commit 0d804c0
Show file tree
Hide file tree
Showing 14 changed files with 66 additions and 27 deletions.
1 change: 1 addition & 0 deletions init.el
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
(require 'init-browser)
(require 'init-player)
(require 'init-time)
(require 'init-ai)
(require 'init-misc)

;; Extra packages which don't require any configuration
Expand Down
25 changes: 25 additions & 0 deletions modes/init-ai.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
(use-package gptel
:config
(setq gptel-model "moonshot-v1-8k"
gptel-default-mode 'org-mode
gptel-backend (gptel-make-openai "Moonshot"
:key 'gptel-api-key
:host "api.moonshot.cn"
:stream t
:models '("moonshot-v1-8k"
"moonshot-v1-32k"
"moonshot-v1-128k")))
(jester/with-major-leader 'gptel-mode-map
;; "e" (lambda! (call-interactively 'evil-append-line) (gptel-send) (evil-normal-state))
"e" (lambda! (save-excursion (let ((evil-move-beyond-eol t))
(evil-end-of-line) (gptel-send))))
"i" 'jester/ai-insert-new-conversation-instruction))


(defun jester/ai-insert-new-conversation-instruction ()
"Insert some text to tell ai to start a new conversation, with hints on how he/she/it should express itself."
(interactive)
(call-interactively 'evil-append-line)
(insert "我们开始一个新的对话吧。请记住使用中文来和我对话。但是,对于专业术语,直接使用英文,并且不要加上中文翻译。"))

(provide 'init-ai)
2 changes: 1 addition & 1 deletion modes/init-avy.el
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(use-package avy
:init
(setq avy-all-windows t)
(setq avy-all-windows nil)
;; (general-define-key
;; :states '(normal visual motion)
;; "g a" 'avy-goto-char-timer)
Expand Down
2 changes: 1 addition & 1 deletion modes/init-chinese.el
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
pyim-probe-punctuation-after-punctuation))
(setq default-input-method "pyim"
pyim-default-scheme 'wubi
pyim-page-tooltip (if window-system 'posframe 'popup)
pyim-page-tooltip (if (display-graphic-p) 'posframe 'popup)
pyim-page-length 5)
:bind
(("M-l" . pyim-convert-string-at-point)
Expand Down
4 changes: 2 additions & 2 deletions modes/init-css.el
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@
;; :keymaps '(css-mode-map sass-mode-map)
;; "<tab>" 'jester/css-emmet-or-normal-tab)
;; TODO how to make a buffer-local company-active-map?
(add-hook! 'css-mode-hook
;; (add-hook! 'css-mode-hook
;; (make-local-variable 'company-active-map)
;; (general-define-key
;; :keymaps 'company-active-map
;; "<tab>" 'jester/css-emmet-or-normal-tab)
;; (setf (alist-get 'tab (cdr company-active-map)) 'jester/css-emmet-or-normal-tab)
)
;; )

(provide 'init-css)
11 changes: 7 additions & 4 deletions modes/init-editing-utils.el
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ If this line is already an assignment (has a \"=\"), cycle through styles in thi

(general-define-key
:states '(insert emacs)
:keymaps '(web-mode-map js2-mode-map typescript-mode-map)
:keymaps '(web-mode-map js2-mode-map typescript-mode-map typescript-ts-mode-map)
"C-j" 'jester/make-javascript-assignment)

(defun jester/make-simple-assignment ()
Expand Down Expand Up @@ -651,18 +651,21 @@ If use-indirect-buffer is not nil, use `indirect-buffer' to hold the widen conte
("GET" . "POST")
("POST" . "GET")
("when" . "unless")
("unless" . "when"))
("unless" . "when")
("\"\"" . "{}")
("{}" . "\"\""))
"symbols to be quick flipped when editing")

(defun jester/just-do-what-i-mean ()
"\"I don't want to type here, just do it for me.\" (check source for what this function does)"
(interactive)
(-let* (((beg . end) (bounds-of-thing-at-point 'symbol))
(-let* (((beg . end) (or (bounds-of-thing-at-point 'symbol) (cons (- (point) 1) (+ (point) 1))))
(sym (buffer-substring-no-properties beg end)))
(when (member sym (cl-loop for cell in jester-flip-symbol-alist
collect (car cell)))
(delete-region beg end)
(insert (alist-get sym jester-flip-symbol-alist "" nil 'string-equal)))))
(insert (alist-get sym jester-flip-symbol-alist "" nil 'string-equal))
(backward-char))))

(jester/with-leader
"SPC" 'jester/just-do-what-i-mean)
Expand Down
10 changes: 5 additions & 5 deletions modes/init-evil.el
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@
"g S" 'evil-snipe-S
"g c" 'evil-snipe-x
"g C" 'evil-snipe-X)
(define-key evil-normal-state-map (kbd "DEL") 'evil-snipe-repeat-reverse))
(define-key evil-normal-state-map (kbd "<backspace>") 'evil-snipe-repeat-reverse))


(use-package evil-collection
Expand Down Expand Up @@ -416,8 +416,6 @@
"Q" "@q"
"gJ" 'jester/evil-join-no-whitespace
"z i" 'evil-emacs-state
"<C-i>" 'beginning-of-line-text
"C-o" 'move-end-of-line
"<" nil
">" nil)

Expand Down Expand Up @@ -450,8 +448,8 @@
;; fix keys bound by motion state
"r" 'evil-replace
"d" 'evil-delete
"<C-i>" 'beginning-of-line-text
"C-o" 'move-end-of-line)
"<C-i>" 'evil-first-non-blank
"C-o" 'evil-end-of-line)

(general-define-key
:states 'motion
Expand All @@ -463,6 +461,8 @@
:states '(normal motion)
"*" 'jester/evil-normal-search-forward
"#" 'jester/evil-normal-search-backward
"<C-i>" 'evil-first-non-blank
"C-o" 'evil-end-of-line
"C-q" (lambda! (evil-ex-nohighlight)
(when (fboundp 'symbol-overlay-remove-all) (call-interactively 'symbol-overlay-remove-all))))

Expand Down
6 changes: 3 additions & 3 deletions modes/init-javascript.el
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,10 @@
(use-package typescript-ts-mode
:mode "\\.ts\\'"
:config
// remove auto mode for tsx files because we want web-mode there
;; remove auto mode for tsx files because we want web-mode there
(setq auto-mode-alist (cl-remove "\\.tsx\\'" auto-mode-alist :test 'string-equal :key 'car))
(setq auto-mode-alist (cl-remove "\\.tsx?\\'" auto-mode-alist :test 'string-equal :key 'car))
// web-mode is also removed, add it back
;; web-mode is also removed, add it back
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode))
(add-hook! 'typescript-ts-mode-hook (setq mode-name "TypeScript(ts)")))

Expand Down Expand Up @@ -186,7 +186,7 @@
".test.tsx" ".spec.tsx")))
(setq jester-test-command (format "(cd %s && node node_modules/.bin/jest --detectOpenHandles --forceExit %s --collectCoverageFrom '')" (projectile-project-root) file-name)))))

(add-hook! '(js2-mode-hook typescript-mode-hook web-mode-hook) 'jester/set-js-ts-test-command)
(add-hook! '(js2-mode-hook typescript-ts-mode-hook typescript-mode-hook web-mode-hook) 'jester/set-js-ts-test-command)


(defun jester/js2-jump-or-citre-jump ()
Expand Down
11 changes: 7 additions & 4 deletions modes/init-jump.el
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"g r" 'lsp-bridge-find-references
"g t" 'lsp-bridge-find-type-def)

(jester/with-major-leader '(typescript-mode-map web-mode-map js2-mode-map)
(jester/with-major-leader '(typescript-mode-map typescript-ts-mode-map web-mode-map js2-mode-map)
"r" 'lsp-bridge-rename)
(jester/with-leader
"e l" 'lsp-bridge-diagnostic-list
Expand Down Expand Up @@ -108,11 +108,14 @@
(ht-set! jester-project-symbols-map project-root sym-map-in-project)
(jester/write-symbol-history)))

(advice-add 'xref-find-definitions :before 'jester/save-symbol-history)
(advice-add 'lsp-bridge-find-def :before 'jester/save-symbol-history)
;; TODO we want after but the behavior is still before (is find-def async?)
(advice-add 'xref-find-definitions :after 'jester/save-symbol-history)
(advice-add 'lsp-bridge-find-def :after 'jester/save-symbol-history)
;; FIXME: find type def not work well because key is symbol before jump, but this symbol is var name not type name
;; (advice-add 'lsp-bridge-find-type-def :after 'jester/save-symbol-history)

(defun jester/recent-symbol ()
"Select a recent symbol, goto it (place before find-def)."
"Select a recent symbol, goto it (place after find-def)."
(interactive)
(let ((sym-map-in-project (ht-get jester-project-symbols-map (projectile-project-root))))
(ivy-read "recent symbol: "
Expand Down
5 changes: 5 additions & 0 deletions modes/init-mode-line.el
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
(`interrupted ".")
(`suspicious '(propertize "?" 'face 'warning))))))

(defvar jester/lsp-bridge-mode-line
'(:eval
(when (and (featurep 'lsp-bridge) lsp-bridge-mode)
())))

(defvar jester/number-unicode-char-list
'("" "" "" "" "" "" "" "" "" "" ""))

Expand Down
3 changes: 2 additions & 1 deletion modes/init-org.el
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,8 @@ typical word processor."
(jester/with-major-leader 'org-mode-map
"t t" 'org-todo
"t a" 'counsel-org-tag
"l" 'org-insert-link)
"l" 'org-insert-link
"s" 'org-insert-structure-template)
(general-define-key
:states '(insert emacs)
:keymaps 'org-mode-map
Expand Down
10 changes: 5 additions & 5 deletions modes/init-python.el
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
(setq auto-mode-alist
(append '(("SConstruct\\'" . python-mode)
("SConscript\\'" . python-mode))
(append '(("SConstruct\\'" . python-ts-mode)
("SConscript\\'" . python-ts-mode))
auto-mode-alist))

(require-package 'pip-requirements)

(when (maybe-require-package 'anaconda-mode)
(after-load 'python
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'anaconda-eldoc-mode))
(add-hook 'python-ts-mode-hook 'anaconda-mode)
(add-hook 'python-ts-mode-hook 'anaconda-eldoc-mode))
(when (maybe-require-package 'company-anaconda)
(after-load 'company
(add-hook 'python-mode-hook
(add-hook 'python-ts-mode-hook
(lambda () (jester/local-push-company-backend 'company-anaconda))))))


Expand Down
2 changes: 1 addition & 1 deletion modes/init-web.el
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
:config
(general-define-key
:states '(insert emacs)
:keymaps '(web-mode-map js2-mode-map typescript-mode-map css-mode-map sass-mode-map)
:keymaps '(web-mode-map js2-mode-map typescript-mode-map typescript-ts-mode-map css-mode-map sass-mode-map)
"H-e" 'emmet-expand-line))

;;----------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions modes/init-windows.el
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
"*Youdao Dictionary*"
"JsDocTagDescription"
"*skewer-error*"
"*Moonshot*"
("^\\*.*build.*\\*$" :regexp t)
("^\\*evil-.+\\*$" :regexp t)
("-indirect-" :regexp t)
Expand Down

0 comments on commit 0d804c0

Please sign in to comment.