emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/company d714352 1/6: Initial support for icons in compa


From: ELPA Syncer
Subject: [elpa] externals/company d714352 1/6: Initial support for icons in company-mode core
Date: Fri, 26 Mar 2021 21:57:08 -0400 (EDT)

branch: externals/company
commit d71435226298701286c7c4c8b8a03117daa7f622
Author: Ivan Yonchovski <yyoncho@gmail.com>
Commit: Ivan Yonchovski <yyoncho@gmail.com>

    Initial support for icons in company-mode core
    
    - added new defcustom `company-format-margin-function` which can be used to 
plug
    icon provider function
    
    - added icons from vscode dark and light themes and corresponding functions
    
    - extended company's protocol with `candidate-kind` backend call.
---
 NEWS.md                                         |   4 +
 company-capf.el                                 |   4 +
 company.el                                      | 110 ++++++-
 icons/LICENSE                                   | 395 ++++++++++++++++++++++++
 icons/vscode-dark/symbol-array.png              | Bin 0 -> 386 bytes
 icons/vscode-dark/symbol-boolean.png            | Bin 0 -> 563 bytes
 icons/vscode-dark/symbol-class.png              | Bin 0 -> 746 bytes
 icons/vscode-dark/symbol-color.png              | Bin 0 -> 1072 bytes
 icons/vscode-dark/symbol-constant.png           | Bin 0 -> 334 bytes
 icons/vscode-dark/symbol-enumerator-member.png  | Bin 0 -> 548 bytes
 icons/vscode-dark/symbol-enumerator.png         | Bin 0 -> 592 bytes
 icons/vscode-dark/symbol-event.png              | Bin 0 -> 781 bytes
 icons/vscode-dark/symbol-field.png              | Bin 0 -> 767 bytes
 icons/vscode-dark/symbol-interface.png          | Bin 0 -> 550 bytes
 icons/vscode-dark/symbol-key.png                | Bin 0 -> 638 bytes
 icons/vscode-dark/symbol-keyword.png            | Bin 0 -> 477 bytes
 icons/vscode-dark/symbol-method.png             | Bin 0 -> 791 bytes
 icons/vscode-dark/symbol-misc.png               | Bin 0 -> 728 bytes
 icons/vscode-dark/symbol-namespace.png          | Bin 0 -> 583 bytes
 icons/vscode-dark/symbol-numeric.png            | Bin 0 -> 491 bytes
 icons/vscode-dark/symbol-operator.png           | Bin 0 -> 655 bytes
 icons/vscode-dark/symbol-parameter.png          | Bin 0 -> 503 bytes
 icons/vscode-dark/symbol-property.png           | Bin 0 -> 924 bytes
 icons/vscode-dark/symbol-ruler.png              | Bin 0 -> 398 bytes
 icons/vscode-dark/symbol-snippet.png            | Bin 0 -> 340 bytes
 icons/vscode-dark/symbol-string.png             | Bin 0 -> 557 bytes
 icons/vscode-dark/symbol-structure.png          | Bin 0 -> 536 bytes
 icons/vscode-dark/symbol-variable.png           | Bin 0 -> 630 bytes
 icons/vscode-light/symbol-array.png             | Bin 0 -> 382 bytes
 icons/vscode-light/symbol-boolean.png           | Bin 0 -> 571 bytes
 icons/vscode-light/symbol-class.png             | Bin 0 -> 687 bytes
 icons/vscode-light/symbol-color.png             | Bin 0 -> 1058 bytes
 icons/vscode-light/symbol-constant.png          | Bin 0 -> 362 bytes
 icons/vscode-light/symbol-enumerator-member.png | Bin 0 -> 536 bytes
 icons/vscode-light/symbol-enumerator.png        | Bin 0 -> 554 bytes
 icons/vscode-light/symbol-event.png             | Bin 0 -> 728 bytes
 icons/vscode-light/symbol-field.png             | Bin 0 -> 740 bytes
 icons/vscode-light/symbol-interface.png         | Bin 0 -> 540 bytes
 icons/vscode-light/symbol-key.png               | Bin 0 -> 652 bytes
 icons/vscode-light/symbol-keyword.png           | Bin 0 -> 449 bytes
 icons/vscode-light/symbol-method.png            | Bin 0 -> 823 bytes
 icons/vscode-light/symbol-misc.png              | Bin 0 -> 729 bytes
 icons/vscode-light/symbol-namespace.png         | Bin 0 -> 597 bytes
 icons/vscode-light/symbol-numeric.png           | Bin 0 -> 464 bytes
 icons/vscode-light/symbol-operator.png          | Bin 0 -> 687 bytes
 icons/vscode-light/symbol-parameter.png         | Bin 0 -> 500 bytes
 icons/vscode-light/symbol-property.png          | Bin 0 -> 905 bytes
 icons/vscode-light/symbol-ruler.png             | Bin 0 -> 432 bytes
 icons/vscode-light/symbol-snippet.png           | Bin 0 -> 343 bytes
 icons/vscode-light/symbol-string.png            | Bin 0 -> 563 bytes
 icons/vscode-light/symbol-structure.png         | Bin 0 -> 522 bytes
 icons/vscode-light/symbol-variable.png          | Bin 0 -> 633 bytes
 test/frontends-tests.el                         |  15 +
 53 files changed, 522 insertions(+), 6 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 30f979c..0a596fc 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2,6 +2,10 @@
 
 ## Next
 
+* Added support for icons.
+  ([#1070](https://github.com/company-mode/company-mode/pull/1070)).
+  `company-format-margin-function` has been added.
+  Added new backend command `kind`.
 * New user option `company-abort-on-unique-match`
   ([#1046](https://github.com/company-mode/company-mode/issues/1046)).
 * `company-select-mouse` is a new frontend action
diff --git a/company-capf.el b/company-capf.el
index 7d34f9c..496cd57 100644
--- a/company-capf.el
+++ b/company-capf.el
@@ -151,6 +151,10 @@ so we can't just use the preceding variable instead.")
      (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data)
                          :annotation-function)))
        (when f (funcall f arg))))
+    (`kind
+     (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data)
+                         :company-kind)))
+       (when f (funcall f arg))))
     (`require-match
      (plist-get (nthcdr 4 (company--capf-data)) :company-require-match))
     (`init nil)      ;Don't bother: plenty of other ways to initialize the 
code.
diff --git a/company.el b/company.el
index 495cde1..7fc0770 100644
--- a/company.el
+++ b/company.el
@@ -64,6 +64,7 @@
 (require 'cl-lib)
 (require 'newcomment)
 (require 'pcase)
+(require 'find-func)
 
 ;;; Compatibility
 (eval-and-compile
@@ -442,6 +443,10 @@ completion.
 into the buffer.  The second argument is the candidate.  Can be used to
 modify it, e.g. to expand a snippet.
 
+`kind': The second argument is a completion candidate.  Return a symbol
+describing the kind of the candidate. Refer `company-vscode-icons-mapping' for
+the possible values.
+
 The backend should return nil for all commands it does not support or
 does not know about.  It should also be callable interactively and use
 `company-begin-backend' to start itself in that case.
@@ -1390,6 +1395,90 @@ end of the match."
           (const :tag "Prefer closest in any direction"
                  company-occurrence-prefer-any-closest)))
 
+(defvar company-vscode-icons-mapping
+  '((array . "symbol-array.png")
+    (boolean . "symbol-boolean.png")
+    (class . "symbol-class.png")
+    (color . "symbol-color.png")
+    (constant . "symbol-constant.png")
+    (enum-member . "symbol-enumerator-member.png")
+    (enum . "symbol-enumerator.png")
+    (event . "symbol-event.png")
+    (field . "symbol-field.png")
+    (interface . "symbol-interface.png")
+    (key . "symbol-key.png")
+    (keyword . "symbol-keyword.png")
+    (method . "symbol-method.png")
+    (function . "symbol-method.png")
+    (misc . "symbol-misc.png")
+    (module . "symbol-namespace.png")
+    (numeric . "symbol-numeric.png")
+    (operator . "symbol-operator.png")
+    (parameter . "symbol-parameter.png")
+    (property . "symbol-property.png")
+    (ruler . "symbol-ruler.png")
+    (snippet . "symbol-snippet.png")
+    (string . "symbol-string.png")
+    (struct . "symbol-structure.png")
+    (variable . "symbol-variable.png")))
+
+(defconst company-package-root
+  (file-name-as-directory
+   (expand-file-name "icons"
+                     (file-name-directory (find-library-name "company")))))
+
+(defcustom company-icon-size 15
+  "Default icons size."
+  :type 'integer)
+
+(defun company--icons-margin-function (icon-mapping root-dir candidate 
selected)
+  (if-let ((candidate candidate)
+           (kind (company-call-backend 'kind candidate))
+           (icon-file (alist-get kind icon-mapping)))
+      (let* ((bkg (face-attribute (if selected
+                                      'company-tooltip-selection
+                                    'company-tooltip)
+                                  :background))
+             (spec (list 'image
+                         :file (expand-file-name icon-file root-dir)
+                         :type 'png
+                         :width company-icon-size
+                         :height company-icon-size
+                         :ascent 'center
+                         :background (unless (eq bkg 'unspecified)
+                                       bkg))))
+        (concat
+         (propertize " " 'display spec)
+         (propertize " " 'display `(space . (:width ,(- 2 (car (image-size 
spec))))))))
+    "  "))
+
+(defun company-vscode-dark-icons-margin-function (candidate selected)
+  "Margin function which returns icons from vscode's dark theme."
+  (company--icons-margin-function company-vscode-icons-mapping
+                                  (expand-file-name "vscode-dark" 
company-package-root)
+                                  candidate
+                                  selected))
+
+(defun company-vscode-light-icons-margin-function (candidate selected)
+  "Margin function which returns icons from vscode's light theme."
+  (company--icons-margin-function company-vscode-icons-mapping
+                                  (expand-file-name "vscode-light" 
company-package-root)
+                                  candidate
+                                  selected))
+
+(defcustom company-format-margin-function nil
+  "Function to format the margin.
+It accepts 2 params `candidate' and `selected' and can be used for
+inserting prefix/image before the completion items. Typically, the
+functions call the backends with `kind' and then insert the appropriate
+image for the returned kind image. Function is called with (nil nil) to get
+the default margin."
+  :type '(choice
+          (const :tag "Disabled" nil)
+          (const :tag "VScode dark icons theme" 
company-vscode-dark-icons-margin-function)
+          (const :tag "VScode light icons theme" 
company-vscode-light-icons-margin-function)
+          (function :tag "Custom icon function.")))
+
 (defun company-occurrence-prefer-closest-above (pos match-beg match-end)
   "Give priority to the matches above point, then those below point."
   (if (< match-beg pos)
@@ -2781,7 +2870,10 @@ If SHOW-VERSION is non-nil, show the version in the echo 
area."
                              face)))))
 
 (defun company--replacement-string (lines old column nl &optional align-top)
-  (cl-decf column company-tooltip-margin)
+  (cl-decf column (or (when company-format-margin-function
+                        (when-let (margin (funcall 
company-format-margin-function nil nil))
+                          (length margin)))
+                      company-tooltip-margin))
 
   (when (and align-top company-tooltip-flip-when-above)
     (setq lines (reverse lines)))
@@ -2878,9 +2970,13 @@ If SHOW-VERSION is non-nil, show the version in the echo 
area."
     (cl-decf window-width (* 2 company-tooltip-margin))
     (when scrollbar-bounds (cl-decf window-width))
 
-    (dotimes (_ len)
+    (dotimes (i len)
       (let* ((value (pop lines-copy))
-             (annotation (company-call-backend 'annotation value)))
+             (annotation (company-call-backend 'annotation value))
+             (candidate-prefix (when company-format-margin-function
+                                 (funcall company-format-margin-function
+                                          value
+                                          (equal selection i)))))
         (setq value (company--clean-string value))
         (when annotation
           (setq annotation (company--clean-string annotation))
@@ -2888,8 +2984,9 @@ If SHOW-VERSION is non-nil, show the version in the echo 
area."
             ;; `lisp-completion-at-point' adds a space.
             ;; FIXME: Use `string-trim' in Emacs 24.4
             (setq annotation (comment-string-strip annotation t nil))))
-        (push (cons value annotation) items)
+        (push (list value annotation candidate-prefix) items)
         (setq width (max (+ (length value)
+                            (length candidate-prefix)
                             (if (and annotation 
company-tooltip-align-annotations)
                                 (1+ (length annotation))
                               (length annotation)))
@@ -2915,9 +3012,10 @@ If SHOW-VERSION is non-nil, show the version in the echo 
area."
       (dotimes (i len)
         (let* ((item (pop items))
                (str (car item))
-               (annotation (cdr item))
+               (annotation (cadr item))
+               (candidate-prefix (caddr item))
                (margin (company-space-string company-tooltip-margin))
-               (left margin)
+               (left (or candidate-prefix margin))
                (right margin)
                (width width))
           (when (< numbered 10)
diff --git a/icons/LICENSE b/icons/LICENSE
new file mode 100644
index 0000000..52bd145
--- /dev/null
+++ b/icons/LICENSE
@@ -0,0 +1,395 @@
+Attribution 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+     Considerations for licensors: Our public licenses are
+     intended for use by those authorized to give the public
+     permission to use material in ways otherwise restricted by
+     copyright and certain other rights. Our licenses are
+     irrevocable. Licensors should read and understand the terms
+     and conditions of the license they choose before applying it.
+     Licensors should also secure all rights necessary before
+     applying our licenses so that the public can reuse the
+     material as expected. Licensors should clearly mark any
+     material not subject to the license. This includes other CC-
+     licensed material, or material used under an exception or
+     limitation to copyright. More considerations for licensors:
+       wiki.creativecommons.org/Considerations_for_licensors
+
+     Considerations for the public: By using one of our public
+     licenses, a licensor grants the public permission to use the
+     licensed material under specified terms and conditions. If
+     the licensor's permission is not necessary for any reason--for
+     example, because of any applicable exception or limitation to
+     copyright--then that use is not regulated by the license. Our
+     licenses grant only permissions under copyright and certain
+     other rights that a licensor has authority to grant. Use of
+     the licensed material may still be restricted for other
+     reasons, including because others have copyright or other
+     rights in the material. A licensor may make special requests,
+     such as asking that all changes be marked or described.
+     Although not required by our licenses, you are encouraged to
+     respect those requests where reasonable. More_considerations
+     for the public:
+       wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution 4.0 International Public License ("Public License"). To the
+extent this Public License may be interpreted as a contract, You are
+granted the Licensed Rights in consideration of Your acceptance of
+these terms and conditions, and the Licensor grants You such rights in
+consideration of benefits the Licensor receives from making the
+Licensed Material available under these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+  a. Adapted Material means material subject to Copyright and Similar
+     Rights that is derived from or based upon the Licensed Material
+     and in which the Licensed Material is translated, altered,
+     arranged, transformed, or otherwise modified in a manner requiring
+     permission under the Copyright and Similar Rights held by the
+     Licensor. For purposes of this Public License, where the Licensed
+     Material is a musical work, performance, or sound recording,
+     Adapted Material is always produced where the Licensed Material is
+     synched in timed relation with a moving image.
+
+  b. Adapter's License means the license You apply to Your Copyright
+     and Similar Rights in Your contributions to Adapted Material in
+     accordance with the terms and conditions of this Public License.
+
+  c. Copyright and Similar Rights means copyright and/or similar rights
+     closely related to copyright including, without limitation,
+     performance, broadcast, sound recording, and Sui Generis Database
+     Rights, without regard to how the rights are labeled or
+     categorized. For purposes of this Public License, the rights
+     specified in Section 2(b)(1)-(2) are not Copyright and Similar
+     Rights.
+
+  d. Effective Technological Measures means those measures that, in the
+     absence of proper authority, may not be circumvented under laws
+     fulfilling obligations under Article 11 of the WIPO Copyright
+     Treaty adopted on December 20, 1996, and/or similar international
+     agreements.
+
+  e. Exceptions and Limitations means fair use, fair dealing, and/or
+     any other exception or limitation to Copyright and Similar Rights
+     that applies to Your use of the Licensed Material.
+
+  f. Licensed Material means the artistic or literary work, database,
+     or other material to which the Licensor applied this Public
+     License.
+
+  g. Licensed Rights means the rights granted to You subject to the
+     terms and conditions of this Public License, which are limited to
+     all Copyright and Similar Rights that apply to Your use of the
+     Licensed Material and that the Licensor has authority to license.
+
+  h. Licensor means the individual(s) or entity(ies) granting rights
+     under this Public License.
+
+  i. Share means to provide material to the public by any means or
+     process that requires permission under the Licensed Rights, such
+     as reproduction, public display, public performance, distribution,
+     dissemination, communication, or importation, and to make material
+     available to the public including in ways that members of the
+     public may access the material from a place and at a time
+     individually chosen by them.
+
+  j. Sui Generis Database Rights means rights other than copyright
+     resulting from Directive 96/9/EC of the European Parliament and of
+     the Council of 11 March 1996 on the legal protection of databases,
+     as amended and/or succeeded, as well as other essentially
+     equivalent rights anywhere in the world.
+
+  k. You means the individual or entity exercising the Licensed Rights
+     under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+  a. License grant.
+
+       1. Subject to the terms and conditions of this Public License,
+          the Licensor hereby grants You a worldwide, royalty-free,
+          non-sublicensable, non-exclusive, irrevocable license to
+          exercise the Licensed Rights in the Licensed Material to:
+
+            a. reproduce and Share the Licensed Material, in whole or
+               in part; and
+
+            b. produce, reproduce, and Share Adapted Material.
+
+       2. Exceptions and Limitations. For the avoidance of doubt, where
+          Exceptions and Limitations apply to Your use, this Public
+          License does not apply, and You do not need to comply with
+          its terms and conditions.
+
+       3. Term. The term of this Public License is specified in Section
+          6(a).
+
+       4. Media and formats; technical modifications allowed. The
+          Licensor authorizes You to exercise the Licensed Rights in
+          all media and formats whether now known or hereafter created,
+          and to make technical modifications necessary to do so. The
+          Licensor waives and/or agrees not to assert any right or
+          authority to forbid You from making technical modifications
+          necessary to exercise the Licensed Rights, including
+          technical modifications necessary to circumvent Effective
+          Technological Measures. For purposes of this Public License,
+          simply making modifications authorized by this Section 2(a)
+          (4) never produces Adapted Material.
+
+       5. Downstream recipients.
+
+            a. Offer from the Licensor -- Licensed Material. Every
+               recipient of the Licensed Material automatically
+               receives an offer from the Licensor to exercise the
+               Licensed Rights under the terms and conditions of this
+               Public License.
+
+            b. No downstream restrictions. You may not offer or impose
+               any additional or different terms or conditions on, or
+               apply any Effective Technological Measures to, the
+               Licensed Material if doing so restricts exercise of the
+               Licensed Rights by any recipient of the Licensed
+               Material.
+
+       6. No endorsement. Nothing in this Public License constitutes or
+          may be construed as permission to assert or imply that You
+          are, or that Your use of the Licensed Material is, connected
+          with, or sponsored, endorsed, or granted official status by,
+          the Licensor or others designated to receive attribution as
+          provided in Section 3(a)(1)(A)(i).
+
+  b. Other rights.
+
+       1. Moral rights, such as the right of integrity, are not
+          licensed under this Public License, nor are publicity,
+          privacy, and/or other similar personality rights; however, to
+          the extent possible, the Licensor waives and/or agrees not to
+          assert any such rights held by the Licensor to the limited
+          extent necessary to allow You to exercise the Licensed
+          Rights, but not otherwise.
+
+       2. Patent and trademark rights are not licensed under this
+          Public License.
+
+       3. To the extent possible, the Licensor waives any right to
+          collect royalties from You for the exercise of the Licensed
+          Rights, whether directly or through a collecting society
+          under any voluntary or waivable statutory or compulsory
+          licensing scheme. In all other cases the Licensor expressly
+          reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+  a. Attribution.
+
+       1. If You Share the Licensed Material (including in modified
+          form), You must:
+
+            a. retain the following if it is supplied by the Licensor
+               with the Licensed Material:
+
+                 i. identification of the creator(s) of the Licensed
+                    Material and any others designated to receive
+                    attribution, in any reasonable manner requested by
+                    the Licensor (including by pseudonym if
+                    designated);
+
+                ii. a copyright notice;
+
+               iii. a notice that refers to this Public License;
+
+                iv. a notice that refers to the disclaimer of
+                    warranties;
+
+                 v. a URI or hyperlink to the Licensed Material to the
+                    extent reasonably practicable;
+
+            b. indicate if You modified the Licensed Material and
+               retain an indication of any previous modifications; and
+
+            c. indicate the Licensed Material is licensed under this
+               Public License, and include the text of, or the URI or
+               hyperlink to, this Public License.
+
+       2. You may satisfy the conditions in Section 3(a)(1) in any
+          reasonable manner based on the medium, means, and context in
+          which You Share the Licensed Material. For example, it may be
+          reasonable to satisfy the conditions by providing a URI or
+          hyperlink to a resource that includes the required
+          information.
+
+       3. If requested by the Licensor, You must remove any of the
+          information required by Section 3(a)(1)(A) to the extent
+          reasonably practicable.
+
+       4. If You Share Adapted Material You produce, the Adapter's
+          License You apply must not prevent recipients of the Adapted
+          Material from complying with this Public License.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+     to extract, reuse, reproduce, and Share all or a substantial
+     portion of the contents of the database;
+
+  b. if You include all or a substantial portion of the database
+     contents in a database in which You have Sui Generis Database
+     Rights, then the database in which You have Sui Generis Database
+     Rights (but not its individual contents) is Adapted Material; and
+
+  c. You must comply with the conditions in Section 3(a) if You Share
+     all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+  c. The disclaimer of warranties and limitation of liability provided
+     above shall be interpreted in a manner that, to the extent
+     possible, most closely approximates an absolute disclaimer and
+     waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+  a. This Public License applies for the term of the Copyright and
+     Similar Rights licensed here. However, if You fail to comply with
+     this Public License, then Your rights under this Public License
+     terminate automatically.
+
+  b. Where Your right to use the Licensed Material has terminated under
+     Section 6(a), it reinstates:
+
+       1. automatically as of the date the violation is cured, provided
+          it is cured within 30 days of Your discovery of the
+          violation; or
+
+       2. upon express reinstatement by the Licensor.
+
+     For the avoidance of doubt, this Section 6(b) does not affect any
+     right the Licensor may have to seek remedies for Your violations
+     of this Public License.
+
+  c. For the avoidance of doubt, the Licensor may also offer the
+     Licensed Material under separate terms or conditions or stop
+     distributing the Licensed Material at any time; however, doing so
+     will not terminate this Public License.
+
+  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+     License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+  a. The Licensor shall not be bound by any additional or different
+     terms or conditions communicated by You unless expressly agreed.
+
+  b. Any arrangements, understandings, or agreements regarding the
+     Licensed Material not stated herein are separate from and
+     independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+  a. For the avoidance of doubt, this Public License does not, and
+     shall not be interpreted to, reduce, limit, restrict, or impose
+     conditions on any use of the Licensed Material that could lawfully
+     be made without permission under this Public License.
+
+  b. To the extent possible, if any provision of this Public License is
+     deemed unenforceable, it shall be automatically reformed to the
+     minimum extent necessary to make it enforceable. If the provision
+     cannot be reformed, it shall be severed from this Public License
+     without affecting the enforceability of the remaining terms and
+     conditions.
+
+  c. No term or condition of this Public License will be waived and no
+     failure to comply consented to unless expressly agreed to by the
+     Licensor.
+
+  d. Nothing in this Public License constitutes or may be interpreted
+     as a limitation upon, or waiver of, any privileges and immunities
+     that apply to the Licensor or You, including from the legal
+     processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
\ No newline at end of file
diff --git a/icons/vscode-dark/symbol-array.png 
b/icons/vscode-dark/symbol-array.png
new file mode 100644
index 0000000..590b3f9
Binary files /dev/null and b/icons/vscode-dark/symbol-array.png differ
diff --git a/icons/vscode-dark/symbol-boolean.png 
b/icons/vscode-dark/symbol-boolean.png
new file mode 100644
index 0000000..bb778f6
Binary files /dev/null and b/icons/vscode-dark/symbol-boolean.png differ
diff --git a/icons/vscode-dark/symbol-class.png 
b/icons/vscode-dark/symbol-class.png
new file mode 100644
index 0000000..03bdec3
Binary files /dev/null and b/icons/vscode-dark/symbol-class.png differ
diff --git a/icons/vscode-dark/symbol-color.png 
b/icons/vscode-dark/symbol-color.png
new file mode 100644
index 0000000..76f566e
Binary files /dev/null and b/icons/vscode-dark/symbol-color.png differ
diff --git a/icons/vscode-dark/symbol-constant.png 
b/icons/vscode-dark/symbol-constant.png
new file mode 100644
index 0000000..e810490
Binary files /dev/null and b/icons/vscode-dark/symbol-constant.png differ
diff --git a/icons/vscode-dark/symbol-enumerator-member.png 
b/icons/vscode-dark/symbol-enumerator-member.png
new file mode 100644
index 0000000..d2f81b3
Binary files /dev/null and b/icons/vscode-dark/symbol-enumerator-member.png 
differ
diff --git a/icons/vscode-dark/symbol-enumerator.png 
b/icons/vscode-dark/symbol-enumerator.png
new file mode 100644
index 0000000..01233e0
Binary files /dev/null and b/icons/vscode-dark/symbol-enumerator.png differ
diff --git a/icons/vscode-dark/symbol-event.png 
b/icons/vscode-dark/symbol-event.png
new file mode 100644
index 0000000..384025e
Binary files /dev/null and b/icons/vscode-dark/symbol-event.png differ
diff --git a/icons/vscode-dark/symbol-field.png 
b/icons/vscode-dark/symbol-field.png
new file mode 100644
index 0000000..3c6e408
Binary files /dev/null and b/icons/vscode-dark/symbol-field.png differ
diff --git a/icons/vscode-dark/symbol-interface.png 
b/icons/vscode-dark/symbol-interface.png
new file mode 100644
index 0000000..1a0f0c3
Binary files /dev/null and b/icons/vscode-dark/symbol-interface.png differ
diff --git a/icons/vscode-dark/symbol-key.png b/icons/vscode-dark/symbol-key.png
new file mode 100644
index 0000000..0f35d80
Binary files /dev/null and b/icons/vscode-dark/symbol-key.png differ
diff --git a/icons/vscode-dark/symbol-keyword.png 
b/icons/vscode-dark/symbol-keyword.png
new file mode 100644
index 0000000..30c76bd
Binary files /dev/null and b/icons/vscode-dark/symbol-keyword.png differ
diff --git a/icons/vscode-dark/symbol-method.png 
b/icons/vscode-dark/symbol-method.png
new file mode 100644
index 0000000..24d9616
Binary files /dev/null and b/icons/vscode-dark/symbol-method.png differ
diff --git a/icons/vscode-dark/symbol-misc.png 
b/icons/vscode-dark/symbol-misc.png
new file mode 100644
index 0000000..881b04c
Binary files /dev/null and b/icons/vscode-dark/symbol-misc.png differ
diff --git a/icons/vscode-dark/symbol-namespace.png 
b/icons/vscode-dark/symbol-namespace.png
new file mode 100644
index 0000000..978b133
Binary files /dev/null and b/icons/vscode-dark/symbol-namespace.png differ
diff --git a/icons/vscode-dark/symbol-numeric.png 
b/icons/vscode-dark/symbol-numeric.png
new file mode 100644
index 0000000..5803075
Binary files /dev/null and b/icons/vscode-dark/symbol-numeric.png differ
diff --git a/icons/vscode-dark/symbol-operator.png 
b/icons/vscode-dark/symbol-operator.png
new file mode 100644
index 0000000..2dd24aa
Binary files /dev/null and b/icons/vscode-dark/symbol-operator.png differ
diff --git a/icons/vscode-dark/symbol-parameter.png 
b/icons/vscode-dark/symbol-parameter.png
new file mode 100644
index 0000000..ca7d9db
Binary files /dev/null and b/icons/vscode-dark/symbol-parameter.png differ
diff --git a/icons/vscode-dark/symbol-property.png 
b/icons/vscode-dark/symbol-property.png
new file mode 100644
index 0000000..1d40bab
Binary files /dev/null and b/icons/vscode-dark/symbol-property.png differ
diff --git a/icons/vscode-dark/symbol-ruler.png 
b/icons/vscode-dark/symbol-ruler.png
new file mode 100644
index 0000000..edda64a
Binary files /dev/null and b/icons/vscode-dark/symbol-ruler.png differ
diff --git a/icons/vscode-dark/symbol-snippet.png 
b/icons/vscode-dark/symbol-snippet.png
new file mode 100644
index 0000000..96f9577
Binary files /dev/null and b/icons/vscode-dark/symbol-snippet.png differ
diff --git a/icons/vscode-dark/symbol-string.png 
b/icons/vscode-dark/symbol-string.png
new file mode 100644
index 0000000..022b9c9
Binary files /dev/null and b/icons/vscode-dark/symbol-string.png differ
diff --git a/icons/vscode-dark/symbol-structure.png 
b/icons/vscode-dark/symbol-structure.png
new file mode 100644
index 0000000..e2943bf
Binary files /dev/null and b/icons/vscode-dark/symbol-structure.png differ
diff --git a/icons/vscode-dark/symbol-variable.png 
b/icons/vscode-dark/symbol-variable.png
new file mode 100644
index 0000000..bcf54d8
Binary files /dev/null and b/icons/vscode-dark/symbol-variable.png differ
diff --git a/icons/vscode-light/symbol-array.png 
b/icons/vscode-light/symbol-array.png
new file mode 100644
index 0000000..9aa5352
Binary files /dev/null and b/icons/vscode-light/symbol-array.png differ
diff --git a/icons/vscode-light/symbol-boolean.png 
b/icons/vscode-light/symbol-boolean.png
new file mode 100644
index 0000000..bd5a118
Binary files /dev/null and b/icons/vscode-light/symbol-boolean.png differ
diff --git a/icons/vscode-light/symbol-class.png 
b/icons/vscode-light/symbol-class.png
new file mode 100644
index 0000000..b7eb6ea
Binary files /dev/null and b/icons/vscode-light/symbol-class.png differ
diff --git a/icons/vscode-light/symbol-color.png 
b/icons/vscode-light/symbol-color.png
new file mode 100644
index 0000000..811a8b4
Binary files /dev/null and b/icons/vscode-light/symbol-color.png differ
diff --git a/icons/vscode-light/symbol-constant.png 
b/icons/vscode-light/symbol-constant.png
new file mode 100644
index 0000000..b7213a4
Binary files /dev/null and b/icons/vscode-light/symbol-constant.png differ
diff --git a/icons/vscode-light/symbol-enumerator-member.png 
b/icons/vscode-light/symbol-enumerator-member.png
new file mode 100644
index 0000000..a34a42f
Binary files /dev/null and b/icons/vscode-light/symbol-enumerator-member.png 
differ
diff --git a/icons/vscode-light/symbol-enumerator.png 
b/icons/vscode-light/symbol-enumerator.png
new file mode 100644
index 0000000..1e14c7c
Binary files /dev/null and b/icons/vscode-light/symbol-enumerator.png differ
diff --git a/icons/vscode-light/symbol-event.png 
b/icons/vscode-light/symbol-event.png
new file mode 100644
index 0000000..c00ccd7
Binary files /dev/null and b/icons/vscode-light/symbol-event.png differ
diff --git a/icons/vscode-light/symbol-field.png 
b/icons/vscode-light/symbol-field.png
new file mode 100644
index 0000000..8fb10ff
Binary files /dev/null and b/icons/vscode-light/symbol-field.png differ
diff --git a/icons/vscode-light/symbol-interface.png 
b/icons/vscode-light/symbol-interface.png
new file mode 100644
index 0000000..af14cc9
Binary files /dev/null and b/icons/vscode-light/symbol-interface.png differ
diff --git a/icons/vscode-light/symbol-key.png 
b/icons/vscode-light/symbol-key.png
new file mode 100644
index 0000000..f182179
Binary files /dev/null and b/icons/vscode-light/symbol-key.png differ
diff --git a/icons/vscode-light/symbol-keyword.png 
b/icons/vscode-light/symbol-keyword.png
new file mode 100644
index 0000000..519b201
Binary files /dev/null and b/icons/vscode-light/symbol-keyword.png differ
diff --git a/icons/vscode-light/symbol-method.png 
b/icons/vscode-light/symbol-method.png
new file mode 100644
index 0000000..5ec1d3f
Binary files /dev/null and b/icons/vscode-light/symbol-method.png differ
diff --git a/icons/vscode-light/symbol-misc.png 
b/icons/vscode-light/symbol-misc.png
new file mode 100644
index 0000000..a5f3c6b
Binary files /dev/null and b/icons/vscode-light/symbol-misc.png differ
diff --git a/icons/vscode-light/symbol-namespace.png 
b/icons/vscode-light/symbol-namespace.png
new file mode 100644
index 0000000..bd76f7d
Binary files /dev/null and b/icons/vscode-light/symbol-namespace.png differ
diff --git a/icons/vscode-light/symbol-numeric.png 
b/icons/vscode-light/symbol-numeric.png
new file mode 100644
index 0000000..bd647e8
Binary files /dev/null and b/icons/vscode-light/symbol-numeric.png differ
diff --git a/icons/vscode-light/symbol-operator.png 
b/icons/vscode-light/symbol-operator.png
new file mode 100644
index 0000000..9f0552a
Binary files /dev/null and b/icons/vscode-light/symbol-operator.png differ
diff --git a/icons/vscode-light/symbol-parameter.png 
b/icons/vscode-light/symbol-parameter.png
new file mode 100644
index 0000000..5411e6a
Binary files /dev/null and b/icons/vscode-light/symbol-parameter.png differ
diff --git a/icons/vscode-light/symbol-property.png 
b/icons/vscode-light/symbol-property.png
new file mode 100644
index 0000000..bf7d67d
Binary files /dev/null and b/icons/vscode-light/symbol-property.png differ
diff --git a/icons/vscode-light/symbol-ruler.png 
b/icons/vscode-light/symbol-ruler.png
new file mode 100644
index 0000000..4488302
Binary files /dev/null and b/icons/vscode-light/symbol-ruler.png differ
diff --git a/icons/vscode-light/symbol-snippet.png 
b/icons/vscode-light/symbol-snippet.png
new file mode 100644
index 0000000..48f36a5
Binary files /dev/null and b/icons/vscode-light/symbol-snippet.png differ
diff --git a/icons/vscode-light/symbol-string.png 
b/icons/vscode-light/symbol-string.png
new file mode 100644
index 0000000..c630f3f
Binary files /dev/null and b/icons/vscode-light/symbol-string.png differ
diff --git a/icons/vscode-light/symbol-structure.png 
b/icons/vscode-light/symbol-structure.png
new file mode 100644
index 0000000..6ff5a75
Binary files /dev/null and b/icons/vscode-light/symbol-structure.png differ
diff --git a/icons/vscode-light/symbol-variable.png 
b/icons/vscode-light/symbol-variable.png
new file mode 100644
index 0000000..5cf5d7d
Binary files /dev/null and b/icons/vscode-light/symbol-variable.png differ
diff --git a/test/frontends-tests.el b/test/frontends-tests.el
index 199467a..7ece53a 100644
--- a/test/frontends-tests.el
+++ b/test/frontends-tests.el
@@ -255,6 +255,21 @@
                      " MIRAI発売2カ月 ")
                    (company--create-lines 0 999)))))
 
+(ert-deftest company-create-lines-with-format-function ()
+  :tags '(interactive)
+  (let* (company-show-numbers
+         (company-candidates '("ArrayList"))
+         (company-candidates-length 1)
+         (company-package-root default-directory)
+         (company-format-margin-function (lambda (candidate selected)
+                                           "XXX"))
+         (company-backend (lambda (c &rest _) (pcase c (`kind 'class)))))
+    (should (ert-equal-including-properties
+             (car (company--create-lines 0 999))
+             #("XXXArrayList    " 0 16
+               (face (company-tooltip-selection company-tooltip)
+                     mouse-face (company-tooltip-mouse)))))))
+
 (ert-deftest company-fill-propertize-truncates-search-highlight ()
   (let ((company-search-string "foo")
         (company-backend #'ignore)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]