Skip to content

Commit

Permalink
Merge pull request #22 from aki2o/refactor_for_emacs_28
Browse files Browse the repository at this point in the history
Refactor for emacs 29
  • Loading branch information
aki2o authored Jan 7, 2024
2 parents e17fb22 + 2ed50f3 commit 92854bb
Show file tree
Hide file tree
Showing 16 changed files with 324 additions and 538 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.cask
*.elc
*-autoloads.el
3 changes: 2 additions & 1 deletion pophint-e2wm.el
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
(make-obsolete 'pophint-config:set-automatically-when-e2wm-array 'pophint-e2wm:enable "1.1.0")

(defcustom pophint-e2wm:array-quit-immediately t
"Whether do `e2wm:dp-array-goto-prev-pst-command' immediately in array perspective when selection."
"Whether to do `e2wm:dp-array-goto-prev-pst-command' immediately
in array perspective."
:type 'boolean
:group 'pophint)
(make-obsolete 'pophint-config:set-goto-immediately-when-e2wm-array 'pophint-e2wm:array-quit-immediately "1.1.0")
Expand Down
8 changes: 4 additions & 4 deletions pophint-eww.el
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
(defvar pophint-eww--eww-buffer-name "*eww*")

(defun pophint-eww--do-anchor-sentinel (method)
(let ((pophint-eww:use-new-tab (case method
('open nil)
('tab t)
('invert (not pophint-eww:use-new-tab)))))
(let ((pophint-eww:use-new-tab (cl-case method
(open nil)
(tab t)
(invert (not pophint-eww:use-new-tab)))))
(pophint:do-eww-anchor)))

;;;###autoload
Expand Down
59 changes: 29 additions & 30 deletions pophint-isearch.el
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,15 @@
(interactive)
(isearch-yank-internal
(lambda ()
(pophint-region:narrow-or-wide
:narrow-limit (point-at-eol)
:use-pos-tip nil
:action (lambda (hint)
(goto-char (pophint:hint-startpt hint))
(point))))))
(when-let ((pt (pophint-region:narrow-or-wide :narrow-limit (pos-eol)
:use-pos-tip nil
:action 'point)))
(goto-char pt)
(point)))))
(define-obsolete-function-alias 'pophint-config:isearch-yank-region 'pophint-isearch:yank-region "1.1.0")

;;;###autoload
(defmacro pophint-isearch:replace-to-yank-region (command)
(cl-defmacro pophint-isearch:replace-to-yank-region (command)
"Set advice to replace COMMAND with `pophint-isearch:yank-region'."
(declare (indent 0))
`(defadvice ,command (around do-pophint activate)
Expand Down Expand Up @@ -64,7 +63,7 @@


;;;###autoload
(defmacro pophint-isearch:defcommand (command)
(cl-defmacro pophint-isearch:defcommand (command)
(declare (indent 0))
(let ((fnc-sym (intern (format "pophint-isearch:%s" (symbol-name command))))
(fnc-doc (format "Start `%s' after move to selected hint-tip point." (symbol-name command))))
Expand Down Expand Up @@ -104,28 +103,28 @@


(defadvice isearch-exit (before do-pophint disable)
(when pophint-isearch:start-on-isearch-exit-p
(pophint:do :not-highlight t
:not-switch-window t
:source '((shown . "Cand")
(init . (lambda ()
(setq pophint-isearch--overlay-index 0)))
(method . (lambda ()
(pophint--trace "overlay count:[%s] index:[%s]"
(length isearch-lazy-highlight-overlays)
pophint-isearch--overlay-index)
(let* ((idx pophint-isearch--overlay-index)
(ov (when (< idx (length isearch-lazy-highlight-overlays))
(nth idx isearch-lazy-highlight-overlays)))
(startpt (when ov (overlay-start ov)))
(endpt (when ov (overlay-end ov)))
(value (when ov (buffer-substring-no-properties startpt endpt)))
(ret `(:startpt ,startpt :endpt ,endpt :value ,value)))
(when ov (incf pophint-isearch--overlay-index))
(when startpt (goto-char startpt))
ret)))
(action . (lambda (hint)
(goto-char (pophint:hint-startpt hint))))))))
(when-let ((pt (when pophint-isearch:start-on-isearch-exit-p
(pophint:do :not-highlight t
:not-switch-window t
:source '((shown . "Cand")
(init . (lambda ()
(setq pophint-isearch--overlay-index 0)))
(method . (lambda ()
(pophint--trace "overlay count:[%s] index:[%s]"
(length isearch-lazy-highlight-overlays)
pophint-isearch--overlay-index)
(let* ((idx pophint-isearch--overlay-index)
(ov (when (< idx (length isearch-lazy-highlight-overlays))
(nth idx isearch-lazy-highlight-overlays)))
(startpt (when ov (overlay-start ov)))
(endpt (when ov (overlay-end ov)))
(value (when ov (buffer-substring-no-properties startpt endpt)))
(ret `(:startpt ,startpt :endpt ,endpt :value ,value)))
(when ov (cl-incf pophint-isearch--overlay-index))
(when startpt (goto-char startpt))
ret)))
(action . point))))))
(goto-char pt)))

(defadvice anything-c-moccur-from-isearch (around pophint:disable disable)
(let ((exitconf pophint-isearch:start-on-isearch-exit-p))
Expand Down
2 changes: 1 addition & 1 deletion pophint-line.el
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
:description "Part of `font-lock-comment-face' in line"
:source '((shown . "Cmt")
(method . (lambda ()
(loop while (re-search-forward "\\s<+" nil t)
(cl-loop while (re-search-forward "\\s<+" nil t)
for startpt = (progn (skip-syntax-forward " ") (point))
for endpt = (when (and (eq (get-text-property (point) 'face) 'font-lock-comment-face)
(re-search-forward "\\s-*\\(\\s>+\\|$\\)"))
Expand Down
9 changes: 5 additions & 4 deletions pophint-mark.el
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
(make-obsolete 'pophint-config:set-automatically-when-marking 'pophint-mark:enable "1.1.0")

(defcustom pophint-mark:yank-immediately-on-marking-p nil
"Whether yank immediately when select hint-tip after `set-mark-command' or `cua-set-mark'."
"Whether to yank immediately when select hint-tip
after `set-mark-command' or `cua-set-mark'."
:type 'boolean
:group 'pophint)
(make-obsolete 'pophint-config:set-yank-immediately-when-marking 'pophint-mark:yank-immediately-on-marking-p "1.1.0")
Expand All @@ -30,15 +31,15 @@
(goto-char (pophint:hint-startpt hint))
(when pophint-mark:yank-immediately-on-marking-p
(kill-ring-save currpt (point)))))))
(case pophint-mark:direction
(cl-case pophint-mark:direction
(forward
(pophint-region:narrow-or-wide :narrow-limit (point-at-eol)
(pophint-region:narrow-or-wide :narrow-limit (pos-eol)
:use-pos-tip nil
:action-name action-name
:action action))
(backward
(pophint-region:narrow-or-wide :backward-p t
:narrow-limit (point-at-bol)
:narrow-limit (pos-bol)
:use-pos-tip nil
:action-name action-name
:action action))
Expand Down
4 changes: 2 additions & 2 deletions pophint-quote.el
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ If exist the character that not be used for quote, set `pophint-quote:exclude-qu
It's a buffer local variable and list like `pophint-quote:quote-chars'."
:source '((shown . "Quoted")
(method . (lambda ()
(let* ((chars (loop for c in pophint-quote:quote-chars
(let* ((chars (cl-loop for c in pophint-quote:quote-chars
if (not (member c pophint-quote:exclude-quote-chars))
collect c))
(char-re (when chars (regexp-opt chars)))
(re (when char-re (rx-to-string `(and (group (regexp ,char-re)))))))
(while (and (pophint-quote--quoted-point-p (point))
re
(re-search-forward re nil t)))
(loop while (and re (re-search-forward re nil t))
(cl-loop while (and re (re-search-forward re nil t))
for word = (match-string-no-properties 1)
for startpt = (point)
for endpt = (or (when (and (< (point) (point-max))
Expand Down
14 changes: 7 additions & 7 deletions pophint-region.el
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
(pophint:make-hint-with-inch-forward :limit endpt)))

;;;###autoload
(defun* pophint-region:narrow-or-wide (&key backward-p narrow-limit action-name action use-pos-tip)
(cl-defun pophint-region:narrow-or-wide (&key backward-p narrow-limit action-name action use-pos-tip)
(let ((pophint:select-source-method 'nil)
(pophint:switch-source-delay 0)
(pophint-region--user-start (point))
Expand Down Expand Up @@ -45,7 +45,7 @@
"Forward region by selecting hint-tip."
(interactive)
(pophint-region:narrow-or-wide
:narrow-limit (point-at-eol)
:narrow-limit (pos-eol)
:use-pos-tip t
:action (lambda (hint) (goto-char (pophint:hint-startpt hint)))))
(define-obsolete-function-alias 'pophint-config:forward-region 'pophint-region:forward "1.1.0")
Expand All @@ -56,7 +56,7 @@
(interactive)
(pophint-region:narrow-or-wide
:backward-p t
:narrow-limit (point-at-bol)
:narrow-limit (pos-bol)
:use-pos-tip t
:action (lambda (hint) (goto-char (pophint:hint-startpt hint)))))
(define-obsolete-function-alias 'pophint-config:backward-region 'pophint-region:backward "1.1.0")
Expand All @@ -66,7 +66,7 @@
"Kill region by selecting hint-tip."
(interactive)
(pophint-region:narrow-or-wide
:narrow-limit (point-at-eol)
:narrow-limit (pos-eol)
:use-pos-tip t
:action-name "kill-region"
:action (lambda (hint) (kill-region (point) (pophint:hint-startpt hint)))))
Expand All @@ -78,7 +78,7 @@
(interactive)
(pophint-region:narrow-or-wide
:backward-p t
:narrow-limit (point-at-bol)
:narrow-limit (pos-bol)
:use-pos-tip t
:action-name "kill-region"
:action (lambda (hint) (kill-region (pophint:hint-startpt hint) (point)))))
Expand All @@ -89,7 +89,7 @@
"Delete region by selecting hint-tip."
(interactive)
(pophint-region:narrow-or-wide
:narrow-limit (point-at-eol)
:narrow-limit (pos-eol)
:use-pos-tip t
:action-name "delete-region"
:action (lambda (hint) (delete-region (point) (pophint:hint-startpt hint)))))
Expand All @@ -100,7 +100,7 @@
(interactive)
(pophint-region:narrow-or-wide
:backward-p t
:narrow-limit (point-at-bol)
:narrow-limit (pos-bol)
:use-pos-tip t
:action-name "delete-region"
:action (lambda (hint) (delete-region (pophint:hint-startpt hint) (point)))))
Expand Down
6 changes: 3 additions & 3 deletions pophint-slack.el
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
(requires . 1)
(highlight . nil)
(method . (lambda ()
(loop while (not (eobp))
(cl-loop while (not (eobp))
for startpt = (point)
for endpt = (next-property-change startpt)
for face = (get-text-property startpt 'face)
Expand All @@ -35,11 +35,11 @@
;; do async to avoid freeze maybe slack.el trouble
(run-with-idle-timer 0.2 nil
'(lambda (commands)
(loop for command in commands
(cl-loop for command in commands
if (ignore-errors (call-interactively command) t) return t))
(if (string= (pophint:hint-value hint) "(load more message)")
'(slack-room-load-prev-messages)
(case (get-text-property (point) 'face)
(cl-case (get-text-property (point) 'face)
(lui-button-face
'(push-button))
(slack-message-output-header
Expand Down
73 changes: 39 additions & 34 deletions pophint-tags.el
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,48 @@
(defvar pophint-tags--current-mode nil)

;;;###autoload
(defmacro* pophint-tags:advice-command (command &key point-arg-index)
(cl-defmacro pophint-tags:advice-command (command &key (point-arg-index nil))
"Set advice to move the point selected hint-tip before COMMAND.
If COMMAND receives point by interactive, give the argument index as POINT-ARG-INDEX."
If COMMAND receives the point by interactive,
give the argument index as POINT-ARG-INDEX."
(declare (indent 0))
`(defadvice ,command (around do-pophint activate)
(pophint--trace "start as substitute for %s" (symbol-name ',command))
(let ((pophint-tags--current-mode major-mode))
(lexical-let ((currwnd (get-buffer-window))
(currpt (point))
(startpt (progn
;; move to head of current symbol
(skip-syntax-backward "w_")
(point))))
(pophint:do :allwindow t
:direction 'around
:source `((activebufferp . (lambda (b)
(eq pophint-tags--current-mode
(buffer-local-value 'major-mode b))))
,@pophint:source-symbol)
:action-name "TagJump"
:action (lambda (hint)
(lexical-let* ((startwnd (pophint:hint-window hint))
(beforept (window-point startwnd)))
(with-selected-window startwnd
(goto-char (pophint:hint-startpt hint))
(when ,point-arg-index
(ad-set-arg ,point-arg-index (point)))
ad-do-it)
(when (and (window-live-p startwnd)
(eq (window-point startwnd) (pophint:hint-startpt hint)))
;; if jumped into other window, move active window point to before jump
(set-window-point startwnd beforept))
(when (and (window-live-p currwnd)
(eq (window-point currwnd) startpt))
;; if jumped into other window, move active window point to before jump
(set-window-point currwnd currpt)))))))))
(let ((advice-name (intern (format "%s-advice-around-do-pophint" command))))
`(progn
(defun ,advice-name (orig &rest args)
(pophint--trace "start as substitute for %s" (symbol-name ',command))
(let* ((pophint-tags--current-mode major-mode)
(currwnd (get-buffer-window))
(currpt (point))
(startpt (progn
;; move to head of current symbol
(skip-syntax-backward "w_")
(point)))
(hint (pophint:do :allwindow t
:direction 'around
:source `((activebufferp . (lambda (b)
(eq pophint-tags--current-mode
(buffer-local-value 'major-mode b))))
,@pophint:source-symbol)
:action-name "TagJump"
:action 'hint))
(wnd (when hint (pophint:hint-window hint)))
(beforept (when wnd (window-point wnd))))
(when wnd
(with-selected-window wnd
(goto-char (pophint:hint-startpt hint))
(when ,point-arg-index
(setf (nth ,point-arg-index args) (point)))
(apply orig args))
(when (and (window-live-p wnd)
(eq (window-point wnd) (pophint:hint-startpt hint)))
;; if jumped into other window, move active window point to before jump
(set-window-point wnd beforept))
(when (and (window-live-p currwnd)
(eq (window-point currwnd) startpt))
;; if jumped into other window, move active window point to before jump
(set-window-point currwnd currpt)))))
(advice-add ',command :around ',advice-name))))
(define-obsolete-function-alias 'pophint-config:set-tag-jump-command 'pophint-tags:advice-command "1.1.0")


Expand Down
23 changes: 12 additions & 11 deletions pophint-thing.el
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,23 @@
(make-obsolete 'pophint-config:thing-at-point-effect-enabled 'pophint-thing:enable-on-thing-at-point "1.1.0")

;;;###autoload
(defmacro pophint-thing:advice-thing-at-point-function (function)
(cl-defmacro pophint-thing:advice-thing-at-point-function (function)
"Set advice to get thing by hint-tip as substitute for COMMAND."
(declare (indent 0))
`(defadvice ,function (around do-pophint activate)
(if (not pophint-thing:enable-on-thing-at-point)
ad-do-it
(pophint--trace "start as substitute for %s" (symbol-name ',function))
(setq ad-return-value
(pophint:do-flexibly :action-name "SelectThing"
:action (lambda (hint)
(pophint:hint-value hint)))))))
(let ((advice-name (intern (format "%s-advice-filter-return-do-pophint" function))))
`(progn
(defun ,advice-name (value)
(if (not pophint-thing:enable-on-thing-at-point)
value
(pophint--trace "start as substitute for %s" (symbol-name ',function))
(pophint:do-flexibly :action-name "SelectThing" :action 'value)))
(advice-add ',function :filter-return ',advice-name))))
(define-obsolete-function-alias 'pophint-config:set-thing-at-point-function 'pophint-thing:advice-thing-at-point-function "1.1.0")

;;;###autoload
(defmacro pophint-thing:defcommand-noadvice (command)
"Define a command named `pophint-thing:just-COMMAND' to do COMMAND without `pophint-thing:enable-on-thing-at-point'."
(cl-defmacro pophint-thing:defcommand-noadvice (command)
"Define a command named `pophint-thing:just-COMMAND' to do COMMAND
without `pophint-thing:enable-on-thing-at-point'."
(declare (indent 0))
(let ((func-sym (intern (format "pophint-thing:just-%s" (symbol-name command))))
(action-name (mapconcat 'identity
Expand Down
Loading

0 comments on commit 92854bb

Please sign in to comment.