From 70b8b52e5a4973bf3b44fa5649bf5ed4a511ca4b Mon Sep 17 00:00:00 2001 From: tuong Date: Wed, 16 Jul 2025 02:25:32 +0700 Subject: [PATCH] - commit changes --- custom.el | 45 ++++++++++++++++++++++++++++++++++++++++++++- packages.el | 1 + 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/custom.el b/custom.el index 268b162..1b2b997 100644 --- a/custom.el +++ b/custom.el @@ -5,7 +5,7 @@ ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(package-selected-packages - '(anki-editor docker docker-compose-mode docker-tramp ejc-sql)) + '(anki-editor docker docker-compose-mode docker-tramp ejc-sql fcitx)) '(sql-connection-alist '(("postgres" (sql-product 'postgres) (sql-user "myuser") (sql-database "mydatabase") (sql-server "localhost") (sql-port 5433))))) @@ -77,3 +77,46 @@ :leader (:prefix ("g c a" . "file-checkout") :desc "file checkout from branch" "c" #'magit-file-checkout)) +(defun my/fcitx5-disable () + "Disable fcitx5 input method." + (interactive) + (call-process "fcitx5-remote" nil nil nil "-c")) + +(defun my/fcitx5-enable () + "Enable fcitx5 input method." + (interactive) + (call-process "fcitx5-remote" nil nil nil "-o")) + +(global-set-key (kbd "") 'my/fcitx5-disable) +(global-set-key (kbd "") 'my/fcitx5-enable) +(defun my/org-in-src-block-p () + "Return t if point is inside an Org src block." + (when (derived-mode-p 'org-mode) + (let ((element (org-element-at-point))) + (and (eq (car element) 'src-block) + (<= (org-element-property :begin element) (point)) + (< (point) (org-element-property :end element)))))) + +(defun my/update-fcitx5-based-on-context () + "Enable or disable Fcitx5 based on whether point is in org-mode and not in a src block." + (when (and (bound-and-true-p evil-insert-state-minor-mode) + (derived-mode-p 'org-mode)) + (if (my/org-in-src-block-p) + (call-process "fcitx5-remote" nil nil nil "-c") ; Disable + (call-process "fcitx5-remote" nil nil nil "-o")))) ; Enable + +(defun my/disable-fcitx5-on-esc () + "Always disable Fcitx5 on exiting insert state." + (call-process "fcitx5-remote" nil nil nil "-c")) + +(defun my/start-fcitx5-monitor () + "Start monitoring cursor movement during insert state in org-mode." + (add-hook 'post-command-hook #'my/update-fcitx5-based-on-context nil t)) + +(defun my/stop-fcitx5-monitor () + "Stop monitoring when leaving insert state." + (remove-hook 'post-command-hook #'my/update-fcitx5-based-on-context t)) + +(add-hook 'evil-insert-state-entry-hook #'my/start-fcitx5-monitor) +(add-hook 'evil-insert-state-exit-hook #'my/stop-fcitx5-monitor) +(add-hook 'evil-insert-state-exit-hook #'my/disable-fcitx5-on-esc) diff --git a/packages.el b/packages.el index b3322c7..5490471 100644 --- a/packages.el +++ b/packages.el @@ -47,3 +47,4 @@ ;; (unpin! pinned-package another-pinned-package) ;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) ;; (unpin! t) +(package! anki-editor)