manateelazycat / lsp-bridge

A blazingly fast LSP client for Emacs
GNU General Public License v3.0
1.42k stars 205 forks source link

psearch-replace 导致 wrong-type-argument lsp-bridge-epc-manager nil ? #878

Closed czqhurricane closed 7 months ago

czqhurricane commented 7 months ago

Emacs 刚启动出现错误:

Debugger entered--Lisp error: (wrong-type-argument lsp-bridge-epc-manager nil)
  signal(wrong-type-argument (lsp-bridge-epc-manager nil))
  (or (progn (and (memq (type-of mngr) cl-struct-lsp-bridge-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'lsp-bridge-epc-manager mngr)))
  (progn (or (progn (and (memq (type-of mngr) cl-struct-lsp-bridge-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'lsp-bridge-epc-manager mngr))) (aref mngr 7))
  (let ((uid (lsp-bridge-epc-uid)) (sessions (progn (or (progn (and (memq ... cl-struct-lsp-bridge-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'lsp-bridge-epc-manager mngr))) (aref mngr 7))) (d (lsp-bridge-deferred-new))) (setq sessions (cons (cons uid d) sessions)) (progn (or (progn (and (memq (type-of mngr) cl-struct-lsp-bridge-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'lsp-bridge-epc-manager mngr))) (let* ((v mngr)) (aset v 7 sessions))) (lsp-bridge-epc-manager-send mngr 'call uid method-name args) d)
  lsp-bridge-epc-call-deferred(nil search_list_search ("elisp" "if"))
  (setq it (lsp-bridge-epc-call-deferred lsp-bridge-epc-process (read method) args))
  (let (it) (setq it (lsp-bridge-epc-call-deferred lsp-bridge-epc-process (read method) args)) it)
  lsp-bridge-call-async("search_list_search" "elisp" "if")
  (if (or (string-equal current-symbol "") (null current-symbol)) nil (lsp-bridge-call-async "search_list_search" "elisp" current-symbol))
  (progn (if (or (string-equal current-symbol "") (null current-symbol)) nil (lsp-bridge-call-async "search_list_search" "elisp" current-symbol)))
  (if (and (acm-is-elisp-mode-p) (not (acm-in-comment-p))) (progn (if (or (string-equal current-symbol "") (null current-symbol)) nil (lsp-bridge-call-async "search_list_search" "elisp" current-symbol))))
  lsp-bridge-elisp-symbols-search("if")
  (let* ((this-command-string (format "%s" this-command)) (current-word (thing-at-point 'word t)) (current-symbol (thing-at-point 'symbol t))) (if (and acm-enable-tabnine (lsp-bridge-process-live-p)) (progn (lsp-bridge-tabnine-complete))) (if (and acm-enable-copilot (lsp-bridge-process-live-p) (not (lsp-bridge-is-remote-file)) (not (or (derived-mode-p 'markdown-mode) (eq major-mode 'org-mode) (derived-mode-p 'inferior-emacs-lisp-mode) (minibufferp)))) (progn (lsp-bridge-copilot-complete))) (if (and acm-enable-codeium (lsp-bridge-process-live-p) (or (not (lsp-bridge-is-remote-file)) lsp-bridge-use-local-codeium) (not (or (derived-mode-p 'markdown-mode) (eq major-mode 'org-mode) (derived-mode-p 'inferior-emacs-lisp-mode) (minibufferp)))) (progn (lsp-bridge-codeium-complete))) (if (and acm-enable-ctags (lsp-bridge-process-live-p)) (progn (if (or (string-equal current-word "") (null current-word)) nil (if (lsp-bridge-is-remote-file) (save-current-buffer (set-buffer (buffer-name)) (lsp-bridge-remote-send-func-request "ctags_complete" (list current-word ... ...))) (lsp-bridge-call-async "ctags_complete" current-word (buffer-file-name) (1- (point))))))) (if acm-enable-search-sdcv-words (progn (if (or (string-equal current-word "") (null current-word)) nil (lsp-bridge-call-async "search_sdcv_words_search" current-word)))) (lsp-bridge-elisp-symbols-search current-symbol) (if lsp-bridge-prohibit-completion nil (if (or buffer-file-name (lsp-bridge-is-remote-file)) (progn (let ((current-word (acm-backend-search-file-words-get-point-string))) (if (or (string-equal current-word "") (null current-word)) nil (if (lsp-bridge-is-remote-file) (lsp-bridge-remote-send-func-request "search_file_words_search" ...) (lsp-bridge-call-async "search_file_words_search" current-word))))))) (if (and (derived-mode-p 'web-mode) (acm-in-string-p) (save-excursion (search-backward-regexp "class=" (point-at-bol) t))) (progn (if (or (string-equal current-symbol "") (null current-symbol)) nil (if (lsp-bridge-is-remote-file) (lsp-bridge-remote-send-func-request "search_tailwind_keywords_search" (list lsp-bridge-remote-file-path current-symbol)) (lsp-bridge-call-async "search_tailwind_keywords_search" (lsp-bridge-get-buffer-file-name-text) current-symbol))))) (if (acm-in-string-p) (let* ((filename (and t (lsp-bridge-elisp-get-filepath))) (dirname (and filename (condition-case nil (progn ...) (error nil))))) (if dirname (if (lsp-bridge-is-remote-file) (let ((path ...)) (lsp-bridge-remote-send-func-request "search_paths_search" (list path ...))) (if (file-exists-p dirname) (progn (lsp-bridge-call-async "search_paths_search" dirname ...)))))) (set (make-local-variable 'acm-backend-path-items) nil)))
  lsp-bridge-complete-other-backends()
  (let ((change-text (buffer-substring-no-properties begin end))) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or (lsp-bridge-call-file-api-p) (lsp-bridge-is-remote-file)) (progn (lsp-bridge-call-file-api "change_file" lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos length change-text (lsp-bridge--position) (acm-char-before) (buffer-name) (acm-get-input-prefix)) (lsp-bridge-try-send-inlay-hint-request))) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text))
  (if lsp-bridge-revert-buffer-flag nil (let ((change-text (buffer-substring-no-properties begin end))) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or (lsp-bridge-call-file-api-p) (lsp-bridge-is-remote-file)) (progn (lsp-bridge-call-file-api "change_file" lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos length change-text (lsp-bridge--position) (acm-char-before) (buffer-name) (acm-get-input-prefix)) (lsp-bridge-try-send-inlay-hint-request))) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text)))
  (progn (if lsp-bridge-revert-buffer-flag nil (let ((change-text (buffer-substring-no-properties begin end))) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or (lsp-bridge-call-file-api-p) (lsp-bridge-is-remote-file)) (progn (lsp-bridge-call-file-api "change_file" lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos length change-text (lsp-bridge--position) (acm-char-before) (buffer-name) (acm-get-input-prefix)) (lsp-bridge-try-send-inlay-hint-request))) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text))))
  (unwind-protect (progn (if lsp-bridge-revert-buffer-flag nil (let ((change-text (buffer-substring-no-properties begin end))) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or (lsp-bridge-call-file-api-p) (lsp-bridge-is-remote-file)) (progn (lsp-bridge-call-file-api "change_file" lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos length change-text (lsp-bridge--position) (acm-char-before) (buffer-name) (acm-get-input-prefix)) (lsp-bridge-try-send-inlay-hint-request))) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text)))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (if lsp-bridge-revert-buffer-flag nil (let ((change-text (buffer-substring-no-properties begin end))) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or (lsp-bridge-call-file-api-p) (lsp-bridge-is-remote-file)) (progn (lsp-bridge-call-file-api "change_file" lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos length change-text ... ... ... ...) (lsp-bridge-try-send-inlay-hint-request))) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text)))) (set-match-data save-match-data-internal 'evaporate)))
  (if (and (equal begin lsp-bridge--before-change-begin-point) (equal end lsp-bridge--before-change-end-point)) nil (let ((save-match-data-internal (match-data))) (unwind-protect (progn (if lsp-bridge-revert-buffer-flag nil (let ((change-text ...)) (setq lsp-bridge-last-change-command (format "%s" this-command)) (lsp-bridge-record-last-change-position) (setq lsp-bridge-last-change-is-delete-command-p (> length 0)) (lsp-bridge-org-babel-monitor-after-change begin end length) (if (or ... ...) (progn ... ...)) (lsp-bridge-complete-other-backends) (lsp-bridge-search-words-update lsp-bridge--before-change-begin-pos lsp-bridge--before-change-end-pos change-text)))) (set-match-data save-match-data-internal 'evaporate))))
  lsp-bridge-monitor-after-change(4 4 1)
  pp-buffer()
  psearch-forward-1((lambda (sexp) (pcase sexp (`(if ,p1 ,p2 ,p3) `(if ,p1 (if (string-match-p ... video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3)))) t)
  psearch-replace(`(if ,p1 ,p2 ,p3) `(if ,p1 (if (string-match-p (regexp-quote "bilibili") video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3))
  (progn (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if (string-match-p (regexp-quote "bilibili") video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3)))
  (if (progn (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if (string-match-p ... video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3))) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))
  (progn (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if ... ... ...) ,p3))) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied"))))
  (unwind-protect (progn (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`(if ... ... ...) '`(if ... ... ...))) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`... '`...)) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (with-current-buffer temp-buffer (unwind-protect (progn (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`... '`...)) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*" t))) (with-current-buffer temp-buffer (unwind-protect (progn (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal ... ...) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point ...))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '... '...)) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (with-temp-buffer (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if ... ... ...) ,p3))) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied"))))
  (let ((func-def (psearch-patch--find-function 'org-media-note--mpv-play-online-video))) (with-temp-buffer (unless (eq 'org-media-note--mpv-play-online-video (nth 1 func-def)) (setcdr func-def (cons 'org-media-note--mpv-play-online-video (nthcdr 2 func-def)))) (print func-def (current-buffer)) (goto-char (point-min)) (down-list) (forward-sexp (+ 3 (if (equal 'lambda (sexp-at-point)) 0 1))) (let ((str "[PATCHED]")) (goto-char (car (bounds-of-thing-at-point 'sexp))) (if (equal (char-after) 34) (progn (forward-char) (insert str)) (insert (format "%S " str)))) (goto-char (point-min)) (if (progn (psearch-replace '`(if ... ... ...) '`(if ... ... ...))) (eval-region (point-min) (point-max)) (signal 'psearch-patch-failed (list 'org-media-note--mpv-play-online-video "PATCH-FORM not applied")))))
  (psearch-patch-define org-media-note--mpv-play-online-video org-media-note--mpv-play-online-video (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if (string-match-p (regexp-quote "bilibili") video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3)))
  (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if (string-match-p (regexp-quote "bilibili") video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3)))
  (lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if (string-match-p ... video-url) (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback") (mpv-start video-url)) ,p3))))()
  eval-after-load(psearch (lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '`(if ,p1 ,p2 ,p3) '`(if ,p1 (if ... ... ...) ,p3)))))
  (progn (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '`... '`...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title (org-media-note--hydra-title) :hint nil) ("File" (("o" org-media-note-mpv-smart-play ... :width 15) ("J" ... "toggle subtitles") ("T" ... "toggle ontop") ("]" ... "increase speed") ("[" ... "decrease speed") ("z" org-media-note-mpv-toggle-speed "reset speed")) "Playback" (("<SPC>" mpv-pause "Play/Pause") ("l" ... ... :width 25) ("g" org-media-note-goto-timestamp "Jump to the timestamp") ("<left>" mpv-seek-backward "Backward 5s") ("<right>" mpv-seek-forward "Forward 5s") ("k" mpv-seek-backward-small "Backward 0.5s") ("j" mpv-seek-forward-small "Forward 0.5s") ("H" ... "Previous subtitle") ("L" ... "Next subtitle")) "Volume" (("+" ... "Up") ("-" ... "Down") ("0" org-media-note-mpv-toggle-volume "toggle") ("m" ... "(un)mute")) "Note" (("i" org-media-note-insert-link "Insert timestamp/loop") ("a" org-media-note-adjust-timestamp-offset "Adjust timestamp") ("s" org-media-note-insert-screenshot "Insert screenshot") ("S" org-media-note-insert-sub-text "Insert Subtitle") ("c" ... "Clip Mp3 of A-B loop" :width 25) ("C" ... "Insert clip of A-B loop" :width 25) ("n" org-return-indent "Insert Org newline")) "Import" (("I p" org-media-note-insert-note-from-pbf "Import from pbf") ("I n" org-media-note-insert-note-from-noted "Import from Noted") ("I t" org-media-note-convert-from-org-timer "Import from org-timer") ("I s" org-media-note-insert-note-from-srt "Import from srt")) "Toggle" (("t m" org-media-note-mode "Auto insert media item" :toggle t) ("t c" org-media-note-toggle-refcite "Use ref key instead of absolute path" :toggle org-media-note-use-refcite-first) ("t p" org-media-note-toggle-pause-after-insertion "Pause media after insert link" :toggle org-media-note-pause-after-insert-link) ("t s" org-media-note-toggle-save-screenshot "Auto save screenshot" :toggle org-media-note-save-screenshot-p) ("t S" org-media-note-toggle-screenshot-with-sub "Screenshot with subtitles" :toggle org-media-note-screenshot-with-sub) ("t t" org-media-note-toggle-timestamp-pattern ...)))))) (run-hooks 'use-package--org-media-note--post-config-hook))
  (if (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (progn (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '... '...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title (org-media-note--hydra-title) :hint nil) ("File" (... ... ... ... ... ...) "Playback" (... ... ... ... ... ... ... ... ...) "Volume" (... ... ... ...) "Note" (... ... ... ... ... ... ...) "Import" (... ... ... ...) "Toggle" (... ... ... ... ... ...))))) (run-hooks 'use-package--org-media-note--post-config-hook)))
  (when (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '`... '`...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title (org-media-note--hydra-title) :hint nil) ("File" (("o" org-media-note-mpv-smart-play ... :width 15) ("J" ... "toggle subtitles") ("T" ... "toggle ontop") ("]" ... "increase speed") ("[" ... "decrease speed") ("z" org-media-note-mpv-toggle-speed "reset speed")) "Playback" (("<SPC>" mpv-pause "Play/Pause") ("l" ... ... :width 25) ("g" org-media-note-goto-timestamp "Jump to the timestamp") ("<left>" mpv-seek-backward "Backward 5s") ("<right>" mpv-seek-forward "Forward 5s") ("k" mpv-seek-backward-small "Backward 0.5s") ("j" mpv-seek-forward-small "Forward 0.5s") ("H" ... "Previous subtitle") ("L" ... "Next subtitle")) "Volume" (("+" ... "Up") ("-" ... "Down") ("0" org-media-note-mpv-toggle-volume "toggle") ("m" ... "(un)mute")) "Note" (("i" org-media-note-insert-link "Insert timestamp/loop") ("a" org-media-note-adjust-timestamp-offset "Adjust timestamp") ("s" org-media-note-insert-screenshot "Insert screenshot") ("S" org-media-note-insert-sub-text "Insert Subtitle") ("c" ... "Clip Mp3 of A-B loop" :width 25) ("C" ... "Insert clip of A-B loop" :width 25) ("n" org-return-indent "Insert Org newline")) "Import" (("I p" org-media-note-insert-note-from-pbf "Import from pbf") ("I n" org-media-note-insert-note-from-noted "Import from Noted") ("I t" org-media-note-convert-from-org-timer "Import from org-timer") ("I s" org-media-note-insert-note-from-srt "Import from srt")) "Toggle" (("t m" org-media-note-mode "Auto insert media item" :toggle t) ("t c" org-media-note-toggle-refcite "Use ref key instead of absolute path" :toggle org-media-note-use-refcite-first) ("t p" org-media-note-toggle-pause-after-insertion "Pause media after insert link" :toggle org-media-note-pause-after-insert-link) ("t s" org-media-note-toggle-save-screenshot "Auto save screenshot" :toggle org-media-note-save-screenshot-p) ("t S" org-media-note-toggle-screenshot-with-sub "Screenshot with subtitles" :toggle org-media-note-screenshot-with-sub) ("t t" org-media-note-toggle-timestamp-pattern ...)))))) (run-hooks 'use-package--org-media-note--post-config-hook))
  (progn (when (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace '... '...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title (org-media-note--hydra-title) :hint nil) ("File" (... ... ... ... ... ...) "Playback" (... ... ... ... ... ... ... ... ...) "Volume" (... ... ... ...) "Note" (... ... ... ... ... ... ...) "Import" (... ... ... ...) "Toggle" (... ... ... ... ... ...))))) (run-hooks 'use-package--org-media-note--post-config-hook)) t)
  (condition-case err (progn (when (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace ... ...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title ... :hint nil) ("File" ... "Playback" ... "Volume" ... "Note" ... "Import" ... "Toggle" ...)))) (run-hooks 'use-package--org-media-note--post-config-hook)) t) ((debug error) (funcall use-package--warning234 :config err)))
  (condition-case-unless-debug err (progn (when (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video (psearch-replace ... ...)))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra (:color red :title ... :hint nil) ("File" ... "Playback" ... "Volume" ... "Note" ... "Import" ... "Toggle" ...)))) (run-hooks 'use-package--org-media-note--post-config-hook)) t) (error (funcall use-package--warning234 :config err)))
  (lambda nil (condition-case-unless-debug err (progn (when (run-hook-with-args-until-failure 'use-package--org-media-note--pre-config-hook) (make-variable-buffer-local 'org-media-note-screenshot-image-dir) (require 'psearch) (eval-after-load 'psearch #'(lambda nil (psearch-patch org-media-note--mpv-play-online-video ...))) (require 'pretty-hydra) (eval-after-load 'pretty-hydra #'(lambda nil (pretty-hydra-define org-media-note-hydra ... ...))) (run-hooks 'use-package--org-media-note--post-config-hook)) t) (error (funcall use-package--warning234 :config err))))()
  eval-after-load-helper("/Users/c/emacs-config/default/elpa/28.3/develop/org-media-note-20231008.173208/org-media-note.elc")
  run-hook-with-args(eval-after-load-helper "/Users/c/emacs-config/default/elpa/28.3/develop/org-media-note-20231008.173208/org-media-note.elc")
  do-after-load-evaluation("/Users/c/emacs-config/default/elpa/28.3/develop/org-media-note-20231008.173208/org-media-note.elc")
  org-media-note-mode()
  run-hooks(after-init-hook delayed-warnings-hook)
  command-line()
  normal-top-level()

在 issues 上查找 wrong-type-argument lsp-bridge-epc-manager nil,其他人是因为 lsp-bridge-python-command 设置错误,导致依赖的包没有安装。我已经确认设置正确。并且包已经安装。lsp-bridge 没有任何错误提示。

看上面的完整错误栈中,有 psearch-replace。

我在其他地方有使用 pseach 包:

(with-eval-after-load 'psearch
      (psearch-patch org-media-note--mpv-play-online-video
        (psearch-replace '`(if ,p1 ,p2 ,p3)
                         '`(if ,p1
                               (if (string-match-p (regexp-quote "bilibili") video-url)
                                   (mpv-start video-url "--referrer=https://www.bilibili.com" "-v" "--no-resume-playback")
                                 (mpv-start video-url))
                               ,p3))))

将该段代码注释后重启,就没有错误。

所以是 psearch-patch,psearch-replace 函数导致该错误? 要如何解决?

为什么错误栈中有 lsp-bridge-monitor-after-change(4 4 1) 是 pseach-patch 会修改 org-media-note--mpv-play-online-video 函数所在的 lisp 文件?

manateelazycat commented 7 months ago

lsp-bridge 不会修改任何 org 文件或函数, 只是因为 org 不太适应 lsp-bridge 这种实时监控 post command 的设计。

在 lsp-bridge.el 中搜索 org-self-insert-command , 把受影响的 org command 加入这些列表, 应该就可以了。

manateelazycat commented 7 months ago

看你的报错堆栈, 感觉更像是 lsp-bridge 的 Python 和 Elisp 文件没有正常加载导致的, 你在启动脚本的时候执行了 psearch 的功能, 但是这时候 lsp-bridge 还没有启动完毕, 所以会报这样的错误。

你应该修改配置, 让 lsp-bridge 先启动完毕再执行别的操作, 或者 psearch 运行的时候不要加载 lsp-bridge.