[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phpinspect 1f145665ef 083/126: Exclude "return" from re
From: |
ELPA Syncer |
Subject: |
[elpa] externals/phpinspect 1f145665ef 083/126: Exclude "return" from resolvecontext subject + count comma at point for eldoc arg number |
Date: |
Sat, 12 Aug 2023 00:58:46 -0400 (EDT) |
branch: externals/phpinspect
commit 1f145665ef5b0bdc594768307c6ebb1a11a0fc7d
Author: Hugo Thunnissen <devel@hugot.nl>
Commit: Hugo Thunnissen <devel@hugot.nl>
Exclude "return" from resolvecontext subject + count comma at point for
eldoc arg number
---
phpinspect-eldoc.el | 20 +++++++++-----------
phpinspect-resolvecontext.el | 18 ++++++++++++++++--
2 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/phpinspect-eldoc.el b/phpinspect-eldoc.el
index fef7b69d91..bc65c3586d 100644
--- a/phpinspect-eldoc.el
+++ b/phpinspect-eldoc.el
@@ -40,6 +40,7 @@
(catch 'matched
(dolist (strategy phpinspect-eldoc-strategies)
(when (phpinspect-eld-strategy-supports strategy query rctx)
+ (phpinspect--log "Found matching eldoc strategy. Executing...")
(throw 'matched (phpinspect-eld-strategy-execute strategy query
rctx)))))))
(cl-defgeneric phpinspect-eld-strategy-supports (strategy (query
phpinspect-eldoc-query) (context phpinspect--resolvecontext))
@@ -85,20 +86,15 @@ be implemented for return values of
`phpinspect-eld-strategy-execute'")
;; When our subject is inside a list, it is probably an argument of a
;; function/method call, which is what this strategy provides information
for.
(or (phpinspect-list-p parent-token)
-
- ;; When our subject IS a list, we're probably in an empty/incomplete
- ;; argument list.
- (and (= 1 (length (phpinspect--resolvecontext-subject rctx)))
- (phpinspect-list-p
- (car (last (phpinspect--resolvecontext-subject rctx)))))
-
- ;; When the last token in our subject is an incomplete list, we're
- ;; probably at the end of the buffer in an unfinished argument list.
- (phpinspect-incomplete-list-p
+ ;; When the last token in our subject is a list, we're either at the
end
+ ;; of a buffer in an incomplete argument list (no closing paren), or in
+ ;; an empty argument list of a function call.
+ (phpinspect-list-p
(car (last (phpinspect--resolvecontext-subject rctx)))))))
(cl-defmethod phpinspect-eld-strategy-execute
((strat phpinspect-eld-function-args) (q phpinspect-eldoc-query) (rctx
phpinspect--resolvecontext))
+ (phpinspect--log "Executing `phpinspect-eld-function-args' strategy")
(let* ((token-map (phpinspect-buffer-parse-map
(phpinspect-eldoc-query-buffer q)))
(enclosing-token (cadr (phpinspect--resolvecontext-enclosing-tokens
rctx)))
@@ -107,19 +103,21 @@ be implemented for return values of
`phpinspect-eld-strategy-execute'")
(phpinspect-eldoc-query-point q)))
match-result static arg-list arg-pos)
+ (phpinspect--log "Eldoc statement is: %s" statement)
(when enclosing-token
(cond
;; Method call
((setq match-result (phpinspect--match-sequence (last statement 2)
:f #'phpinspect-attrib-p
:f #'phpinspect-list-p))
+ (phpinspect--log "Eldoc context is a method call")
(setq arg-list (car (last match-result))
static (phpinspect-static-attrib-p (car match-result))
arg-pos (seq-reduce
(lambda (count token)
(if (and (phpinspect-comma-p token)
- (> (phpinspect-eldoc-query-point q)
+ (>= (phpinspect-eldoc-query-point q)
(phpinspect-meta-end
(phpinspect-bmap-token-meta token-map
token))))
(+ count 1)
diff --git a/phpinspect-resolvecontext.el b/phpinspect-resolvecontext.el
index c6e4382705..526ad4087b 100644
--- a/phpinspect-resolvecontext.el
+++ b/phpinspect-resolvecontext.el
@@ -55,6 +55,10 @@
(phpinspect-class-p token)
(phpinspect-namespace-p token)))
+(defsubst phpinspect-return-p (token)
+ (and (phpinspect-word-p token)
+ (string= "return" (cadr token))))
+
(defun phpinspect-find-statement-before-point (bmap meta point)
(let ((children (reverse (cdr (phpinspect-meta-token meta)))))
(let ((previous-siblings))
@@ -66,7 +70,8 @@
(if (and (not previous-siblings) (phpinspect-blocklike-p
(phpinspect-meta-token child)))
(progn
(throw 'return (phpinspect-find-statement-before-point
bmap child point)))
- (when (phpinspect-end-of-statement-p (phpinspect-meta-token
child))
+ (when (or (phpinspect-return-p (phpinspect-meta-token child))
+ (phpinspect-end-of-statement-p
(phpinspect-meta-token child)))
(throw 'return previous-siblings))
(push (phpinspect-meta-token child) previous-siblings)))))
previous-siblings))))
@@ -79,7 +84,16 @@
(subject (phpinspect-bmap-last-token-before-point bmap point))
(subject-token)
(siblings))
- (phpinspect--log "Last token before point: %s" subject)
+ (phpinspect--log "Last token before point: %s" (phpinspect-meta-token
subject))
+
+ (let ((next-sibling (car (phpinspect-meta-right-siblings subject))))
+ ;; When the right sibling of the last ending token overlaps point, this
is
+ ;; our actual subject.
+ (when (and next-sibling
+ (setq next-sibling (phpinspect-bmap-token-meta bmap
next-sibling))
+ (phpinspect-meta-overlaps-point next-sibling point))
+ (setq subject next-sibling)))
+
;; Dig down through tokens that can contain statements
(catch 'break
(while (and subject
- [elpa] externals/phpinspect bbc37bea32 007/126: Update README code format and to use setq-local, (continued)
- [elpa] externals/phpinspect bbc37bea32 007/126: Update README code format and to use setq-local, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect f7c2a49b25 008/126: Remove dependency on php-project.el, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 098146bfc5 014/126: Add resolvecontext structure and optimze type resolving process, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect e07e1ed9e6 033/126: WIP: Split code up into separate files, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 6b8db3a318 028/126: Test and fix eldoc function for static methods, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 4c2b3dd601 019/126: Only attempt to return the inside class name when it is non-nil, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect a2ce841555 038/126: WIP: Make index thread block/wakeup when queue is empty/populated, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 56eaa3b36d 046/126: Replace index-thread with more generic and encapsulated worker type, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 0c0c1ca381 059/126: Add test for phpinspect-get-pattern-type-in-block, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect ca8d0972ff 050/126: Implement psr-0 and psr-4 autoloaders, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 1f145665ef 083/126: Exclude "return" from resolvecontext subject + count comma at point for eldoc arg number,
ELPA Syncer <=
- [elpa] externals/phpinspect 0ca527dbbd 070/126: Adapt `phpinspect-purge-parser-cache' to new parser caching approach, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 6627f6f76f 073/126: Remove commented parser code, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect e270729e14 088/126: Implement splay tree for overlay storage/lookup, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 94d5b75455 107/126: Add `phpinspect-pipeline-pause-time', ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect e8f486f095 013/126: Improve codestyle and documentation + add tests for indexation, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect c0786db131 040/126: WIP: Index every possibly required type ahead of time., ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 2e487e7810 039/126: Fix resolving of function argument types, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 2fd575dbf5 044/126: Add drone.yml, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect f013b3c709 036/126: WIP: Support ambiguous typehints, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect ef9a7336cf 049/126: Replace virtual-directory with more general virtual-fs implementation, ELPA Syncer, 2023/08/12