[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/company 28306f64c3 1/2: Fix adjust-boundaries fallback
From: |
ELPA Syncer |
Subject: |
[elpa] externals/company 28306f64c3 1/2: Fix adjust-boundaries fallback in company--multi-backend-adapter |
Date: |
Sun, 20 Apr 2025 21:57:55 -0400 (EDT) |
branch: externals/company
commit 28306f64c3b1358470326932c9d4275a14cef01e
Author: Dmitry Gutov <dmitry@gutov.dev>
Commit: Dmitry Gutov <dmitry@gutov.dev>
Fix adjust-boundaries fallback in company--multi-backend-adapter
Reported at
https://www.reddit.com/r/emacs/comments/1juk4ah/company_is_completing_and_replacing_text_instead/
---
company.el | 20 +++++++++++---------
test/core-tests.el | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 44 insertions(+), 10 deletions(-)
diff --git a/company.el b/company.el
index 1646e1fcd2..1d9ca60075 100644
--- a/company.el
+++ b/company.el
@@ -1408,11 +1408,13 @@ be recomputed when this value changes."
(car backends)))
(entity (company--force-sync backend '(prefix) backend))
(prefix (company--prefix-str entity))
- (suffix (company--suffix-str entity)))
- (setq args (list arg prefix suffix))
+ (suffix (company--suffix-str entity))
+ (company-backend backend))
(or
- (apply backend command args)
- (cons prefix suffix))))))
+ (company-call-backend 'adjust-boundaries arg prefix suffix)
+ (if (company--proper-suffix-p arg prefix suffix)
+ (cons prefix suffix)
+ (cons prefix "")))))))
(`expand-common
(apply #'company--multi-expand-common
backends
@@ -2616,12 +2618,12 @@ For more details see `company-insertion-on-trigger' and
(defsubst company-keep (command)
(and (symbolp command) (get command 'company-keep)))
-(defun company--proper-suffix-p (candidate)
+(defun company--proper-suffix-p (candidate prefix suffix)
(and
(>= (length candidate)
- (+ (length company-prefix)
- (length company-suffix)))
- (string-suffix-p company-suffix candidate
+ (+ (length prefix)
+ (length suffix)))
+ (string-suffix-p suffix candidate
(company-call-backend 'ignore-case))))
(defun company--boundaries (&optional candidate)
@@ -2633,7 +2635,7 @@ For more details see `company-insertion-on-trigger' and
company-prefix company-suffix)
(and
;; Default to replacing the suffix only if the completion ends with it.
- (company--proper-suffix-p candidate)
+ (company--proper-suffix-p candidate company-prefix company-suffix)
(cons company-prefix company-suffix))
(cons company-prefix "")))
diff --git a/test/core-tests.el b/test/core-tests.el
index c33eb3b79c..e525a6770c 100644
--- a/test/core-tests.el
+++ b/test/core-tests.el
@@ -1,6 +1,6 @@
;;; core-tests.el --- company-mode tests -*- lexical-binding: t -*-
-;; Copyright (C) 2015-2018, 2020-2024 Free Software Foundation, Inc.
+;; Copyright (C) 2015-2025 Free Software Foundation, Inc.
;; Author: Dmitry Gutov
@@ -373,6 +373,38 @@
(car (member "a1b" candidates))
"aa" "bcd")))))
+(ert-deftest company-multi-backend-adjust-boundaries-default ()
+ (let* ((one (lambda (command &rest _args)
+ (cl-case command
+ (prefix '("a" "1"))
+ (candidates
+ '("ab1")))))
+ (tri (lambda (command &rest args)
+ (cl-case command
+ (prefix '("aa" "bcd"))
+ (candidates
+ '("aa3bb"
+ "aa3bcd")))))
+ (company-backend (list one tri))
+ (company-point (point))
+ (candidates (company-call-backend 'candidates "a" "")))
+ (should
+ (equal (cons "a" "1")
+ (company-call-backend 'adjust-boundaries
+ (car (member "ab1" candidates))
+ "aa" "bcd")))
+ (should
+ (equal (cons "aa" "")
+ (company-call-backend 'adjust-boundaries
+ (car (member "aa3bb" candidates))
+ "aa" "bcd")))
+ (should
+ (equal (cons "aa" "bcd")
+ (company-call-backend 'adjust-boundaries
+ (car (member "aa3bcd" candidates))
+ "aa" "bcd")))
+ ))
+
(ert-deftest company-multi-backend-combines-expand-common ()
(let* ((one (lambda (command &rest _args)
(cl-case command