dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

commit cd89909a94fb8bb3e711ba4c8cf2f98b129419b1
parent 2418fb342289f176ca52629b715d9aaddde025b2
Author: Lukas Henkel <lh@entf.net>
Date:   Sat,  6 Apr 2024 20:33:00 +0200

Revert "Install company"

This reverts commit 4d570bd524cea55c186027d15305bcca3895af3f.

Diffstat:
Delpa/company-0.10.2.signed | 3---
Delpa/company-0.10.2/.dir-locals.el | 7-------
Delpa/company-0.10.2/.elpaignore | 6------
Delpa/company-0.10.2/CONTRIBUTING.md | 69---------------------------------------------------------------------
Delpa/company-0.10.2/LICENSE | 674-------------------------------------------------------------------------------
Delpa/company-0.10.2/NEWS.md | 645-------------------------------------------------------------------------------
Delpa/company-0.10.2/README.md | 13-------------
Delpa/company-0.10.2/company-abbrev.el | 52----------------------------------------------------
Delpa/company-0.10.2/company-autoloads.el | 329-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-bbdb.el | 63---------------------------------------------------------------
Delpa/company-0.10.2/company-capf.el | 257-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-clang.el | 430-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-cmake.el | 207-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-css.el | 446-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-dabbrev-code.el | 105-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-dabbrev.el | 207-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-elisp.el | 226-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-etags.el | 108-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-files.el | 161-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-gtags.el | 161-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-ispell.el | 83-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-keywords.el | 461-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-nxml.el | 143-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-oddmuse.el | 57---------------------------------------------------------
Delpa/company-0.10.2/company-pkg.el | 2--
Delpa/company-0.10.2/company-semantic.el | 168-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-template.el | 272-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-tempo.el | 72------------------------------------------------------------------------
Delpa/company-0.10.2/company-tng.el | 196-------------------------------------------------------------------------------
Delpa/company-0.10.2/company-yasnippet.el | 186-------------------------------------------------------------------------------
Delpa/company-0.10.2/company.el | 3986-------------------------------------------------------------------------------
Delpa/company-0.10.2/company.info | 1707-------------------------------------------------------------------------------
Delpa/company-0.10.2/dir | 18------------------
Delpa/company-0.10.2/icons/LICENSE | 396-------------------------------------------------------------------------------
Delpa/company-0.10.2/icons/attribution.md | 5-----
Delpa/company-0.10.2/icons/vscode-dark/folder.svg | 4----
Delpa/company-0.10.2/icons/vscode-dark/references.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-array.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-boolean.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-class.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-color.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-constant.svg | 4----
Delpa/company-0.10.2/icons/vscode-dark/symbol-enumerator-member.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-enumerator.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-event.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-field.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-file.svg | 4----
Delpa/company-0.10.2/icons/vscode-dark/symbol-interface.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-key.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-keyword.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-method.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-misc.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-namespace.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-numeric.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-operator.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-parameter.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-property.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-ruler.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-snippet.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-string.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-structure.svg | 3---
Delpa/company-0.10.2/icons/vscode-dark/symbol-variable.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/folder.svg | 4----
Delpa/company-0.10.2/icons/vscode-light/references.svg | 10----------
Delpa/company-0.10.2/icons/vscode-light/symbol-array.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-boolean.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-class.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-color.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-constant.svg | 4----
Delpa/company-0.10.2/icons/vscode-light/symbol-enumerator-member.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-enumerator.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-event.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-field.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-file.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-interface.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-key.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-keyword.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-method.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-misc.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-namespace.svg | 10----------
Delpa/company-0.10.2/icons/vscode-light/symbol-numeric.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-operator.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-parameter.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-property.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-ruler.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-snippet.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-string.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-structure.svg | 3---
Delpa/company-0.10.2/icons/vscode-light/symbol-variable.svg | 3---
Delpa/company-0.10.2/images/large/README | 6------
Delpa/company-0.10.2/images/large/echo-meta.png | 0
Delpa/company-0.10.2/images/large/echo-qa.png | 0
Delpa/company-0.10.2/images/large/echo-strip-qa.png | 0
Delpa/company-0.10.2/images/large/echo-strip.png | 0
Delpa/company-0.10.2/images/large/echo.png | 0
Delpa/company-0.10.2/images/large/preview-dark.png | 0
Delpa/company-0.10.2/images/large/preview-light.png | 0
Delpa/company-0.10.2/images/large/tooltip-annotations.png | 0
Delpa/company-0.10.2/images/large/tooltip-faces-light.png | 0
Delpa/company-0.10.2/images/large/tooltip-filter.png | 0
Delpa/company-0.10.2/images/large/tooltip-flip.png | 0
Delpa/company-0.10.2/images/large/tooltip-icon-bg.png | 0
Delpa/company-0.10.2/images/large/tooltip-icon-face.png | 0
Delpa/company-0.10.2/images/large/tooltip-icons-dot.png | 0
Delpa/company-0.10.2/images/large/tooltip-icons-text.png | 0
Delpa/company-0.10.2/images/large/tooltip-icons-vscode.png | 0
Delpa/company-0.10.2/images/large/tooltip-limit.png | 0
Delpa/company-0.10.2/images/large/tooltip-margin.png | 0
Delpa/company-0.10.2/images/large/tooltip-minimum-above.png | 0
Delpa/company-0.10.2/images/large/tooltip-minimum-below.png | 0
Delpa/company-0.10.2/images/large/tooltip-offset-display.png | 0
Delpa/company-0.10.2/images/large/tooltip-qa-faces-light.png | 0
Delpa/company-0.10.2/images/large/tooltip-quick-access.png | 0
Delpa/company-0.10.2/images/large/tooltip-search.png | 0
Delpa/company-0.10.2/images/small/README | 6------
Delpa/company-0.10.2/images/small/echo-meta.png | 0
Delpa/company-0.10.2/images/small/echo-qa.png | 0
Delpa/company-0.10.2/images/small/echo-strip-qa.png | 0
Delpa/company-0.10.2/images/small/echo-strip.png | 0
Delpa/company-0.10.2/images/small/echo.png | 0
Delpa/company-0.10.2/images/small/preview-dark.png | 0
Delpa/company-0.10.2/images/small/preview-light.png | 0
Delpa/company-0.10.2/images/small/tooltip-annotations.png | 0
Delpa/company-0.10.2/images/small/tooltip-faces-light.png | 0
Delpa/company-0.10.2/images/small/tooltip-filter.png | 0
Delpa/company-0.10.2/images/small/tooltip-flip.png | 0
Delpa/company-0.10.2/images/small/tooltip-icon-bg.png | 0
Delpa/company-0.10.2/images/small/tooltip-icon-face.png | 0
Delpa/company-0.10.2/images/small/tooltip-icons-dot.png | 0
Delpa/company-0.10.2/images/small/tooltip-icons-text.png | 0
Delpa/company-0.10.2/images/small/tooltip-icons-vscode.png | 0
Delpa/company-0.10.2/images/small/tooltip-limit.png | 0
Delpa/company-0.10.2/images/small/tooltip-margin.png | 0
Delpa/company-0.10.2/images/small/tooltip-minimum-above.png | 0
Delpa/company-0.10.2/images/small/tooltip-minimum-below.png | 0
Delpa/company-0.10.2/images/small/tooltip-offset-display.png | 0
Delpa/company-0.10.2/images/small/tooltip-qa-faces-light.png | 0
Delpa/company-0.10.2/images/small/tooltip-quick-access.png | 0
Delpa/company-0.10.2/images/small/tooltip-search.png | 0
Minit.el | 4+---
140 files changed, 1 insertion(+), 12117 deletions(-)

diff --git a/elpa/company-0.10.2.signed b/elpa/company-0.10.2.signed @@ -1,2 +0,0 @@ -Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org> (trust undefined) created at 2023-10-08T23:05:03+0200 using RSA -Good signature from 645357D2883A0966 GNU ELPA Signing Agent (2023) <elpasign@elpa.gnu.org> (trust undefined) created at 2023-10-08T23:05:03+0200 using EDDSA -\ No newline at end of file diff --git a/elpa/company-0.10.2/.dir-locals.el b/elpa/company-0.10.2/.dir-locals.el @@ -1,7 +0,0 @@ -((nil . ((indent-tabs-mode . nil) - (fill-column . 80) - (sentence-end-double-space . t) - (emacs-lisp-docstring-fill-column . 75) - (project-vc-merge-submodules . nil))) - (makefile-mode . ((indent-tabs-mode . t))) - (texinfo-mode . ((fill-column . 70)))) diff --git a/elpa/company-0.10.2/.elpaignore b/elpa/company-0.10.2/.elpaignore @@ -1,6 +0,0 @@ -.travis.yml -.github -.gitignore -Makefile -test -company-tests.el diff --git a/elpa/company-0.10.2/CONTRIBUTING.md b/elpa/company-0.10.2/CONTRIBUTING.md @@ -1,69 +0,0 @@ -# Contributing to Company - -### Fixes and Improvements - -You're welcome to open a [`pull request`](https://docs.github.com/en/github/collaborating-with-pull-requests) -or send a patch with the changes. -For non-trivial updates, please clearly describe the problem and the solution. - -If you're looking for *a challenge*, go grab an Issue with the -[`wishlist` label](https://github.com/company-mode/company-mode/issues?q=is%3Aissue+is%3Aopen+label%3Awishlist). - -If you have *a question* on where to start implementing a feature, -ask in a related [Issue](https://github.com/company-mode/company-mode/issues) -or create a new [Discussion](https://github.com/company-mode/company-mode/discussions). - - -### Documentation - -Help on improving, fixing, and writing documentation is also wanted. -See these ideas on where to start: -- Add and edit pages in [`Company` Wiki](https://github.com/company-mode/company-mode/wiki). -- Share your findings in [`Discussions`](https://github.com/company-mode/company-mode/discussions/categories/show-and-tell). -- Improve the [user manual](https://github.com/company-mode/company-mode/issues/926). - - -### Backend Integration - -New backends are rarely accepted for inclusion into `Company` at this stage. - -Our common recommendation for new backends is one of the following: -- Publish a backend to (M)ELPA. -- Create a `*-completion-at-point` function for a call by `completion-at-point-functions`. - -Feel free to [ask](https://github.com/company-mode/company-mode/discussions) -if you're hesitating which approach to choose. - - -### Guidelines for Third-Party Packages - -This section was born as a result of the question asked in -[Issue #923](https://github.com/company-mode/company-mode/issues/923). - -There are two preferred ways to integrate a third-party package with `Company`. - -1. Use `completion-at-point-functions` and convey extra information through the -`:company-*` additional properties (like e.g. `elisp-completion-at-point` does). -In this scenario, some minor mode can and should call `add-hook`. - -2. Define a `Company` backend (as described in `Commentary` at the top of -`company.el` and in `company-backends` docstring). -Then, in the documentation, describe how you recommend it to be used. - - -Buffer-local values are allowed, but usually not necessary. -If a backend is added globally, checking a major mode in the prefix function is a must. - -Examples: -- https://github.com/pythonic-emacs/company-anaconda#usage -- https://github.com/vspinu/company-math#activation - - -### Copyright Assignment - -`Company` is subject to the same [copyright assignment](https://www.fsf.org/licensing/contributor-faq) -policy as `GNU Emacs`. - -Any [legally significant](https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html#Legally-Significant) -contributions can only be merged after the author has completed their paperwork. -Please ask for the request form, and we'll send it to you. diff --git a/elpa/company-0.10.2/LICENSE b/elpa/company-0.10.2/LICENSE @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - <program> Copyright (C) <year> <name of author> - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -<https://www.gnu.org/licenses/>. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/elpa/company-0.10.2/NEWS.md b/elpa/company-0.10.2/NEWS.md @@ -1,645 +0,0 @@ -# History of user-visible changes - -## 2023-10-08 (0.10.2) - -* More `company-auto-update-doc`-related fixes. -* Better handling of `C-g` performed inside a `doc-buffer` handler - ([#1408](https://github.com/company-mode/company-mode/issues/1408)). - -## 2023-10-06 (0.10.1) - -* Fix upgrading from 0.9.13 when the package is already loaded - ([#1406](https://github.com/company-mode/company-mode/issues/1406)). - -## 2023-10-04 (0.10.0) - -* `company-echo-show` (and related featuers, most importantly, - `company-echo-metadata-frontend`) now should stop interfering with the echo - area and ElDoc when the current backend returns no `meta`. -* New user option `company-tooltip-annotation-padding` - ([#1376](https://github.com/company-mode/company-mode/discussions/1376)). -* When a snippet name is typed in full, completion does not abort now (only - affects completions which have `snippet` kind), - ([#205](https://github.com/company-mode/company-mode/issues/205)). -* `company-show-doc-buffer` now can accept a prefix argument to toggle a new - variable `company-auto-update-doc`. When this variable is non-nil, it keeps - the documentation buffer up-to-date whenever the selection changes - ([#1331](https://github.com/company-mode/company-mode/discussions/1331)). -* `company-auto-commit` and `company-auto-commit-chars` have been renamed to - `company-insertion-on-trigger` and `company-insertion-triggers` respectively - ([#1270](https://github.com/company-mode/company-mode/pull/1270)). -* New command `company-complete-common-or-show-delayed-tooltip` - ([#1214](https://github.com/company-mode/company-mode/discussions/1214)). -* Faces `company-scrollbar-fg` and `company-scrollbar-bg` have been renamed to - `company-tooltip-scrollbar-thumb` and `company-tooltip-scrollbar-track` - respectively. -* Better compatibility with `visual-line-mode` - ([#1257](https://github.com/company-mode/company-mode/issues/1257)). -* Better compatibility with `org-indent-mode` - ([#1252](https://github.com/company-mode/company-mode/issues/1252)). -* New backend command, `deprecated`. It returns whether the completion item is - deprecated or not. -* `company-tooltip-common` highlightings with non-prefix and prefix matching - backends are more compatible: if the non-prefix matching backend's completions - all have a common part, and so the current prefix can be expanded with - `company-complete-common`, that part is now also highlighted with that face - ([#519](https://github.com/company-mode/company-mode/issues/519)). -* `company-yasnippet` respects the `condition` directive in snippets - ([#1179](https://github.com/company-mode/company-mode/issues/1179)). -* New user option `company-icon-margin`. -* `company-show-numbers` has been renamed to `company-show-quick-access` - ([#1115](https://github.com/company-mode/company-mode/pull/1115)). - New user options `company-quick-access-keys` and - `company-quick-access-modifier`. - New command `company-complete-quick-access`. - `company-show-numbers-function` has been deprecated and its default - value changed to `nil`. Use `company-quick-access-hint-function` - instead. `company--show-numbers` has been deprecated. -* `company-complete-number` has been renamed to - `company-complete-tooltip-row` - ([#1118](https://github.com/company-mode/company-mode/pull/1118)). -* New faces `company-tooltip-quick-access` and - `company-tooltip-quick-access-selection` - ([#303](https://github.com/company-mode/company-mode/issues/303)). -* Default colors for dark themes have been changed - ([#949](https://github.com/company-mode/company-mode/issues/949)). -* Default key bindings have been changed, moving `company-select-next` and - `company-select-previous` from `M-n` and `M-p` to `C-n` and `C-p` - ([#1098](https://github.com/company-mode/company-mode/pull/1098)). The bound - commands are also changed: `company-select-next-or-abort` and - `company-select-previous-or-abort`, to match the `<up>` and `<down>` - bindings. The previous bindings still work, but show a warning and will be - disabled soon. To undo that change locally, do: - -```el -(with-eval-after-load 'company - (dolist (map (list company-active-map company-search-map)) - (define-key map (kbd "C-n") nil) - (define-key map (kbd "C-p") nil) - (define-key map (kbd "M-n") #'company-select-next) - (define-key map (kbd "M-p") #'company-select-previous))) -``` - -* New user option `company-files-chop-trailing-slash` - ([#1042](https://github.com/company-mode/company-mode/issues/1042)). -* Improved visual responsiveness with (but not limited to) async backends - ([#1073](https://github.com/company-mode/company-mode/issues/1073)). New user - option `company-async-redisplay-delay`. -* `company-idle-delay` default reduced to 0.2 (seconds). -* The minimum required version of Emacs is now 25.1. -* Added support for icons - ([#1070](https://github.com/company-mode/company-mode/pull/1070)). - New user option `company-format-margin-function`. New backend command - `kind`. There are two built-in SVG icon sets, one for light and another for - dark icons. The default behavior is to choose the best one for the current - theme automatically, or if the current frame is non-graphical or simply does - not support rendering SVG images, fall back to text-based "icons". -* User options `company-text-icons-mapping` and - `company-text-icons-add-background` control the looks and additional - decoration for the latter - ([#1088](https://github.com/company-mode/company-mode/issues/1088)). -* 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 - ([#1045](https://github.com/company-mode/company-mode/pull/1045)). -* `company-gtags` on remote hosts is improved - ([#1037](https://github.com/company-mode/company-mode/pull/1037)). -* New commands `company-select-first` and `company-select-last`. -* `company-tng-mode` has been added to replace both - `company-tng-configure-default` and the manual method of enabling - `company-tng-frontend` (see also `company-tng-auto-configure`). Also, - `company-selection` can now have `nil` value, which means no selection. -* `company-auto-complete` and `company-auto-complete-chars` have been renamed to - `company-auto-commit` and `company-auto-commit-chars` respectively. -* `company-clang` filters out duplicates - ([#841](https://github.com/company-mode/company-mode/issues/841)). -* New user option `company-tooltip-width-grow-only`. -* `company-xcode` has been removed. It has not been useful for years now. -* `company-clang` has been moved to after `company-capf` in the default value of - `company-backends`. So now if there is an active completion function in - `completion-at-point-functions`, it will have priority over - `company-clang`. Unless it's `tags-completion-at-point-function` (this one is - still skipped explicitly). -* `company-eclim` has been removed. Eclim is generally not recommended for Emacs - users these days, with - ([emacs-eclim](https://github.com/emacs-eclim/emacs-eclim/)) declared obsolete - in favor of `lsp-java`. Though it used its own backend anyway. - -## 2020-07-26 (0.9.13) - -* `company-clang`: error handling is more permissive. -* `company-tng` stops disabling `post-completion` in backends - ([#946](https://github.com/company-mode/company-mode/pull/946)). Instead, - `company-tng-configure-default` disables snippet expansion in most popular - backends. If a backend you use needs this and is not covered, and you use - `company-tng`, disable snippet insertion by customizing a relevant option - provided by the backend. The result is better compatibility with LSP backends - because they currently depend on `post-completion` in all cases. -* `company-keywords`: additions for C and C++. -* `company-yasnippet` supports the `doc-buffer` action. -* `company-bbdb` supports more headers. - -## 2020-02-07 (0.9.12) - -* Tooltip rendering bugfix. -* `company-indent-or-complete-common` is better compatible with - `indent-for-tab-command` - ([comment](https://github.com/company-mode/company-mode/issues/94#issuecomment-571265393)). - -## 2020-01-03 (0.9.11) - -* New value for option `company-show-numbers` to show numbers on the left. -* `company-gtags` has some minor fixes. -* Face definitions have moved to a separate group: `company-faces`. -* `company-capf`'s `:exit-function` handling has been improved - ([#935](https://github.com/company-mode/company-mode/issues/935)). -* New user option `company-clang-use-compile-flags-txt` - ([#933](https://github.com/company-mode/company-mode/issues/933)). -* Support for completion style specific sorting (Emacs 27 feature). -* Snippet/template field interaction is inhibited while completion is active - (where by default `TAB` calls `company-complete-common`, clashing with snippet - map binding `TAB` to "jump to the next field"). Affects both - `company-template` and `yasnippet` (requires version 0.14.0). - -## 2019-04-15 (0.9.10) - -* `company-clang`: better compatibility with Clang 8 - ([#885](https://github.com/company-mode/company-mode/issues/885)). -* The change in `company-clang` regarding identity #defines is reverted because - it affected other completions as well - ([#884](https://github.com/company-mode/company-mode/issues/884)). -* `company-idle-delay` now accepts a function which generates the idle time or - nil indicating no idle completion. -* Add custom variable `company-show-numbers-function` to make numbers of - candidates customizable. -* When a symbol is already typed in full, calling `M-x company-complete` will - now run its post-completion action (e.g. inserting method parameters - template). Calling `M-x company-manual-begin` or invoking a backend command - directly will show the popup - ([#150](https://github.com/company-mode/company-mode/issues/150), - [#476](https://github.com/company-mode/company-mode/issues/476)). - -## 2018-12-13 (0.9.9) - -* Fix for the changes in the previous release. -* New hook `company-after-completion-hook`. -* `company-clang` removes identity preprocessor #defines from completions - ([#841](https://github.com/company-mode/company-mode/issues/841)). - -## 2018-12-08 (0.9.8) - -* CAPF backend fixed to use the right `:exit-function`. It can now safely be a - closure with lexical context capturing the buffer state at the moment when the - completion table was returned - ([#845](https://github.com/company-mode/company-mode/pull/845)). - -## 2018-11-06 (0.9.7) - -* For more sophisticated highlighting in non-prefix completion, a backend may - now respond to a `match` request with a list of regions. See - `company-backends`. - ([#798](https://github.com/company-mode/company-mode/issues/798), - [#762](https://github.com/company-mode/company-mode/issues/762)) -* The `company-capf` backend will pick up on a `:company-match` metadata element - on the capf function (similar to `:company-location` or `:company-doc-buffer`) - and use it as a response to aforementioned `match` request. -* `company-cmake` supports completion inside string interpolations - ([#714](https://github.com/company-mode/company-mode/pull/714)). -* Workaround for the conflict between `inferior-python-mode`'s completion code - and `company-sort-by-occurrence`. -* In Emacs 26 and newer, `company-css` is removed from `company-backends`. - `company-capf` is used instead. -* Same for `company-nxml`. - -## 2018-02-23 (0.9.6) - -* Workaround for Emacs' ([bug#23980](https://debbugs.gnu.org/23980)) triggered - in combination with Flyspell. - -## 2018-02-18 (0.9.5) - -* The most common case of tooltip flickering with asynchronous backends (and - disabled built-in cache) is fixed - ([#510](https://github.com/company-mode/company-mode/issues/510), - [#654](https://github.com/company-mode/company-mode/issues/654)). -* `company-keywords` added entries for `go-mode`, `swift-mode` and - `kotlin-mode`. -* Native line numbers compatibility fixes. -* `company-dabbrev` and `company-dabbrev-code` are more responsive when user - input is pending - ([#720](https://github.com/company-mode/company-mode/pull/720)). -* New feature `company-tng`. It contains a frontend and some helper code. - The frontend triggers insertion of the candidate as soon as it's selected, so - you only need to press TAB. Add `(company-tng-configure-default)` to your - init script to give it a try - ([#706](https://github.com/company-mode/company-mode/issues/706)). -* New user option `company-tooltip-maximum-width`. - -## 2017-07-15 (0.9.4) - -* Compatibility with native line numbers display in Emacs 26. -* `company-files` allows completion after `=`. -* `company-template` has a new shortcut (`C-d`) for deleting an unmodified - template field while cursor is on it. - -## 2017-03-29 (0.9.3) - -* New user option `company-echo-truncate-lines`. -* `company-auto-complete` improved compatibility with `electric-pair-mode`. -* Use of `overriding-terminal-local-map` does not disable completion. -* `company-clang` and `company-gtags` can work over Tramp. -* New frontend `company-preview-common-frontend`. -* `company-clang` calls Clang using a pipe instead of pty. -* The minimum required version of Emacs is now 24.3. - -## 2016-11-14 (0.9.2) - -* Miscellaneous fixes and docstring improvements. - -## 2016-11-12 (0.9.1) - -* `company-indent-or-complete-common` skips trying to indent if - `indent-line-function` is `indent-relative` or `indent-relative-maybe`. -* Better visualization of search matches. New face `company-tooltip-search-selection`. -* New user option `company-files-exclusions`. -* `company-next-page` and `company-previous-page` adhere to - `company-selection-wrap-around` docstring more closely and only wrap around - when the selection is at the start of the end of the list. -* `company-pseudo-tooltip-unless-just-one-frontend-with-delay` handles custom - frontends derived from `company-preview-frontend` better. -* `company-idle-delay` is automatically adjusted to a non-zero value. - -## 2016-06-23 (0.9.0) - -* Group of backends can now contain keyword `:separate`, which makes candidates - from different backends sorted separately in the combined list. -* New frontend `company-pseudo-tooltip-unless-just-one-frontend-with-delay`. -* New transformer `company-sort-prefer-same-case-prefix`. -* The value of `company-dabbrev-ignore-buffers` can also be a function. -* `company-files` has been moved to right after `company-capf` in - `company-backends` - ([#463](https://github.com/company-mode/company-mode/issues/463)). -* `company-semantic-insert-arguments`: New option. Like in `company-clang`. -* `company-semantic-begin-after-member-access`: New option. Similar to the one - in `company-clang`. -* `company-capf` accepts `:company-prefix-length` property value. -* New face `company-tooltip-annotation-selection`, used for the annotation in - the selected tooltip line. -* `company-clang-objc-templatify` has been renamed to - `company-template-objc-templatify`. -* New user option `company-etags-everywhere`. -* `company-yasnippet` supports `yas-key-syntaxes` better. But we use them in the - reverse order, preferring the longest key prefix that matches anything. And we - only consider trigger key prefixes that are at least as long as the symbol at - point, which effectively means skipping the `"w"` element - ([#422](https://github.com/company-mode/company-mode/issues/422)). -* New user option `company-search-regexp-function`. -* Completion is not started automatically when a keyboard macro is being - recorded ([#374](https://github.com/company-mode/company-mode/issues/374)). -* New command `company-indent-or-complete-common`. -* Backend command `doc-buffer` now can also return a cons of buffer and window - start position. -* Backend command `ignore-case` has been documented. -* `company-template-c-like-templatify` does not replace the default argument - values with `argN` anymore - ([#336](https://github.com/company-mode/company-mode/issues/336)). This - affects `company-clang` and all third-party backends that use this function. -* Likewise for `company-clang-objc-templatify`. -* `company-template-add-field` calling convention has changed. -* New user option `company-dabbrev-ignore-invisible`. -* `company-ropemacs` was removed. `ropemacs` supports completion via - `completion-at-point-functions` starting with version 0.8. -* `company-pysmell` was removed. -* `company-select-next`, `company-select-previous`, - `company-select-next-or-abort`, `company-select-previous-or-abort` and - `company-complete-common-or-cycle` accept a numeric argument. -* The documentation buffer window can be scrolled with the mouse wheel. -* New command `company-diag`. Use it in bug reports. - -## 2015-02-02 (0.8.10) - -* New variable `company-lighter-base`. -* Better tracking of the current selection. -* Pressing `M-0`...`M-9` works in the search mode. -* Pressing `<up>` or `<down>` doesn't quit the search mode. - -## 2015-01-23 (0.8.9) - -* New commands `company-next-page` and `company-previous-page`, remapping - `scroll-up-command` and `scroll-down-command` during completion. - -## 2015-01-13 (0.8.8) - -* Pressing `M-n` or `M-p` doesn't quit the search mode. -* New command `company-complete-common-or-cycle`. No default binding. -* `company-search-toggle-filtering` replaced `company-search-kill-others`. -* Quitting the search mode resets the filtering. -* Pressing `backspace` in the search mode deletes the character at the end of - the search string. -* `company-semantic` displays function arguments as annotations. -* New user option, `company-bbdb-modes`. -* `company-show-numbers` and `company-complete-number` now use visual numbering - of the candidates, taking into account only the ones currently displayed. -* `company-complete-number` can be bound to keypad numbers directly, with or - without modifiers. -* `company-cmake` expands `<LANG>` and `<CONFIG>` placeholders inside variable - names. - -## 2014-10-15 (0.8.6) - -* `company-clang` and `company-template-c-like-templatify` support templated - functions and arguments. -* `company-dabbrev` ignores "uninteresting" buffers by default. Depends on the - new user option, `company-dabbrev-ignore-buffers`. -* `company-files` checks directory's last modification time. -* `company-files` supports relative paths and Windows drive letters. - -## 2014-08-13 (0.8.4) - -* `company-ropemacs` is only used when `ropemacs-mode` is on. -* `company-gtags` is enabled in all `prog-mode` derivatives by default. -* `company-end-of-buffer-workaround` is not used anymore. -* `company-begin-commands` includes some of `cc-mode` commands. - -## 2014-08-27 (0.8.3) - -* On Emacs 24.4 or newer, tooltip positioning takes line-spacing into account. -* New face `company-tooltip-search`, used for the search string in the tooltip. -* The default value of `company-dabbrev-minimum-length` is set to 4, independent - of the `company-minimum-prefix-length` value. - -## 2014-07-26 (0.8.2) - -* New user option `company-occurrence-weight-function`, allowing to tweak the - behavior of the transformer `company-sort-by-occurrence`. -* Setting `company-idle-delay` to `t` is deprecated. Use the value 0 instead. - -## 2014-07-01 (0.8.1) - -* `company-require-match` is not in effect when the new input doesn't continue - the previous prefix, and that prefix was a match. -* The meaning of `company-begin-commands` value t has slightly changed. -* New transformer, `company-sort-by-backend-importance`. -* When grouped back-ends are used, the back-end of the current candidate is - indicated in the mode-line, enclosed in angle brackets. -* New user option `company-gtags-insert-arguments`, t by default. -* `company-css` knows about CSS3. -* `company-gtags` supports `meta` and `annotation`. -* User option `company-dabbrev-code-other-buffers` can have a new value: `code`. -* New user option `company-tooltip-flip-when-above`. -* `company-clang` uses the standard header search paths by default. -* `C-h` is bound to `company-show-doc-buffer` (like `f1`). - -## 2014-04-19 (0.8.0) - -* `company-capf` is included in `company-backends` in any supported Emacs - version (>= 24.1). `company-elisp` goes before it if Emacs version is < 24.4. -* New user option `company-clang-insert-arguments`, by default t. -* Default value of `company-idle-delay` lowered to `0.5`. -* New user option `company-tooltip-minimum-width`, by default 0. -* New function `company-grab-symbol-cons`. -* `company-clang` fetches completion candidates asynchronously. -* Added support for asynchronous back-ends (experimental). -* Support for back-end command `crop` dropped (it was never documented). -* Support for Emacs 23 dropped. -* New user option `company-abort-manual-when-too-short`. - -## 2014-03-25 (0.7.3) - -* New user option `company-etags-ignore-case`. - -## 2014-03-19 (0.7.2) - -* Support for Emacs 22 officially dropped. -* `company-clang` supports `indent-tabs-mode` and multibyte chars before point. - -## 2014-03-18 (0.7.1) - -* Group of back-ends can now contain keyword `:with`, which makes all back-ends - after it to be skipped for prefix calculation. -* New function `company-version`. -* New bundled back-end `company-yasnippet`. -* Completion candidates returned from grouped back-ends are tagged to remember - which back-end each came from. -* New user option `company-tooltip-align-annotations`, off by default. -* New bundled back-end `company-bbdb`. - -## 2014-02-18 (0.7) - -* New back-end command, `match`, for non-prefix completion. -* New user option `company-continue-commands`. The default value aborts - completion on buffer saving commands. -* New back-end command, `annotation`, for text displayed inline in the popup - that's not a part of completion candidate. -* `company-capf`, `company-clang` and `company-eclim` use `annotation`. -* `company-preview*` faces inherit from `company-tooltip-selection` and - `company-tooltip-common-selection` on light themes. -* New user option `company-transformers`. -* First transformer, `company-sort-by-occurrence`. -* New user options controlling `company-dabbrev` and `company-dabbrev-code`. - -## 2014-01-25 (0.6.14) - -* The tooltip front-end is rendered with scrollbar, controlled by the user - option `company-tooltip-offset-display`. -* The tooltip front-end is rendered with margins, controlled by the user option - `company-tooltip-margin`. - -## 2014-01-14 (0.6.13) - -* Experimental support for non-prefix completion. -* Starting with Emacs version 24.4, `company-capf` is included in - `company-backends` and replaces `company-elisp`. -* `company-capf` supports completion tables that return non-default boundaries. -* `company-elisp` is enabled in `inferior-emacs-lisp-mode`. - -## 2013-09-28 (0.6.12) - -* Default value of `company-begin-commands` changed to `(self-insert-command)`. -* Further improvement in `org-indent-mode` compatibility. - -## 2013-08-18 (0.6.11) - -* `company-template-c-like-templatify` removes all text after closing paren, for - use in backends that display additional info there. -* `company-cmake` is now bundled. -* Better `linum` compatibility in Emacs <= 24.2. -* `company-global-modes`: New option. - -## 2013-05-26 (0.6.10) - -* Plays nicer with `org-indent-mode`. -* Works in horizontally scrolled windows. - -## 2013-05-10 (0.6.9) - -* `company-capf` respects `:exit-function` completion property. -* `company-backends`: `prefix` command can return `t` in the cdr. -* `company-clang-begin-after-member-access`: New option. -* Mouse click outside the tooltip aborts completion. -* `company-clang` uses standard input to pass the contents of current buffer to - Clang 2.9+, otherwise saves the buffer and passes the path to the file. -* `company-clang-auto-save` option has been removed. -* Better interaction with `outline-minor-mode`. -* `company-dabbrev-code` supports all `prog-mode` derivatives. - -## 2013-04-16 (0.6.8) - -* `company-auto-complete` is disabled by default. -* `company-auto-complete-chars` default value includes fewer syntax classes. -* In expanded function calls, arguments skipped by the user default to "argN". -* `company-eclim` and `company-clang` do not strip argument types from fields. -* `company-clang` expands function calls for all three modes now. -* `company-clang` supports `c++-mode` by default. - -## 2013-04-05 (0.6.7) - -* Two `company-elisp` tweaks. - -## 2013-04-01 (0.6.6) - -* `company-elisp` doesn't offer completions when typing the name and the - arguments of a new function or macro definition, allowing to fall back to - other back-ends like `company-dabbrev-code`. - -## 2013-03-30 (0.6.5) - -* Fixed keybindings when running in a terminal. -* `company-elisp-show-locals-first`: new customizable variable. -* `company-elisp` shows more accurate and comprehensive candidates list. - -## 2013-03-26 (0.6.4) - -* `company-eclim` shows valid completions after an opening paren. -* Expanded template does not get removed until the point leaves it. After your - input the last argument in a method call expanded by `company-eclim`, you can - press `<tab>` once more, to jump after the closing paren. No other bundled - back-ends are affected. - -## 2013-03-25 (0.6.3) - -* New tooltip face colors used on themes with light background. -* Pseudo-tooltip stays up-to-date when text is inserted after the point. -* Fixed `company-require-match` mechanics. - -## 2013-03-24 (0.6.2) - -* `global-company-mode` is now autoloaded. - -## 2013-03-23 (0.6.1) - -* Documented `init` and `post-completion` back-end commands. -* `company-eclim` and `company-clang` only expand the template on explicit user - action (such as `company-complete-{selection,number,mouse}`). -* `company-template` has some breaking changes. When point is at one of the - fields, it's displayed at the beginning, not right after it; `<tab>` jumps to - the next field, `forward-word` and `subword-forward` remappings are removed; - when you jump to the next field, if the current one hasn't been edited, the - overlay gets removed but the text remains. -* `company-eclim` shows method overloads and expands templates for calls. -* `company-clang-objc-templatify` does not insert spaces after colons anymore. -* `company-clang` is now only initialized in supported buffers. - So, no error messages if you don't have Clang until you open a C file. -* `company-clang` recognizes Clang included in recent Xcode. -* New commands `company-select-previous-or-abort` and - `company-select-next-or-abort`, bound to `<up>` and `<down>`. - -## 2013-03-19 (0.6) - -* Across-the-board bugfixing. -* `company-pysmell` is not used by default anymore. -* Loading of `nxml`, `semantic`, `pymacs` and `ropemacs` is now deferred. -* Candidates from grouped back-ends are merged more conservatively: only - back-ends that return the same prefix at point are used. -* `company-clang` now shows meta information, too. -* Some performance improvements. -* Fixed two old tooltip annoyances. -* Instead of `overrriding-terminal-local-map`, we're now using - `emulation-mode-map-alists` (experimental). This largely means that when the - completion keymap is active, other minor modes' keymaps are still used, so, - for example, it's not as easy to accidentally circumvent `paredit-mode` - when it's enabled. -* `company-elisp` has seen some improvements. -* Added `company-capf`: completion adapter using - `completion-at-point-functions`. (Stefan Monnier) -* Clang completions now include macros and are case-sensitive. -* Switching between tag files now works correctly with `company-etags`. - -## 2010-02-24 (0.5) - -* `company-ropemacs` now provides location and docs. (Fernando H. Silva) -* Added `company-with-candidate-inserted` macro. -* Added `company-clang` back-end. -* Added new mechanism for non-consecutive insertion. - (So far only used by clang for ObjC.) -* The semantic back-end now shows meta information for local symbols. -* Added compatibility for CEDET in Emacs 23.2 and from CVS. (Oleg Andreev) - -## 2009-05-07 (0.4.3) - -* Added `company-other-backend`. -* Idle completion no longer interrupts multi-key command input. -* Added `company-ropemacs` and `company-pysmell` back-ends. - -## 2009-04-25 (0.4.2) - -* In C modes . and -> now count towards `company-minimum-prefix-length`. -* Reverted default front-end back to `company-preview-if-just-one-frontend`. -* The pseudo tooltip will no longer be clipped at the right window edge. -* Added `company-tooltip-minimum`. -* Windows compatibility fixes. - -## 2009-04-19 (0.4.1) - -* Added `global-company-mode`. -* Performance enhancements. -* Added `company-eclim` back-end. -* Added safer workaround for Emacs `posn-col-row` bug. - -## 2009-04-18 (0.4) - -* Automatic completion is now aborted if the prefix gets too short. -* Added option `company-dabbrev-time-limit`. -* `company-backends` now supports merging back-ends. -* Added back-end `company-dabbrev-code` for generic code. -* Fixed `company-begin-with`. - -## 2009-04-15 (0.3.1) - -* Added 'stop prefix to prevent dabbrev from completing inside of symbols. -* Fixed issues with tabbar-mode and line-spacing. -* Performance enhancements. - -## 2009-04-12 (0.3) - -* Added `company-begin-commands` option. -* Added abbrev, tempo and Xcode back-ends. -* Back-ends are now interactive. You can start them with M-x backend-name. -* Added `company-begin-with` for starting company from elisp-code. -* Added hooks. -* Added `company-require-match` and `company-auto-complete` options. - -## 2009-04-05 (0.2.1) - -* Improved Emacs Lisp back-end behavior for local variables. -* Added `company-elisp-detect-function-context` option. -* The mouse can now be used for selection. - -## 2009-03-22 (0.2) - -* Added `company-show-location`. -* Added etags back-end. -* Added work-around for end-of-buffer bug. -* Added `company-filter-candidates`. -* More local Lisp variables are now included in the candidates. - -## 2009-03-21 (0.1.5) - -* Fixed elisp documentation buffer always showing the same doc. -* Added `company-echo-strip-common-frontend`. -* Added `company-show-numbers` option and M-0 ... M-9 default bindings. -* Don't hide the echo message if it isn't shown. - -## 2009-03-20 (0.1) - -* Initial release. diff --git a/elpa/company-0.10.2/README.md b/elpa/company-0.10.2/README.md @@ -1,13 +0,0 @@ -See the homepage for [installation and usage instructions](http://company-mode.github.io/). - -File a bug report in [Issues](https://github.com/company-mode/company-mode/issues). - -Ask a question or suggest a feature in [Discussions](https://github.com/company-mode/company-mode/discussions/). - -See [Contributing](https://github.com/company-mode/company-mode/blob/master/CONTRIBUTING.md) on other ways to help out. - -[![Build Status](https://github.com/company-mode/company-mode/actions/workflows/ci.yml/badge.svg)](https://github.com/company-mode/company-mode/actions/workflows/ci.yml) -[![GNU Emacs](https://img.shields.io/static/v1?logo=gnuemacs&logoColor=fafafa&label=Made%20for&message=GNU%20Emacs&color=7F5AB6&style=flat)](https://www.gnu.org/software/emacs/) -[![MELPA](https://melpa.org/packages/company-badge.svg)](https://melpa.org/#/company) -[![GNU ELPA](https://elpa.gnu.org/packages/company.svg)](https://elpa.gnu.org/packages/company.html) -[![GNU-devel ELPA](https://elpa.gnu.org/devel/company.svg)](https://elpa.gnu.org/devel/company.html) diff --git a/elpa/company-0.10.2/company-abbrev.el b/elpa/company-0.10.2/company-abbrev.el @@ -1,52 +0,0 @@ -;;; company-abbrev.el --- company-mode completion backend for abbrev - -;; Copyright (C) 2009-2011, 2013-2015, 2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'abbrev) - -(defun company-abbrev-insert (match) - "Replace MATCH with the expanded abbrev." - (expand-abbrev)) - -;;;###autoload -(defun company-abbrev (command &optional arg &rest ignored) - "`company-mode' completion backend for abbrev." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-abbrev - 'company-abbrev-insert)) - (prefix (company-grab-symbol)) - (candidates (nconc - (delete "" (all-completions arg global-abbrev-table)) - (delete "" (all-completions arg local-abbrev-table)))) - (kind 'snippet) - (meta (abbrev-expansion arg)) - (post-completion (expand-abbrev)))) - -(provide 'company-abbrev) -;;; company-abbrev.el ends here diff --git a/elpa/company-0.10.2/company-autoloads.el b/elpa/company-0.10.2/company-autoloads.el @@ -1,329 +0,0 @@ -;;; company-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*- -;; Generated by the `loaddefs-generate' function. - -;; This file is part of GNU Emacs. - -;;; Code: - -(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path))) - - - -;;; Generated autoloads from company.el - -(autoload 'company-mode "company" "\ -\"complete anything\"; is an in-buffer completion framework. - -Completion starts automatically, depending on the values -`company-idle-delay' and `company-minimum-prefix-length'. - -Completion can be controlled with the commands: -`company-complete-common', `company-complete-selection', `company-complete', -`company-select-next', `company-select-previous'. If these commands are -called before `company-idle-delay', completion will also start. - -Completions can be searched with `company-search-candidates' or -`company-filter-candidates'. These can be used while completion is -inactive, as well. - -The completion data is retrieved using `company-backends' and displayed -using `company-frontends'. If you want to start a specific backend, call -it interactively or use `company-begin-backend'. - -By default, the completions list is sorted alphabetically, unless the -backend chooses otherwise, or `company-transformers' changes it later. - -regular keymap (`company-mode-map'): - -\\{company-mode-map} -keymap during active completions (`company-active-map'): - -\\{company-active-map} - -This is a minor mode. If called interactively, toggle the -`Company mode' mode. If the prefix argument is positive, enable -the mode, and if it is zero or negative, disable the mode. - -If called from Lisp, toggle the mode if ARG is `toggle'. Enable -the mode if ARG is nil, omitted, or is a positive number. -Disable the mode if ARG is a negative number. - -To check whether the minor mode is enabled in the current buffer, -evaluate `company-mode'. - -The mode's hook is called both when the mode is enabled and when -it is disabled. - -(fn &optional ARG)" t) -(put 'global-company-mode 'globalized-minor-mode t) -(defvar global-company-mode nil "\ -Non-nil if Global Company mode is enabled. -See the `global-company-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `global-company-mode'.") -(custom-autoload 'global-company-mode "company" nil) -(autoload 'global-company-mode "company" "\ -Toggle Company mode in all buffers. -With prefix ARG, enable Global Company mode if ARG is positive; -otherwise, disable it. - -If called from Lisp, toggle the mode if ARG is `toggle'. -Enable the mode if ARG is nil, omitted, or is a positive number. -Disable the mode if ARG is a negative number. - -Company mode is enabled in all buffers where `company-mode-on' would -do it. - -See `company-mode' for more information on Company mode. - -(fn &optional ARG)" t) -(autoload 'company-manual-begin "company" nil t) -(autoload 'company-complete "company" "\ -Insert the common part of all candidates or the current selection. -The first time this is called, the common part is inserted, the second -time, or when the selection has been changed, the selected candidate is -inserted." t) -(register-definition-prefixes "company" '("company-")) - - -;;; Generated autoloads from company-abbrev.el - -(autoload 'company-abbrev "company-abbrev" "\ -`company-mode' completion backend for abbrev. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-abbrev" '("company-abbrev-insert")) - - -;;; Generated autoloads from company-bbdb.el - -(autoload 'company-bbdb "company-bbdb" "\ -`company-mode' completion backend for BBDB. - -(fn COMMAND &optional ARG &rest IGNORE)" t) -(register-definition-prefixes "company-bbdb" '("company-bbdb-")) - - -;;; Generated autoloads from company-capf.el - -(register-definition-prefixes "company-capf" '("company-")) - - -;;; Generated autoloads from company-clang.el - -(register-definition-prefixes "company-clang" '("company-clang")) - - -;;; Generated autoloads from company-cmake.el - -(register-definition-prefixes "company-cmake" '("company-cmake")) - - -;;; Generated autoloads from company-css.el - -(autoload 'company-css "company-css" "\ -`company-mode' completion backend for `css-mode'. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-css" '("company-css-")) - - -;;; Generated autoloads from company-dabbrev.el - -(autoload 'company-dabbrev "company-dabbrev" "\ -dabbrev-like `company-mode' completion backend. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-dabbrev" '("company-dabbrev-")) - - -;;; Generated autoloads from company-dabbrev-code.el - -(autoload 'company-dabbrev-code "company-dabbrev-code" "\ -dabbrev-like `company-mode' backend for code. -The backend looks for all symbols in the current buffer that aren't in -comments or strings. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-dabbrev-code" '("company-dabbrev-code-")) - - -;;; Generated autoloads from company-elisp.el - -(autoload 'company-elisp "company-elisp" "\ -`company-mode' completion backend for Emacs Lisp. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-elisp" '("company-elisp-")) - - -;;; Generated autoloads from company-etags.el - -(autoload 'company-etags "company-etags" "\ -`company-mode' completion backend for etags. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-etags" '("company-etags-")) - - -;;; Generated autoloads from company-files.el - -(autoload 'company-files "company-files" "\ -`company-mode' completion backend existing file names. -Completions works for proper absolute and relative files paths. -File paths with spaces are only supported inside strings. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-files" '("company-file")) - - -;;; Generated autoloads from company-gtags.el - -(autoload 'company-gtags "company-gtags" "\ -`company-mode' completion backend for GNU Global. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-gtags" '("company-gtags-")) - - -;;; Generated autoloads from company-ispell.el - -(autoload 'company-ispell "company-ispell" "\ -`company-mode' completion backend using Ispell. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-ispell" '("company-ispell-")) - - -;;; Generated autoloads from company-keywords.el - -(autoload 'company-keywords "company-keywords" "\ -`company-mode' backend for programming language keywords. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-keywords" '("company-keywords-")) - - -;;; Generated autoloads from company-nxml.el - -(autoload 'company-nxml "company-nxml" "\ -`company-mode' completion backend for `nxml-mode'. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-nxml" '("company-nxml-")) - - -;;; Generated autoloads from company-oddmuse.el - -(autoload 'company-oddmuse "company-oddmuse" "\ -`company-mode' completion backend for `oddmuse-mode'. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-oddmuse" '("company-oddmuse-")) - - -;;; Generated autoloads from company-semantic.el - -(autoload 'company-semantic "company-semantic" "\ -`company-mode' completion backend using CEDET Semantic. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-semantic" '("company-semantic-")) - - -;;; Generated autoloads from company-template.el - -(register-definition-prefixes "company-template" '("company-template-")) - - -;;; Generated autoloads from company-tempo.el - -(autoload 'company-tempo "company-tempo" "\ -`company-mode' completion backend for tempo. - -(fn COMMAND &optional ARG &rest IGNORED)" t) -(register-definition-prefixes "company-tempo" '("company-tempo-")) - - -;;; Generated autoloads from company-tng.el - -(autoload 'company-tng-frontend "company-tng" "\ -When the user changes the selection at least once, this -frontend will display the candidate in the buffer as if it's -already there and any key outside of `company-active-map' will -confirm the selection and finish the completion. - -(fn COMMAND)") -(define-obsolete-function-alias 'company-tng-configure-default 'company-tng-mode "0.10.0" "Applies the default configuration to enable company-tng.") -(defvar company-tng-mode nil "\ -Non-nil if Company-Tng mode is enabled. -See the `company-tng-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `company-tng-mode'.") -(custom-autoload 'company-tng-mode "company-tng" nil) -(autoload 'company-tng-mode "company-tng" "\ -This minor mode enables `company-tng-frontend'. - -This is a global minor mode. If called interactively, toggle the -`Company-Tng mode' mode. If the prefix argument is positive, -enable the mode, and if it is zero or negative, disable the mode. - -If called from Lisp, toggle the mode if ARG is `toggle'. Enable -the mode if ARG is nil, omitted, or is a positive number. -Disable the mode if ARG is a negative number. - -To check whether the minor mode is enabled in the current buffer, -evaluate `(default-value \\='company-tng-mode)'. - -The mode's hook is called both when the mode is enabled and when -it is disabled. - -(fn &optional ARG)" t) -(register-definition-prefixes "company-tng" '("company-tng-")) - - -;;; Generated autoloads from company-yasnippet.el - -(autoload 'company-yasnippet "company-yasnippet" "\ -`company-mode' backend for `yasnippet'. - -This backend should be used with care, because as long as there are -snippets defined for the current major mode, this backend will always -shadow backends that come after it. Recommended usages: - -* In a buffer-local value of `company-backends', grouped with a backend or - several that provide actual text completions. - - (add-hook \\='js-mode-hook - (lambda () - (set (make-local-variable \\='company-backends) - \\='((company-dabbrev-code company-yasnippet))))) - -* After keyword `:with', grouped with other backends. - - (push \\='(company-semantic :with company-yasnippet) company-backends) - -* Not in `company-backends', just bound to a key. - - (global-set-key (kbd \"C-c y\") \\='company-yasnippet) - -(fn COMMAND &optional ARG &rest IGNORE)" t) -(register-definition-prefixes "company-yasnippet" '("company-yasnippet-")) - -;;; End of scraped data - -(provide 'company-autoloads) - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; no-native-compile: t -;; coding: utf-8-emacs-unix -;; End: - -;;; company-autoloads.el ends here diff --git a/elpa/company-0.10.2/company-bbdb.el b/elpa/company-0.10.2/company-bbdb.el @@ -1,63 +0,0 @@ -;;; company-bbdb.el --- company-mode completion backend for BBDB in message-mode - -;; Copyright (C) 2013-2016, 2020 Free Software Foundation, Inc. - -;; Author: Jan Tatarik <jan.tatarik@gmail.com> - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - -(require 'company) -(require 'cl-lib) - -(declare-function bbdb-record-get-field "bbdb") -(declare-function bbdb-records "bbdb") -(declare-function bbdb-dwim-mail "bbdb-com") -(declare-function bbdb-search "bbdb-com") - -(defgroup company-bbdb nil - "Completion backend for BBDB." - :group 'company) - -(defcustom company-bbdb-modes '(message-mode) - "Major modes in which `company-bbdb' may complete." - :type '(repeat (symbol :tag "Major mode")) - :package-version '(company . "0.8.8")) - -(defun company-bbdb--candidates (arg) - (cl-mapcan (lambda (record) - (mapcar (lambda (mail) (bbdb-dwim-mail record mail)) - (bbdb-record-get-field record 'mail))) - (eval '(bbdb-search (bbdb-records) arg nil arg)))) - -;;;###autoload -(defun company-bbdb (command &optional arg &rest ignore) - "`company-mode' completion backend for BBDB." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-bbdb)) - (prefix (and (memq major-mode company-bbdb-modes) - (featurep 'bbdb-com) - (let ((case-fold-search t)) - (looking-back - "^\\([^ :]*-\\)?\\(To\\|B?Cc\\|From\\):.*? *\\([^,;]*\\)" - (line-beginning-position))) - (match-string-no-properties 3))) - (candidates (company-bbdb--candidates arg)) - (sorted t) - (no-cache t))) - -(provide 'company-bbdb) -;;; company-bbdb.el ends here diff --git a/elpa/company-0.10.2/company-capf.el b/elpa/company-0.10.2/company-capf.el @@ -1,257 +0,0 @@ -;;; company-capf.el --- company-mode completion-at-point-functions backend -*- lexical-binding: t -*- - -;; Copyright (C) 2013-2022 Free Software Foundation, Inc. - -;; Author: Stefan Monnier <monnier@iro.umontreal.ca> - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; -;; The CAPF back-end provides a bridge to the standard -;; completion-at-point-functions facility, and thus can support any major mode -;; that defines a proper completion function, including emacs-lisp-mode, -;; css-mode and nxml-mode. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -;; Amortizes several calls to a c-a-p-f from the same position. -(defvar company--capf-cache nil) - -;; FIXME: Provide a way to save this info once in Company itself -;; (https://github.com/company-mode/company-mode/pull/845). -(defvar-local company-capf--current-completion-data nil - "Value last returned by `company-capf' when called with `candidates'. -For most properties/actions, this is just what we need: the exact values -that accompanied the completion table that's currently is use. - -`company-capf', however, could be called at some different positions during -a completion session (most importantly, by `company-sort-by-occurrence'), -so we can't just use the preceding variable instead.") - -(defun company--capf-data () - (let ((cache company--capf-cache)) - (if (and (equal (current-buffer) (car cache)) - (equal (point) (car (setq cache (cdr cache)))) - (equal (buffer-chars-modified-tick) (car (setq cache (cdr cache))))) - (cadr cache) - (let ((data (company--capf-data-real))) - (setq company--capf-cache - (list (current-buffer) (point) (buffer-chars-modified-tick) data)) - data)))) - -(defun company--contains (elt lst) - (when-let ((cur (car lst))) - (cond - ((symbolp cur) - (or (eq elt cur) - (company--contains elt (cdr lst)))) - ((listp cur) - (or (company--contains elt cur) - (company--contains elt (cdr lst))))))) - -(defun company--capf-data-real () - (cl-letf* (((default-value 'completion-at-point-functions) - (if (company--contains 'company-etags company-backends) - ;; Ignore tags-completion-at-point-function because it subverts - ;; company-etags in the default value of company-backends, where - ;; the latter comes later. - (remove 'tags-completion-at-point-function - (default-value 'completion-at-point-functions)) - (default-value 'completion-at-point-functions))) - (completion-at-point-functions (company--capf-workaround)) - (data (run-hook-wrapped 'completion-at-point-functions - ;; Ignore misbehaving functions. - #'company--capf-wrapper 'optimist))) - (when (and (consp (cdr data)) (integer-or-marker-p (nth 1 data))) data))) - -(defun company--capf-wrapper (fun which) - (let ((buffer-read-only t) - (inhibit-read-only nil) - (completion-in-region-function - (lambda (beg end coll pred) - (throw 'company--illegal-completion-in-region - (list fun beg end coll :predicate pred))))) - (catch 'company--illegal-completion-in-region - (condition-case nil - (completion--capf-wrapper fun which) - (buffer-read-only nil))))) - -(declare-function python-shell-get-process "python") - -(defun company--capf-workaround () - ;; For http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18067 - (if (or (not (listp completion-at-point-functions)) - (not (memq 'python-completion-complete-at-point completion-at-point-functions)) - (python-shell-get-process)) - completion-at-point-functions - (remq 'python-completion-complete-at-point completion-at-point-functions))) - -(defun company-capf--save-current-data (data) - (setq company-capf--current-completion-data data) - (add-hook 'company-after-completion-hook - #'company-capf--clear-current-data nil t)) - -(defun company-capf--clear-current-data (_ignored) - (setq company-capf--current-completion-data nil)) - -(defvar-local company-capf--sorted nil) - -(defun company-capf (command &optional arg &rest _args) - "`company-mode' backend using `completion-at-point-functions'." - (interactive (list 'interactive)) - (pcase command - (`interactive (company-begin-backend 'company-capf)) - (`prefix - (let ((res (company--capf-data))) - (when res - (let ((length (plist-get (nthcdr 4 res) :company-prefix-length)) - (prefix (buffer-substring-no-properties (nth 1 res) (point)))) - (cond - ((> (nth 2 res) (point)) 'stop) - (length (cons prefix length)) - (t prefix)))))) - (`candidates - (company-capf--candidates arg)) - (`sorted - company-capf--sorted) - (`match - ;; Ask the for the `:company-match' function. If that doesn't help, - ;; fallback to sniffing for face changes to get a suitable value. - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-match))) - (if f (funcall f arg) - (let* ((match-start nil) (pos -1) - (prop-value nil) (faces nil) - (has-face-p nil) chunks - (limit (length arg))) - (while (< pos limit) - (setq pos - (if (< pos 0) 0 (next-property-change pos arg limit))) - (setq prop-value (or - (get-text-property pos 'face arg) - (get-text-property pos 'font-lock-face arg)) - faces (if (listp prop-value) prop-value (list prop-value)) - has-face-p (memq 'completions-common-part faces)) - (cond ((and (not match-start) has-face-p) - (setq match-start pos)) - ((and match-start (not has-face-p)) - (push (cons match-start pos) chunks) - (setq match-start nil)))) - (nreverse chunks))))) - (`duplicates t) - (`no-cache t) ;Not much can be done here, as long as we handle - ;non-prefix matches. - (`meta - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-docsig))) - (when f (funcall f arg)))) - (`doc-buffer - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-doc-buffer))) - (when f (funcall f arg)))) - (`location - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-location))) - (when f (funcall f arg)))) - (`annotation - (company-capf--annotation arg)) - (`kind - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-kind))) - (when f (funcall f arg)))) - (`deprecated - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-deprecated))) - (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. - (`post-completion - (company--capf-post-completion arg)) - )) - -(defun company-capf--annotation (arg) - (let* ((f (or (plist-get (nthcdr 4 company-capf--current-completion-data) - :annotation-function) - ;; FIXME: Add a test. - (cdr (assq 'annotation-function - (completion-metadata - (buffer-substring (nth 1 company-capf--current-completion-data) - (nth 2 company-capf--current-completion-data)) - (nth 3 company-capf--current-completion-data) - (plist-get (nthcdr 4 company-capf--current-completion-data) - :predicate)))))) - (annotation (when f (funcall f arg)))) - (if (and company-format-margin-function - (equal annotation " <f>") ; elisp-completion-at-point, pre-icons - (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-kind)) - nil - annotation))) - -(defun company-capf--candidates (input) - (let ((res (company--capf-data))) - (company-capf--save-current-data res) - (when res - (let* ((table (nth 3 res)) - (pred (plist-get (nthcdr 4 res) :predicate)) - (meta (completion-metadata - (buffer-substring (nth 1 res) (nth 2 res)) - table pred)) - (candidates (completion-all-completions input table pred - (length input) - meta)) - (sortfun (cdr (assq 'display-sort-function meta))) - (last (last candidates)) - (base-size (and (numberp (cdr last)) (cdr last)))) - (when base-size - (setcdr last nil)) - (setq company-capf--sorted (functionp sortfun)) - (when sortfun - (setq candidates (funcall sortfun candidates))) - (if (not (zerop (or base-size 0))) - (let ((before (substring input 0 base-size))) - (mapcar (lambda (candidate) - (concat before candidate)) - candidates)) - candidates))))) - -(defun company--capf-post-completion (arg) - (let* ((res company-capf--current-completion-data) - (exit-function (plist-get (nthcdr 4 res) :exit-function)) - (table (nth 3 res))) - (if exit-function - ;; We can more or less know when the user is done with completion, - ;; so we do something different than `completion--done'. - (funcall exit-function arg - ;; FIXME: Should probably use an additional heuristic: - ;; completion-at-point doesn't know when the user picked a - ;; particular candidate explicitly (it only checks whether - ;; further completions exist). Whereas company user can press - ;; RET (or use implicit completion with company-tng). - (if (= (car (completion-boundaries arg table nil "")) - (length arg)) - 'sole - 'finished))))) - -(provide 'company-capf) - -;;; company-capf.el ends here diff --git a/elpa/company-0.10.2/company-clang.el b/elpa/company-0.10.2/company-clang.el @@ -1,430 +0,0 @@ -;;; company-clang.el --- company-mode completion backend for Clang -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2011, 2013-2023 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'company-template) -(require 'cl-lib) - -(defgroup company-clang nil - "Completion backend for Clang." - :group 'company) - -(defcustom company-clang-executable - (executable-find "clang") - "Location of clang executable." - :type 'file) - -(defcustom company-clang-begin-after-member-access t - "When non-nil, start automatic completion after member access operators. - -Automatic completion starts whenever the current symbol is preceded by -\".\", \"->\" or \"::\", ignoring `company-minimum-prefix-length'. - -If `company-begin-commands' is a list, it should include `c-electric-lt-gt' -and `c-electric-colon', for automatic completion right after \">\" and -\":\"." - :type 'boolean) - -(defcustom company-clang-use-compile-flags-txt nil - "When non-nil, use flags from compile_flags.txt if present. - -The lines from that files will be appended to `company-clang-arguments'. - -And if such file is found, Clang is called from the directory containing -it. That allows the flags use relative file names within the project." - :type 'boolean - :safe 'booleanp) - -(defcustom company-clang-arguments nil - "A list of additional arguments to pass to clang when completing. -Prefix files (-include ...) can be selected with `company-clang-set-prefix' -or automatically through a custom `company-clang-prefix-guesser'." - :type '(repeat (string :tag "Argument"))) - -(defcustom company-clang-prefix-guesser 'company-clang-guess-prefix - "A function to determine the prefix file for the current buffer." - :type '(function :tag "Guesser function" nil)) - -(defvar company-clang-modes '(c-mode c++-mode objc-mode) - "Major modes which clang may complete.") - -(defcustom company-clang-insert-arguments t - "When non-nil, insert function arguments as a template after completion." - :type 'boolean - :package-version '(company . "0.8.0")) - -;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar company-clang--prefix nil) - -(defsubst company-clang--guess-pch-file (file) - (let ((dir (directory-file-name (file-name-directory file)))) - (when (equal (file-name-nondirectory dir) "Classes") - (setq dir (file-name-directory dir))) - (car (directory-files dir t "\\([^.]h\\|[^h]\\).pch\\'" t)))) - -(defsubst company-clang--file-substring (file beg end) - (with-temp-buffer - (insert-file-contents-literally file nil beg end) - (buffer-string))) - -(defun company-clang-guess-prefix () - "Try to guess the prefix file for the current buffer." - ;; Prefixes seem to be called .pch. Pre-compiled headers do, too. - ;; So we look at the magic number to rule them out. - (let* ((file (company-clang--guess-pch-file buffer-file-name)) - (magic-number (and file (company-clang--file-substring file 0 4)))) - (unless (member magic-number '("CPCH" "gpch")) - file))) - -(defun company-clang-set-prefix (&optional prefix) - "Use PREFIX as a prefix (-include ...) file for clang completion." - (interactive (let ((def (funcall company-clang-prefix-guesser))) - (unless (stringp def) - (setq def default-directory)) - (list (read-file-name "Prefix file: " - (when def (file-name-directory def)) - def t (when def (file-name-nondirectory def)))))) - ;; TODO: pre-compile? - (setq company-clang--prefix (and (stringp prefix) - (file-regular-p prefix) - prefix))) - -;; Clean-up on exit. -(add-hook 'kill-emacs-hook 'company-clang-set-prefix) - -;; parsing ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Do we ever see OVERLOAD (or OVERRIDE)? -(defconst company-clang--completion-pattern - "^COMPLETION: \\_<\\(%s[a-zA-Z0-9_:]*\\|Pattern\\)\\(?:\\(?: (InBase)\\)? : \\(.*\\)$\\)?$") - -(defconst company-clang--error-buffer-name "*clang-error*") - -(defun company-clang--lang-option () - (if (eq major-mode 'objc-mode) - (if (string= "m" (file-name-extension buffer-file-name)) - "objective-c" "objective-c++") - (substring (symbol-name major-mode) 0 -5))) - -(defun company-clang--parse-output (prefix _objc) - (goto-char (point-min)) - (let ((pattern (format company-clang--completion-pattern - (regexp-quote prefix))) - (case-fold-search nil) - (results (make-hash-table :test 'equal :size (/ (point-max) 100))) - lines) - (while (re-search-forward pattern nil t) - (let ((match (match-string-no-properties 1)) - (meta (match-string-no-properties 2))) - (when (equal match "Pattern") - (setq match (company-clang--pattern-to-match meta))) - (when (string-match ":" match) - (setq match (substring match 0 (match-beginning 0)))) - ;; Avoiding duplicates: - ;; https://github.com/company-mode/company-mode/issues/841 - (cond - ;; Either meta != completion (not a macro) - ((not (equal match meta)) - (puthash match meta results)) - ;; Or it's the first time we see this completion - ((eq (gethash match results 'none) 'none) - (puthash match nil results))))) - (maphash - (lambda (match meta) - (when meta - (put-text-property 0 1 'meta (company-clang--strip-formatting meta) match)) - (push match lines)) - results) - lines)) - -(defun company-clang--pattern-to-match (pat) - (let ((start 0) - (end nil)) - (when (string-match "#]" pat) - (setq start (match-end 0))) - (when (string-match "[ \(]<#" pat start) - (setq end (match-beginning 0))) - (substring pat start end))) - -(defun company-clang--meta (candidate) - (get-text-property 0 'meta candidate)) - -(defun company-clang--annotation (candidate) - (let ((ann (company-clang--annotation-1 candidate))) - (if (not (and ann (string-prefix-p "(*)" ann))) - ann - (with-temp-buffer - (insert ann) - (search-backward ")") - (let ((pt (1+ (point)))) - (re-search-forward ".\\_>" nil t) - (delete-region pt (point))) - (buffer-string))))) - -;; TODO: Parse the original formatting here, rather than guess. -;; Strip it every time in the `meta' handler instead. -(defun company-clang--annotation-1 (candidate) - (let ((meta (company-clang--meta candidate))) - (cond - ((null meta) nil) - ((string-match "[^:]:[^:]" meta) - (substring meta (1+ (match-beginning 0)))) - ((string-match "(anonymous)" meta) nil) - ((string-match "\\((.*)[ a-z]*\\'\\)" meta) - (let ((paren (match-beginning 1))) - (if (not (eq (aref meta (1- paren)) ?>)) - (match-string 1 meta) - (with-temp-buffer - (insert meta) - (goto-char paren) - (substring meta (1- (search-backward "<")))))))))) - -(defun company-clang--strip-formatting (text) - (replace-regexp-in-string - "#]" " " - (replace-regexp-in-string "[<{[]#\\|#[>}]" "" text t) - t)) - -(defun company-clang--handle-error (res args) - (goto-char (point-min)) - (let* ((buf (get-buffer-create company-clang--error-buffer-name)) - (cmd (concat company-clang-executable " " (mapconcat 'identity args " "))) - (pattern (format company-clang--completion-pattern "")) - (message-truncate-lines t) - (err (if (and (re-search-forward pattern nil t) - ;; Something in the Windows build? - ;; Looks like Clang doesn't always include the error text - ;; before completions (even if exited with error). - (> (match-beginning 0) (point-min))) - (buffer-substring-no-properties (point-min) - (1- (match-beginning 0))) - ;; Warn the user more aggressively if no match was found. - (message "clang failed with error %d: %s" res cmd) - (buffer-string)))) - - (with-current-buffer buf - (let ((inhibit-read-only t)) - (erase-buffer) - (insert (current-time-string) - (format "\nclang failed with error %d:\n" res) - cmd "\n\n") - (insert err) - (setq buffer-read-only t) - (goto-char (point-min)))))) - -(defun company-clang--start-process (prefix callback &rest args) - (let* ((objc (derived-mode-p 'objc-mode)) - (buf (get-buffer-create "*clang-output*")) - ;; Looks unnecessary in Emacs 25.1 and later. - ;; (Inconclusive, needs more testing): - ;; https://github.com/company-mode/company-mode/pull/288#issuecomment-72491808 - (process-adaptive-read-buffering nil) - (existing-process (get-buffer-process buf))) - (when existing-process - (kill-process existing-process)) - (with-current-buffer buf - (erase-buffer) - (setq buffer-undo-list t)) - (let* ((process-connection-type nil) - (process (apply #'start-file-process "company-clang" buf - company-clang-executable args))) - (set-process-sentinel - process - (lambda (proc status) - (unless (string-match-p "hangup\\|killed" status) - (funcall - callback - (let ((res (process-exit-status proc))) - (with-current-buffer buf - (unless (eq 0 res) - (company-clang--handle-error res args)) - ;; Still try to get any useful input. - (company-clang--parse-output prefix objc))))))) - (unless (company-clang--auto-save-p) - (send-region process (point-min) (point-max)) - (send-string process "\n") - (process-send-eof process))))) - -(defsubst company-clang--build-location (pos) - (save-excursion - (goto-char pos) - (format "%s:%d:%d" - (if (company-clang--auto-save-p) buffer-file-name "-") - (line-number-at-pos) - (1+ (length - (encode-coding-region - (line-beginning-position) - (point) - 'utf-8 - t)))))) - -(defsubst company-clang--build-complete-args (pos) - (append '("-fsyntax-only" "-Xclang" "-code-completion-macros") - (unless (company-clang--auto-save-p) - (list "-x" (company-clang--lang-option))) - (company-clang--arguments) - (when (stringp company-clang--prefix) - (list "-include" (expand-file-name company-clang--prefix))) - (list "-Xclang" (format "-code-completion-at=%s" - (company-clang--build-location pos))) - (list (if (company-clang--auto-save-p) buffer-file-name "-")))) - -(defun company-clang--arguments () - (let ((fname "compile_flags.txt") - (args company-clang-arguments) - current-dir-rel) - (when company-clang-use-compile-flags-txt - (let ((dir (locate-dominating-file default-directory fname))) - (when dir - (setq current-dir-rel (file-relative-name default-directory dir)) - (setq default-directory dir) - (with-temp-buffer - (insert-file-contents fname) - (setq args - (append - args - (split-string (buffer-substring-no-properties - (point-min) (point-max)) - "[\n\r]+" - t - "[ \t]+")))) - (unless (equal current-dir-rel "./") - (push (format "-I%s" current-dir-rel) args))))) - args)) - -(defun company-clang--candidates (prefix callback) - (and (company-clang--auto-save-p) - (buffer-modified-p) - (basic-save-buffer)) - (when (null company-clang--prefix) - (company-clang-set-prefix (or (funcall company-clang-prefix-guesser) - 'none))) - (let ((default-directory default-directory)) - (apply 'company-clang--start-process - prefix - callback - (company-clang--build-complete-args - (if (company-clang--check-version 4.0 9.0) - (point) - (- (point) (length prefix))))))) - -(defun company-clang--prefix () - (if company-clang-begin-after-member-access - (company-grab-symbol-cons "\\.\\|->\\|::" 2) - (company-grab-symbol))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst company-clang-required-version 1.1) - -(defvar company-clang--version nil) - -(defun company-clang--auto-save-p () - (not - (company-clang--check-version 2.9 3.1))) - -(defun company-clang--check-version (min apple-min) - (pcase-exhaustive company-clang--version - (`(apple . ,ver) (>= ver apple-min)) - (`(normal . ,ver) (>= ver min)))) - -(defsubst company-clang-version () - "Return the version of `company-clang-executable'." - (with-temp-buffer - (call-process company-clang-executable nil t nil "--version") - (goto-char (point-min)) - (if (re-search-forward - "\\(clang\\|Apple LLVM\\|bcc32x\\|bcc64\\) version \\([0-9.]+\\)" nil t) - (cons - (if (equal (match-string-no-properties 1) "Apple LLVM") - 'apple - 'normal) - (string-to-number (match-string-no-properties 2))) - 0))) - -(defun company-clang (command &optional arg &rest _ignored) - "`company-mode' completion backend for Clang. -Clang is a parser for C and ObjC. Clang version 1.1 or newer is required. - -Additional command line arguments can be specified in -`company-clang-arguments'. Prefix files (-include ...) can be selected -with `company-clang-set-prefix' or automatically through a custom -`company-clang-prefix-guesser'. - -With Clang versions before 2.9, we have to save the buffer before -performing completion. With Clang 2.9 and later, buffer contents are -passed via standard input." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-clang)) - (init (when (memq major-mode company-clang-modes) - (unless company-clang-executable - (error "Company found no clang executable")) - (setq company-clang--version (company-clang-version)) - (unless (company-clang--check-version - company-clang-required-version - company-clang-required-version) - (error "Company requires clang version %s" - company-clang-required-version)))) - (prefix (and (memq major-mode company-clang-modes) - buffer-file-name - company-clang-executable - (not (company-in-string-or-comment)) - (or (company-clang--prefix) 'stop))) - (candidates (cons :async - (lambda (cb) (company-clang--candidates arg cb)))) - (meta (company-clang--meta arg)) - (kind (company-clang--kind arg)) - (annotation (company-clang--annotation arg)) - (post-completion (let ((anno (company-clang--annotation arg))) - (when (and company-clang-insert-arguments anno) - (insert anno) - (if (string-match "\\`:[^:]" anno) - (company-template-objc-templatify anno) - (company-template-c-like-templatify - (concat arg anno)))))))) - -(defun company-clang--kind (arg) - ;; XXX: Not very precise. - ;; E.g. it will say that an arg-less ObjC method is a variable (perhaps we - ;; could look around for brackets, etc, if there any actual users who's - ;; bothered by it). - ;; And we can't distinguish between local vars and struct fields. - ;; Or between keywords and macros. - (let ((meta (company-clang--meta arg))) - (cond - ((null meta) 'keyword) - ((string-match "(" meta) - (if (string-match-p (format "\\`%s *\\'" (regexp-quote arg)) - (substring meta 0 (match-beginning 0))) - 'keyword ; Also macro, actually (no return type). - 'function)) - (t 'variable)))) - -(provide 'company-clang) -;;; company-clang.el ends here diff --git a/elpa/company-0.10.2/company-cmake.el b/elpa/company-0.10.2/company-cmake.el @@ -1,207 +0,0 @@ -;;; company-cmake.el --- company-mode completion backend for CMake - -;; Copyright (C) 2013-2015, 2017-2018, 2020 Free Software Foundation, Inc. - -;; Author: Chen Bin <chenbin DOT sh AT gmail> -;; Version: 0.2 - -;; This program is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; -;; company-cmake offers completions for module names, variable names and -;; commands used by CMake. And their descriptions. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defgroup company-cmake nil - "Completion backend for CMake." - :group 'company) - -(defcustom company-cmake-executable - (executable-find "cmake") - "Location of cmake executable." - :type 'file) - -(defvar company-cmake-executable-arguments - '("--help-command-list" - "--help-module-list" - "--help-property-list" - "--help-variable-list") - "The arguments we pass to cmake, separately. -They affect which types of symbols we get completion candidates for.") - -(defvar company-cmake--completion-pattern - "^\\(%s[a-zA-Z0-9_<>]%s\\)$" - "Regexp to match the candidates.") - -(defvar company-cmake-modes '(cmake-mode) - "Major modes in which cmake may complete.") - -(defvar company-cmake--candidates-cache nil - "Cache for the raw candidates.") - -(defvar company-cmake--meta-command-cache nil - "Cache for command arguments to retrieve descriptions for the candidates.") - -(defun company-cmake--replace-tags (rlt) - (setq rlt (replace-regexp-in-string - "\\(.*?\\(IS_GNU\\)?\\)<LANG>\\(.*\\)" - (lambda (_match) - (mapconcat 'identity - (if (match-beginning 2) - '("\\1CXX\\3" "\\1C\\3" "\\1G77\\3") - '("\\1CXX\\3" "\\1C\\3" "\\1Fortran\\3")) - "\n")) - rlt t)) - (setq rlt (replace-regexp-in-string - "\\(.*\\)<CONFIG>\\(.*\\)" - (mapconcat 'identity '("\\1DEBUG\\2" "\\1RELEASE\\2" - "\\1RELWITHDEBINFO\\2" "\\1MINSIZEREL\\2") - "\n") - rlt)) - rlt) - -(defun company-cmake--fill-candidates-cache (arg) - "Fill candidates cache if needed." - (let (rlt) - (unless company-cmake--candidates-cache - (setq company-cmake--candidates-cache (make-hash-table :test 'equal))) - - ;; If hash is empty, fill it. - (unless (gethash arg company-cmake--candidates-cache) - (with-temp-buffer - (let ((res (call-process company-cmake-executable nil t nil arg))) - (unless (zerop res) - (message "cmake executable exited with error=%d" res))) - (setq rlt (buffer-string))) - (setq rlt (company-cmake--replace-tags rlt)) - (puthash arg rlt company-cmake--candidates-cache)) - )) - -(defun company-cmake--parse (prefix content cmd) - (let ((start 0) - (pattern (format company-cmake--completion-pattern - (regexp-quote prefix) - (if (zerop (length prefix)) "+" "*"))) - (lines (split-string content "\n")) - match - rlt) - (dolist (line lines) - (when (string-match pattern line) - (let ((match (match-string 1 line))) - (when match - (puthash match cmd company-cmake--meta-command-cache) - (push match rlt))))) - rlt)) - -(defun company-cmake--candidates (prefix) - (let (results - cmd-opts - str) - - (unless company-cmake--meta-command-cache - (setq company-cmake--meta-command-cache (make-hash-table :test 'equal))) - - (dolist (arg company-cmake-executable-arguments) - (company-cmake--fill-candidates-cache arg) - (setq cmd-opts (replace-regexp-in-string "-list$" "" arg) ) - - (setq str (gethash arg company-cmake--candidates-cache)) - (when str - (setq results (nconc results - (company-cmake--parse prefix str cmd-opts))))) - results)) - -(defun company-cmake--unexpand-candidate (candidate) - (cond - ((string-match "^CMAKE_\\(C\\|CXX\\|Fortran\\)\\(_.*\\)$" candidate) - (setq candidate (concat "CMAKE_<LANG>" (match-string 2 candidate)))) - - ;; C flags - ((string-match "^\\(.*_\\)IS_GNU\\(C\\|CXX\\|G77\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) "IS_GNU<LANG>"))) - - ;; C flags - ((string-match "^\\(.*_\\)OVERRIDE_\\(C\\|CXX\\|Fortran\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) "OVERRIDE_<LANG>"))) - - ((string-match "^\\(.*\\)\\(_DEBUG\\|_RELEASE\\|_RELWITHDEBINFO\\|_MINSIZEREL\\)\\(.*\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) - "_<CONFIG>" - (match-string 3 candidate))))) - candidate) - -(defun company-cmake--meta (candidate) - (let ((cmd-opts (gethash candidate company-cmake--meta-command-cache)) - result) - (setq candidate (company-cmake--unexpand-candidate candidate)) - - ;; Don't cache the documentation of every candidate (command) - ;; Cache in this case will cost too much memory. - (with-temp-buffer - (call-process company-cmake-executable nil t nil cmd-opts candidate) - ;; Go to the third line, trim it and return the result. - ;; Tested with cmake 2.8.9. - (goto-char (point-min)) - (forward-line 2) - (setq result (buffer-substring-no-properties (line-beginning-position) - (line-end-position))) - (setq result (replace-regexp-in-string "^[ \t\n\r]+" "" result)) - result))) - -(defun company-cmake--doc-buffer (candidate) - (let ((cmd-opts (gethash candidate company-cmake--meta-command-cache))) - - (setq candidate (company-cmake--unexpand-candidate candidate)) - (with-temp-buffer - (call-process company-cmake-executable nil t nil cmd-opts candidate) - ;; Go to the third line, trim it and return the doc buffer. - ;; Tested with cmake 2.8.9. - (goto-char (point-min)) - (forward-line 2) - (company-doc-buffer - (buffer-substring-no-properties (line-beginning-position) - (point-max)))))) - -(defun company-cmake-prefix-dollar-brace-p () - "Test if the current symbol follows ${." - (save-excursion - (skip-syntax-backward "w_") - (and (eq (char-before (point)) ?\{) - (eq (char-before (1- (point))) ?$)))) - -(defun company-cmake (command &optional arg &rest ignored) - "`company-mode' completion backend for CMake. -CMake is a cross-platform, open-source make system." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-cmake)) - (init (when (memq major-mode company-cmake-modes) - (unless company-cmake-executable - (error "Company found no cmake executable")))) - (prefix (and (memq major-mode company-cmake-modes) - (or (not (company-in-string-or-comment)) - (company-cmake-prefix-dollar-brace-p)) - (company-grab-symbol))) - (candidates (company-cmake--candidates arg)) - (meta (company-cmake--meta arg)) - (doc-buffer (company-cmake--doc-buffer arg)) - )) - -(provide 'company-cmake) -;;; company-cmake.el ends here diff --git a/elpa/company-0.10.2/company-css.el b/elpa/company-0.10.2/company-css.el @@ -1,446 +0,0 @@ -;;; company-css.el --- company-mode completion backend for css-mode -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2011, 2013-2015, 2018 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; -;; In Emacs >= 26, company-capf is used instead. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(declare-function web-mode-language-at-pos "web-mode" (&optional pos)) - -(defconst company-css-property-alist - ;; see http://www.w3.org/TR/CSS21/propidx.html - '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center" - "center-right" "right" "far-right" "right-side" "behind" "leftwards" - "rightwards") - ("background" background-color background-image background-repeat - background-attachment background-position - background-clip background-origin background-size) - ("background-attachment" "scroll" "fixed") - ("background-color" color "transparent") - ("background-image" uri "none") - ("background-position" percentage length "left" "center" "right" percentage - length "top" "center" "bottom" "left" "center" "right" "top" "center" - "bottom") - ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat") - ("border" border-width border-style border-color) - ("border-bottom" border) - ("border-bottom-color" border-color) - ("border-bottom-style" border-style) - ("border-bottom-width" border-width) - ("border-collapse" "collapse" "separate") - ("border-color" color "transparent") - ("border-left" border) - ("border-left-color" border-color) - ("border-left-style" border-style) - ("border-left-width" border-width) - ("border-right" border) - ("border-right-color" border-color) - ("border-right-style" border-style) - ("border-right-width" border-width) - ("border-spacing" length length) - ("border-style" border-style) - ("border-top" border) - ("border-top-color" border-color) - ("border-top-style" border-style) - ("border-top-width" border-width) - ("border-width" border-width) - ("bottom" length percentage "auto") - ("caption-side" "top" "bottom") - ("clear" "none" "left" "right" "both") - ("clip" shape "auto") - ("color" color) - ("content" "normal" "none" string uri counter "attr()" "open-quote" - "close-quote" "no-open-quote" "no-close-quote") - ("counter-increment" identifier integer "none") - ("counter-reset" identifier integer "none") - ("cue" cue-before cue-after) - ("cue-after" uri "none") - ("cue-before" uri "none") - ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize" - "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize" - "w-resize" "text" "wait" "help" "progress") - ("direction" "ltr" "rtl") - ("display" "inline" "block" "list-item" "run-in" "inline-block" "table" - "inline-table" "table-row-group" "table-header-group" "table-footer-group" - "table-row" "table-column-group" "table-column" "table-cell" - "table-caption" "none") - ("elevation" angle "below" "level" "above" "higher" "lower") - ("empty-cells" "show" "hide") - ("float" "left" "right" "none") - ("font" font-style font-weight font-size "/" line-height - font-family "caption" "icon" "menu" "message-box" "small-caption" - "status-bar" "normal" "small-caps" - ;; CSS3 - font-stretch) - ("font-family" family-name generic-family) - ("font-size" absolute-size relative-size length percentage) - ("font-style" "normal" "italic" "oblique") - ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" - "500" "600" "700" "800" "900") - ("height" length percentage "auto") - ("left" length percentage "auto") - ("letter-spacing" "normal" length) - ("line-height" "normal" number length percentage) - ("list-style" list-style-type list-style-position list-style-image) - ("list-style-image" uri "none") - ("list-style-position" "inside" "outside") - ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero" - "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin" - "armenian" "georgian" "lower-alpha" "upper-alpha" "none") - ("margin" margin-width) - ("margin-bottom" margin-width) - ("margin-left" margin-width) - ("margin-right" margin-width) - ("margin-top" margin-width) - ("max-height" length percentage "none") - ("max-width" length percentage "none") - ("min-height" length percentage) - ("min-width" length percentage) - ("orphans" integer) - ("outline" outline-color outline-style outline-width) - ("outline-color" color "invert") - ("outline-style" border-style) - ("outline-width" border-width) - ("overflow" "visible" "hidden" "scroll" "auto" - ;; CSS3: - "no-display" "no-content") - ("padding" padding-width) - ("padding-bottom" padding-width) - ("padding-left" padding-width) - ("padding-right" padding-width) - ("padding-top" padding-width) - ("page-break-after" "auto" "always" "avoid" "left" "right") - ("page-break-before" "auto" "always" "avoid" "left" "right") - ("page-break-inside" "avoid" "auto") - ("pause" time percentage) - ("pause-after" time percentage) - ("pause-before" time percentage) - ("pitch" frequency "x-low" "low" "medium" "high" "x-high") - ("pitch-range" number) - ("play-during" uri "mix" "repeat" "auto" "none") - ("position" "static" "relative" "absolute" "fixed") - ("quotes" string string "none") - ("richness" number) - ("right" length percentage "auto") - ("speak" "normal" "none" "spell-out") - ("speak-header" "once" "always") - ("speak-numeral" "digits" "continuous") - ("speak-punctuation" "code" "none") - ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster" - "slower") - ("stress" number) - ("table-layout" "auto" "fixed") - ("text-align" "left" "right" "center" "justify") - ("text-indent" length percentage) - ("text-transform" "capitalize" "uppercase" "lowercase" "none") - ("top" length percentage "auto") - ("unicode-bidi" "normal" "embed" "bidi-override") - ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle" - "bottom" "text-bottom" percentage length) - ("visibility" "visible" "hidden" "collapse") - ("voice-family" specific-voice generic-voice "*" specific-voice - generic-voice) - ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud" - "x-loud") - ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line") - ("widows" integer) - ("width" length percentage "auto") - ("word-spacing" "normal" length) - ("z-index" "auto" integer) - ;; CSS3 - ("align-content" align-stretch "space-between" "space-around") - ("align-items" align-stretch "baseline") - ("align-self" align-items "auto") - ("animation" animation-name animation-duration animation-timing-function - animation-delay animation-iteration-count animation-direction - animation-fill-mode) - ("animation-delay" time) - ("animation-direction" "normal" "reverse" "alternate" "alternate-reverse") - ("animation-duration" time) - ("animation-fill-mode" "none" "forwards" "backwards" "both") - ("animation-iteration-count" integer "infinite") - ("animation-name" "none") - ("animation-play-state" "paused" "running") - ("animation-timing-function" transition-timing-function - "step-start" "step-end" "steps(,)") - ("backface-visibility" "visible" "hidden") - ("background-clip" background-origin) - ("background-origin" "border-box" "padding-box" "content-box") - ("background-size" length percentage "auto" "cover" "contain") - ("border-image" border-image-outset border-image-repeat border-image-source - border-image-slice border-image-width) - ("border-image-outset" length) - ("border-image-repeat" "stretch" "repeat" "round" "space") - ("border-image-source" uri "none") - ("border-image-slice" length) - ("border-image-width" length percentage) - ("border-radius" length) - ("border-top-left-radius" length) - ("border-top-right-radius" length) - ("border-bottom-left-radius" length) - ("border-bottom-right-radius" length) - ("box-decoration-break" "slice" "clone") - ("box-shadow" length color) - ("box-sizing" "content-box" "border-box") - ("break-after" "auto" "always" "avoid" "left" "right" "page" "column" - "avoid-page" "avoid-column") - ("break-before" break-after) - ("break-inside" "avoid" "auto") - ("columns" column-width column-count) - ("column-count" integer) - ("column-fill" "auto" "balance") - ("column-gap" length "normal") - ("column-rule" column-rule-width column-rule-style column-rule-color) - ("column-rule-color" color) - ("column-rule-style" border-style) - ("column-rule-width" border-width) - ("column-span" "all" "none") - ("column-width" length "auto") - ("filter" url "blur()" "brightness()" "contrast()" "drop-shadow()" - "grayscale()" "hue-rotate()" "invert()" "opacity()" "saturate()" "sepia()") - ("flex" flex-grow flex-shrink flex-basis) - ("flex-basis" percentage length "auto") - ("flex-direction" "row" "row-reverse" "column" "column-reverse") - ("flex-flow" flex-direction flex-wrap) - ("flex-grow" number) - ("flex-shrink" number) - ("flex-wrap" "nowrap" "wrap" "wrap-reverse") - ("font-feature-setting" normal string number) - ("font-kerning" "auto" "normal" "none") - ("font-language-override" "normal" string) - ("font-size-adjust" "none" number) - ("font-stretch" "normal" "ultra-condensed" "extra-condensed" "condensed" - "semi-condensed" "semi-expanded" "expanded" "extra-expanded" "ultra-expanded") - ("font-synthesis" "none" "weight" "style") - ("font-variant" font-variant-alternates font-variant-caps - font-variant-east-asian font-variant-ligatures font-variant-numeric - font-variant-position) - ("font-variant-alternates" "normal" "historical-forms" "stylistic()" - "styleset()" "character-variant()" "swash()" "ornaments()" "annotation()") - ("font-variant-caps" "normal" "small-caps" "all-small-caps" "petite-caps" - "all-petite-caps" "unicase" "titling-caps") - ("font-variant-east-asian" "jis78" "jis83" "jis90" "jis04" "simplified" - "traditional" "full-width" "proportional-width" "ruby") - ("font-variant-ligatures" "normal" "none" "common-ligatures" - "no-common-ligatures" "discretionary-ligatures" "no-discretionary-ligatures" - "historical-ligatures" "no-historical-ligatures" "contextual" "no-contextual") - ("font-variant-numeric" "normal" "ordinal" "slashed-zero" - "lining-nums" "oldstyle-nums" "proportional-nums" "tabular-nums" - "diagonal-fractions" "stacked-fractions") - ("font-variant-position" "normal" "sub" "super") - ("hyphens" "none" "manual" "auto") - ("justify-content" align-common "space-between" "space-around") - ("line-break" "auto" "loose" "normal" "strict") - ("marquee-direction" "forward" "reverse") - ("marquee-play-count" integer "infinite") - ("marquee-speed" "slow" "normal" "fast") - ("marquee-style" "scroll" "slide" "alternate") - ("opacity" number) - ("order" number) - ("outline-offset" length) - ("overflow-x" overflow) - ("overflow-y" overflow) - ("overflow-style" "auto" "marquee-line" "marquee-block") - ("overflow-wrap" "normal" "break-word") - ("perspective" "none" length) - ("perspective-origin" percentage length "left" "center" "right" "top" "bottom") - ("resize" "none" "both" "horizontal" "vertical") - ("tab-size" integer length) - ("text-align-last" "auto" "start" "end" "left" "right" "center" "justify") - ("text-decoration" text-decoration-color text-decoration-line text-decoration-style) - ("text-decoration-color" color) - ("text-decoration-line" "none" "underline" "overline" "line-through" "blink") - ("text-decoration-style" "solid" "double" "dotted" "dashed" "wavy") - ("text-overflow" "clip" "ellipsis") - ("text-shadow" color length) - ("text-underline-position" "auto" "under" "left" "right") - ("transform" "matrix(,,,,,)" "translate(,)" "translateX()" "translateY()" - "scale()" "scaleX()" "scaleY()" "rotate()" "skewX()" "skewY()" "none") - ("transform-origin" perspective-origin) - ("transform-style" "flat" "preserve-3d") - ("transition" transition-property transition-duration - transition-timing-function transition-delay) - ("transition-delay" time) - ("transition-duration" time) - ("transition-timing-function" - "ease" "linear" "ease-in" "ease-out" "ease-in-out" "cubic-bezier(,,,)") - ("transition-property" "none" "all" identifier) - ("word-wrap" overflow-wrap) - ("word-break" "normal" "break-all" "keep-all")) - "A list of CSS properties and their possible values.") - -(defconst company-css-value-classes - '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" - "xx-large") - (align-common "flex-start" "flex-end" "center") - (align-stretch align-common "stretch") - (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" - "ridge" "inset" "outset") - (border-width "thick" "medium" "thin") - (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" - "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow") - (counter "counter(,)") - (family-name "Courier" "Helvetica" "Times") - (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace") - (generic-voice "male" "female" "child") - (margin-width "auto") ;; length percentage - (relative-size "larger" "smaller") - (shape "rect(,,,)") - (uri "url()")) - "A list of CSS property value classes and their contents.") -;; missing, because not completable -;; <angle><frequency><identifier><integer><length><number><padding-width> -;; <percentage><specific-voice><string><time><uri> - -(defconst company-css-html-tags - '("a" "abbr" "acronym" "address" "applet" "area" "b" "base" "basefont" "bdo" - "big" "blockquote" "body" "br" "button" "caption" "center" "cite" "code" - "col" "colgroup" "dd" "del" "dfn" "dir" "div" "dl" "dt" "em" "fieldset" - "font" "form" "frame" "frameset" "h1" "h2" "h3" "h4" "h5" "h6" "head" "hr" - "html" "i" "iframe" "img" "input" "ins" "isindex" "kbd" "label" "legend" - "li" "link" "map" "menu" "meta" "noframes" "noscript" "object" "ol" - "optgroup" "option" "p" "param" "pre" "q" "s" "samp" "script" "select" - "small" "span" "strike" "strong" "style" "sub" "sup" "table" "tbody" "td" - "textarea" "tfoot" "th" "thead" "title" "tr" "tt" "u" "ul" "var" - ;; HTML5 - "section" "article" "aside" "header" "footer" "nav" "figure" "figcaption" - "time" "mark" "main") - "A list of HTML tags for use in CSS completion.") - -(defconst company-css-pseudo-classes - '("active" "after" "before" "first" "first-child" "first-letter" "first-line" - "focus" "hover" "lang" "left" "link" "right" "visited") - "Identifiers for CSS pseudo-elements and pseudo-classes.") - -(defconst company-css-property-cache (make-hash-table :size 115 :test 'equal)) - -(defun company-css-property-values (attribute) - "Access the `company-css-property-alist' cached and flattened." - (or (gethash attribute company-css-property-cache) - (let (results) - (dolist (value (cdr (assoc attribute company-css-property-alist))) - (if (symbolp value) - (dolist (child (or (cdr (assoc value company-css-value-classes)) - (company-css-property-values - (symbol-name value)))) - (push child results)) - (push value results))) - (setq results (sort results 'string<)) - (puthash attribute - (if (fboundp 'delete-consecutive-dups) - (delete-consecutive-dups results) - (delete-dups results)) - company-css-property-cache) - results))) - -;;; bracket detection - -(defconst company-css-braces-syntax-table - (let ((table (make-syntax-table))) - (setf (aref table ?{) '(4 . 125)) - (setf (aref table ?}) '(5 . 123)) - table) - "A syntax table giving { and } paren syntax.") - -(defun company-css-inside-braces-p () - "Return non-nil, if point is within matched { and }." - (ignore-errors - (with-syntax-table company-css-braces-syntax-table - (let ((parse-sexp-ignore-comments t)) - (scan-lists (point) -1 1))))) - -;;; tags -(defconst company-css-tag-regexp - (concat "\\(?:\\`\\|}\\)[[:space:]]*" - ;; multiple - "\\(?:" - ;; previous tags: - "\\(?:#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\(?:\\[[^]]*\\]\\)?" - ;; space or selectors - "\\(?:[[:space:]]+\\|[[:space:]]*[+,>][[:space:]]*\\)" - "\\)*" - "\\(\\(?:#\\|\\_<[[:alpha:]]\\)\\(?:[[:alnum:]-#]*\\_>\\)?\\_>\\|\\)" - "\\=") - "A regular expression matching CSS tags.") - -;;; pseudo id -(defconst company-css-pseudo-regexp - (concat "\\(?:\\`\\|}\\)[[:space:]]*" - ;; multiple - "\\(?:" - ;; previous tags: - "\\(?:#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\(?:\\[[^]]*\\]\\)?" - ;; space or delimiters - "\\(?:[[:space:]]+\\|[[:space:]]*[+,>][[:space:]]*\\)" - "\\)*" - "\\(?:\\(?:\\#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\):" - "\\([[:alpha:]-]+\\_>\\|\\)\\_>\\=") - "A regular expression matching CSS pseudo classes.") - -;;; properties - -(defun company-css-grab-property () - "Return the CSS property before point, if any. -Returns \"\" if no property found, but feasible at this position." - (when (company-css-inside-braces-p) - (company-grab-symbol))) - -;;; values -(defconst company-css-property-value-regexp - "\\_<\\([[:alpha:]-]+\\):\\(?:[^{};]*[[:space:]]+\\)?\\([^{};]*\\_>\\|\\)\\=" - "A regular expression matching CSS tags.") - -;;;###autoload -(defun company-css (command &optional arg &rest _ignored) - "`company-mode' completion backend for `css-mode'." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-css)) - (prefix (and (or (derived-mode-p 'css-mode) - (and (derived-mode-p 'web-mode) - (string= (web-mode-language-at-pos) "css"))) - (or (company-grab company-css-tag-regexp 1) - (company-grab company-css-pseudo-regexp 1) - (company-grab company-css-property-value-regexp 2 - (line-beginning-position)) - (company-css-grab-property)))) - (candidates - (cond - ((company-grab company-css-tag-regexp 1) - (all-completions arg company-css-html-tags)) - ((company-grab company-css-pseudo-regexp 1) - (all-completions arg company-css-pseudo-classes)) - ((company-grab company-css-property-value-regexp 2 - (line-beginning-position)) - (all-completions arg - (company-css-property-values - (company-grab company-css-property-value-regexp 1)))) - ((company-css-grab-property) - (all-completions arg company-css-property-alist)))) - (sorted t))) - -(provide 'company-css) -;;; company-css.el ends here diff --git a/elpa/company-0.10.2/company-dabbrev-code.el b/elpa/company-0.10.2/company-dabbrev-code.el @@ -1,105 +0,0 @@ -;;; company-dabbrev-code.el --- dabbrev-like company-mode backend for code -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2011, 2013-2016, 2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'company-dabbrev) -(require 'cl-lib) - -(defgroup company-dabbrev-code nil - "dabbrev-like completion backend for code." - :group 'company) - -(defcustom company-dabbrev-code-modes - '(prog-mode - batch-file-mode csharp-mode css-mode erlang-mode haskell-mode jde-mode - lua-mode python-mode) - "Modes that use `company-dabbrev-code'. -In all these modes (and their derivatives) `company-dabbrev-code' will -complete only symbols, not text in comments or strings. In other modes -`company-dabbrev-code' will pass control to other backends -\(e.g. `company-dabbrev'\). Value t means complete in all modes." - :type '(choice (repeat :tag "Some modes" (symbol :tag "Major mode")) - (const :tag "All modes" t))) - -(defcustom company-dabbrev-code-other-buffers t - "Determines whether `company-dabbrev-code' should search other buffers. -If `all', search all other buffers, except the ignored ones. If t, search -buffers with the same major mode. If `code', search all buffers with major -modes in `company-dabbrev-code-modes', or derived from one of them. See -also `company-dabbrev-code-time-limit'." - :type '(choice (const :tag "Off" nil) - (const :tag "Same major mode" t) - (const :tag "Code major modes" code) - (const :tag "All" all))) - -(defcustom company-dabbrev-code-time-limit .1 - "Determines how long `company-dabbrev-code' should look for matches." - :type '(choice (const :tag "Off" nil) - (number :tag "Seconds"))) - -(defcustom company-dabbrev-code-everywhere nil - "Non-nil to offer completions in comments and strings." - :type 'boolean) - -(defcustom company-dabbrev-code-ignore-case nil - "Non-nil to ignore case when collecting completion candidates." - :type 'boolean) - -(defun company-dabbrev-code--make-regexp (prefix) - (concat "\\_<" (if (equal prefix "") - "\\([a-zA-Z]\\|\\s_\\)" - (regexp-quote prefix)) - "\\(\\sw\\|\\s_\\)*\\_>")) - -;;;###autoload -(defun company-dabbrev-code (command &optional arg &rest _ignored) - "dabbrev-like `company-mode' backend for code. -The backend looks for all symbols in the current buffer that aren't in -comments or strings." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-dabbrev-code)) - (prefix (and (or (eq t company-dabbrev-code-modes) - (apply #'derived-mode-p company-dabbrev-code-modes)) - (or company-dabbrev-code-everywhere - (not (company-in-string-or-comment))) - (or (company-grab-symbol) 'stop))) - (candidates (let ((case-fold-search company-dabbrev-code-ignore-case)) - (company-dabbrev--search - (company-dabbrev-code--make-regexp arg) - company-dabbrev-code-time-limit - (pcase company-dabbrev-code-other-buffers - (`t (list major-mode)) - (`code company-dabbrev-code-modes) - (`all `all)) - (not company-dabbrev-code-everywhere)))) - (kind 'text) - (ignore-case company-dabbrev-code-ignore-case) - (duplicates t))) - -(provide 'company-dabbrev-code) -;;; company-dabbrev-code.el ends here diff --git a/elpa/company-0.10.2/company-dabbrev.el b/elpa/company-0.10.2/company-dabbrev.el @@ -1,207 +0,0 @@ -;;; company-dabbrev.el --- dabbrev-like company-mode completion backend -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2011, 2013-2018, 2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defgroup company-dabbrev nil - "dabbrev-like completion backend." - :group 'company) - -(defcustom company-dabbrev-other-buffers 'all - "Determines whether `company-dabbrev' should search other buffers. -If `all', search all other buffers, except the ignored ones. If t, search -buffers with the same major mode. See also `company-dabbrev-time-limit'." - :type '(choice (const :tag "Off" nil) - (const :tag "Same major mode" t) - (const :tag "All" all))) - -(defcustom company-dabbrev-ignore-buffers "\\`[ *]" - "Regexp matching the names of buffers to ignore. -Or a function that returns non-nil for such buffers." - :type '(choice (regexp :tag "Regexp") - (function :tag "Predicate")) - :package-version '(company . "0.9.0")) - -(defcustom company-dabbrev-time-limit .1 - "Determines how many seconds `company-dabbrev' should look for matches." - :type '(choice (const :tag "Off" nil) - (number :tag "Seconds"))) - -(defcustom company-dabbrev-char-regexp "\\sw" - "A regular expression matching the characters `company-dabbrev' looks for." - :type 'regexp) - -(defcustom company-dabbrev-ignore-case 'keep-prefix - "Non-nil to ignore case when collecting completion candidates. -When it's `keep-prefix', the text before point will remain unchanged after -candidate is inserted, even some of its characters have different case." - :type '(choice - (const :tag "Don't ignore case" nil) - (const :tag "Ignore case" t) - (const :tag "Keep case before point" keep-prefix))) - -(defcustom company-dabbrev-downcase 'case-replace - "Whether to downcase the returned candidates. - -The value of nil means keep them as-is. -`case-replace' means use the value of `case-replace'. -Any other value means downcase. - -If you set this value to nil, you may also want to set -`company-dabbrev-ignore-case' to any value other than `keep-prefix'." - :type '(choice - (const :tag "Keep as-is" nil) - (const :tag "Downcase" t) - (const :tag "Use case-replace" case-replace))) - -(defcustom company-dabbrev-minimum-length 4 - "The minimum length for the completion candidate to be included. -This variable affects both `company-dabbrev' and `company-dabbrev-code'." - :type 'integer - :package-version '(company . "0.8.3")) - -(defcustom company-dabbrev-ignore-invisible nil - "Non-nil to skip invisible text." - :type 'boolean - :package-version '(company . "0.9.0")) - -(defmacro company-dabbrev--time-limit-while (test start limit freq &rest body) - (declare (indent 3) (debug t)) - `(let ((company-time-limit-while-counter 0)) - (catch 'done - (while ,test - ,@body - (and ,limit - (= (cl-incf company-time-limit-while-counter) ,freq) - (setq company-time-limit-while-counter 0) - (> (float-time (time-since ,start)) ,limit) - (throw 'done 'company-time-out)))))) - -(defun company-dabbrev--make-regexp () - (concat "\\(?:" company-dabbrev-char-regexp "\\)+")) - -(defun company-dabbrev--search-buffer (regexp pos symbols start limit - ignore-comments) - (save-excursion - (cl-labels ((maybe-collect-match - () - (let ((match (match-string-no-properties 0))) - (when (and (>= (length match) company-dabbrev-minimum-length) - (not (and company-dabbrev-ignore-invisible - (invisible-p (match-beginning 0))))) - (push match symbols))))) - (goto-char (if pos (1- pos) (point-min))) - ;; Search before pos. - (let ((tmp-end (point))) - (company-dabbrev--time-limit-while (and (not (input-pending-p)) - (> tmp-end (point-min))) - start limit 1 - (ignore-errors - (forward-char -10000)) - (forward-line 0) - (save-excursion - ;; Before, we used backward search, but it matches non-greedily, and - ;; that forced us to use the "beginning/end of word" anchors in - ;; `company-dabbrev--make-regexp'. It's also about 2x slower. - (while (and (not (input-pending-p)) - (re-search-forward regexp tmp-end t)) - (if (and ignore-comments (save-match-data (company-in-string-or-comment))) - (re-search-forward "\\s>\\|\\s!\\|\\s\"" tmp-end t) - (maybe-collect-match)))) - (setq tmp-end (point)))) - (goto-char (or pos (point-min))) - ;; Search after pos. - (company-dabbrev--time-limit-while (and (not (input-pending-p)) - (re-search-forward regexp nil t)) - start limit 25 - (if (and ignore-comments (save-match-data (company-in-string-or-comment))) - (re-search-forward "\\s>\\|\\s!\\|\\s\"" nil t) - (maybe-collect-match))) - symbols))) - -(defun company-dabbrev--search (regexp &optional limit other-buffer-modes - ignore-comments) - (let* ((start (current-time)) - (symbols (company-dabbrev--search-buffer regexp (point) nil start limit - ignore-comments))) - (when other-buffer-modes - (cl-dolist (buffer (delq (current-buffer) (buffer-list))) - (unless (if (stringp company-dabbrev-ignore-buffers) - (string-match-p company-dabbrev-ignore-buffers - (buffer-name buffer)) - (funcall company-dabbrev-ignore-buffers buffer)) - (with-current-buffer buffer - (when (or (eq other-buffer-modes 'all) - (apply #'derived-mode-p other-buffer-modes)) - (setq symbols - (company-dabbrev--search-buffer regexp nil symbols start - limit ignore-comments))))) - (and limit - (> (float-time (time-since start)) limit) - (cl-return)))) - symbols)) - -(defun company-dabbrev--prefix () - ;; Not in the middle of a word. - (unless (looking-at company-dabbrev-char-regexp) - ;; Emacs can't do greedy backward-search. - (company-grab-line (format "\\(?:^\\| \\)[^ ]*?\\(\\(?:%s\\)*\\)" - company-dabbrev-char-regexp) - 1))) - -(defun company-dabbrev--filter (prefix candidates) - (let ((completion-ignore-case company-dabbrev-ignore-case)) - (all-completions prefix candidates))) - -;;;###autoload -(defun company-dabbrev (command &optional arg &rest _ignored) - "dabbrev-like `company-mode' completion backend." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-dabbrev)) - (prefix (company-dabbrev--prefix)) - (candidates - (let* ((case-fold-search company-dabbrev-ignore-case) - (words (company-dabbrev--search (company-dabbrev--make-regexp) - company-dabbrev-time-limit - (pcase company-dabbrev-other-buffers - (`t (list major-mode)) - (`all `all)))) - (downcase-p (if (eq company-dabbrev-downcase 'case-replace) - case-replace - company-dabbrev-downcase))) - (setq words (company-dabbrev--filter arg words)) - (if downcase-p - (mapcar 'downcase words) - words))) - (kind 'text) - (ignore-case company-dabbrev-ignore-case) - (duplicates t))) - -(provide 'company-dabbrev) -;;; company-dabbrev.el ends here diff --git a/elpa/company-0.10.2/company-elisp.el b/elpa/company-0.10.2/company-elisp.el @@ -1,226 +0,0 @@ -;;; company-elisp.el --- company-mode completion backend for Emacs Lisp -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2015, 2017, 2020 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; -;; In newer versions of Emacs, company-capf is used instead. - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'help-mode) -(require 'find-func) - -(defgroup company-elisp nil - "Completion backend for Emacs Lisp." - :group 'company) - -(defcustom company-elisp-detect-function-context t - "If enabled, offer Lisp functions only in appropriate contexts. -Functions are offered for completion only after \\=' and \(." - :type '(choice (const :tag "Off" nil) - (const :tag "On" t))) - -(defcustom company-elisp-show-locals-first t - "If enabled, locally bound variables and functions are displayed -first in the candidates list." - :type '(choice (const :tag "Off" nil) - (const :tag "On" t))) - -(defun company-elisp--prefix () - (let ((prefix (company-grab-symbol))) - (if prefix - (when (if (company-in-string-or-comment) - (= (char-before (- (point) (length prefix))) ?`) - (company-elisp--should-complete)) - prefix) - 'stop))) - -(defun company-elisp--predicate (symbol) - (or (boundp symbol) - (fboundp symbol) - (facep symbol) - (featurep symbol))) - -(defun company-elisp--fns-regexp (&rest names) - (concat "\\_<\\(?:cl-\\)?" (regexp-opt names) "\\*?\\_>")) - -(defvar company-elisp-parse-limit 30) -(defvar company-elisp-parse-depth 100) - -(defvar company-elisp-defun-names '("defun" "defmacro" "defsubst")) - -(defvar company-elisp-var-binding-regexp - (apply #'company-elisp--fns-regexp "let" "lambda" "lexical-let" - company-elisp-defun-names) - "Regular expression matching head of a multiple variable bindings form.") - -(defvar company-elisp-var-binding-regexp-1 - (company-elisp--fns-regexp "dolist" "dotimes") - "Regular expression matching head of a form with one variable binding.") - -(defvar company-elisp-fun-binding-regexp - (company-elisp--fns-regexp "flet" "labels") - "Regular expression matching head of a function bindings form.") - -(defvar company-elisp-defuns-regexp - (concat "([ \t\n]*" - (apply #'company-elisp--fns-regexp company-elisp-defun-names))) - -(defun company-elisp--should-complete () - (let ((start (point)) - (depth (car (syntax-ppss)))) - (not - (when (> depth 0) - (save-excursion - (up-list (- depth)) - (when (looking-at company-elisp-defuns-regexp) - (forward-char) - (forward-sexp 1) - (unless (= (point) start) - (condition-case nil - (let ((args-end (scan-sexps (point) 2))) - (or (null args-end) - (> args-end start))) - (scan-error - t))))))))) - -(defun company-elisp--locals (prefix functions-p) - (let ((regexp (concat "[ \t\n]*\\(\\_<" (regexp-quote prefix) - "\\(?:\\sw\\|\\s_\\)*\\_>\\)")) - (pos (point)) - res) - (condition-case nil - (save-excursion - (dotimes (_ company-elisp-parse-depth) - (up-list -1) - (save-excursion - (when (eq (char-after) ?\() - (forward-char 1) - (when (ignore-errors - (save-excursion (forward-list) - (<= (point) pos))) - (skip-chars-forward " \t\n") - (cond - ((looking-at (if functions-p - company-elisp-fun-binding-regexp - company-elisp-var-binding-regexp)) - (down-list 1) - (condition-case nil - (dotimes (_ company-elisp-parse-limit) - (save-excursion - (when (looking-at "[ \t\n]*(") - (down-list 1)) - (when (looking-at regexp) - (cl-pushnew (match-string-no-properties 1) res))) - (forward-sexp)) - (scan-error nil))) - ((unless functions-p - (looking-at company-elisp-var-binding-regexp-1)) - (down-list 1) - (when (looking-at regexp) - (cl-pushnew (match-string-no-properties 1) res))))))))) - (scan-error nil)) - res)) - -(defun company-elisp-candidates (prefix) - (let* ((predicate (company-elisp--candidates-predicate prefix)) - (locals (company-elisp--locals prefix (eq predicate 'fboundp))) - (globals (company-elisp--globals prefix predicate)) - (locals (cl-loop for local in locals - when (not (member local globals)) - collect local))) - (if company-elisp-show-locals-first - (append (sort locals 'string<) - (sort globals 'string<)) - (append locals globals)))) - -(defun company-elisp--globals (prefix predicate) - (all-completions prefix obarray predicate)) - -(defun company-elisp--candidates-predicate (prefix) - (let* ((completion-ignore-case nil) - (beg (- (point) (length prefix))) - (before (char-before beg))) - (if (and company-elisp-detect-function-context - (not (memq before '(?' ?`)))) - (if (and (eq before ?\() - (not - (save-excursion - (ignore-errors - (goto-char (1- beg)) - (or (company-elisp--before-binding-varlist-p) - (progn - (up-list -1) - (company-elisp--before-binding-varlist-p))))))) - 'fboundp - 'boundp) - 'company-elisp--predicate))) - -(defun company-elisp--before-binding-varlist-p () - (save-excursion - (and (prog1 (search-backward "(") - (forward-char 1)) - (looking-at company-elisp-var-binding-regexp)))) - -(defun company-elisp--doc (symbol) - (let* ((symbol (intern symbol)) - (doc (if (fboundp symbol) - (documentation symbol t) - (documentation-property symbol 'variable-documentation t)))) - (and (stringp doc) - (string-match ".*$" doc) - (match-string 0 doc)))) - -;;;###autoload -(defun company-elisp (command &optional arg &rest _ignored) - "`company-mode' completion backend for Emacs Lisp." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-elisp)) - (prefix (and (derived-mode-p 'emacs-lisp-mode 'inferior-emacs-lisp-mode) - (company-elisp--prefix))) - (candidates (company-elisp-candidates arg)) - (sorted company-elisp-show-locals-first) - (meta (company-elisp--doc arg)) - (doc-buffer (let ((symbol (intern arg))) - (save-window-excursion - (ignore-errors - (cond - ((fboundp symbol) (describe-function symbol)) - ((boundp symbol) (describe-variable symbol)) - ((featurep symbol) (describe-package symbol)) - ((facep symbol) (describe-face symbol)) - (t (signal 'user-error nil))) - (help-buffer))))) - (location (let ((sym (intern arg))) - (cond - ((fboundp sym) (find-definition-noselect sym nil)) - ((boundp sym) (find-definition-noselect sym 'defvar)) - ((featurep sym) (cons (find-file-noselect (find-library-name - (symbol-name sym))) - 0)) - ((facep sym) (find-definition-noselect sym 'defface))))))) - -(provide 'company-elisp) -;;; company-elisp.el ends here diff --git a/elpa/company-0.10.2/company-etags.el b/elpa/company-0.10.2/company-etags.el @@ -1,108 +0,0 @@ -;;; company-etags.el --- company-mode completion backend for etags - -;; Copyright (C) 2009-2011, 2013-2015, 2018-2019 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'etags) - -(defgroup company-etags nil - "Completion backend for etags." - :group 'company) - -(defcustom company-etags-use-main-table-list t - "Always search `tags-table-list' if set. -If this is disabled, `company-etags' will try to find the one table for each -buffer automatically." - :type '(choice (const :tag "off" nil) - (const :tag "on" t))) - -(defcustom company-etags-ignore-case nil - "Non-nil to ignore case in completion candidates." - :type 'boolean - :package-version '(company . "0.7.3")) - -(defcustom company-etags-everywhere nil - "Non-nil to offer completions in comments and strings. -Set it to t or to a list of major modes." - :type '(choice (const :tag "Off" nil) - (const :tag "Any supported mode" t) - (repeat :tag "Some major modes" - (symbol :tag "Major mode"))) - :package-version '(company . "0.9.0")) - -(defvar company-etags-modes '(prog-mode c-mode objc-mode c++-mode java-mode - jde-mode pascal-mode perl-mode python-mode)) - -(defvar-local company-etags-buffer-table 'unknown) - -(defun company-etags-find-table () - (let ((file (expand-file-name - "TAGS" - (locate-dominating-file (or buffer-file-name - default-directory) - "TAGS")))) - (when (and file (file-regular-p file)) - (list file)))) - -(defun company-etags-buffer-table () - (or (and company-etags-use-main-table-list tags-table-list) - (if (eq company-etags-buffer-table 'unknown) - (setq company-etags-buffer-table (company-etags-find-table)) - company-etags-buffer-table))) - -(defun company-etags--candidates (prefix) - (let ((tags-table-list (company-etags-buffer-table)) - (tags-file-name tags-file-name) - (completion-ignore-case company-etags-ignore-case)) - (and (or tags-file-name tags-table-list) - (fboundp 'tags-completion-table) - (save-excursion - (visit-tags-table-buffer) - (all-completions prefix (tags-completion-table)))))) - -;;;###autoload -(defun company-etags (command &optional arg &rest ignored) - "`company-mode' completion backend for etags." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-etags)) - (prefix (and (apply #'derived-mode-p company-etags-modes) - (or (eq t company-etags-everywhere) - (apply #'derived-mode-p company-etags-everywhere) - (not (company-in-string-or-comment))) - (company-etags-buffer-table) - (or (company-grab-symbol) 'stop))) - (candidates (company-etags--candidates arg)) - (location (let ((tags-table-list (company-etags-buffer-table))) - (when (fboundp 'find-tag-noselect) - (save-excursion - (let ((buffer (find-tag-noselect arg))) - (cons buffer (with-current-buffer buffer (point)))))))) - (ignore-case company-etags-ignore-case))) - -(provide 'company-etags) -;;; company-etags.el ends here diff --git a/elpa/company-0.10.2/company-files.el b/elpa/company-0.10.2/company-files.el @@ -1,161 +0,0 @@ -;;; company-files.el --- company-mode completion backend for file names - -;; Copyright (C) 2009-2011, 2013-2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defgroup company-files nil - "Completion backend for file names." - :group 'company) - -(defcustom company-files-exclusions nil - "A list of file name extensions and directory names to ignore. -The values should use the same format as `completion-ignored-extensions'." - :type '(repeat (string :tag "File extension or directory name")) - :package-version '(company . "0.9.1")) - -(defcustom company-files-chop-trailing-slash t - "Non-nil to remove the trailing slash after inserting directory name. - -This way it's easy to continue completion by typing `/' again. - -Set this to nil to disable that behavior." - :type 'boolean) - -(defun company-files--directory-files (dir prefix) - ;; Don't use directory-files. It produces directories without trailing /. - (condition-case err - (let ((comp (sort (file-name-all-completions prefix dir) - (lambda (s1 s2) (string-lessp (downcase s1) (downcase s2)))))) - (when company-files-exclusions - (setq comp (company-files--exclusions-filtered comp))) - (if (equal prefix "") - (delete "../" (delete "./" comp)) - comp)) - (file-error nil))) - -(defun company-files--exclusions-filtered (completions) - (let* ((dir-exclusions (cl-remove-if-not #'company-files--trailing-slash-p - company-files-exclusions)) - (file-exclusions (cl-set-difference company-files-exclusions - dir-exclusions))) - (cl-loop for c in completions - unless (if (company-files--trailing-slash-p c) - (member c dir-exclusions) - (cl-find-if (lambda (exclusion) - (string-suffix-p exclusion c)) - file-exclusions)) - collect c))) - -(defvar company-files--regexps - (let* ((root (if (eq system-type 'windows-nt) - "[a-zA-Z]:/" - "/")) - (begin (concat "\\(?:\\.\\{1,2\\}/\\|~/\\|" root "\\)"))) - (list (concat "\"\\(" begin "[^\"\n]*\\)") - (concat "\'\\(" begin "[^\'\n]*\\)") - (concat "\\(?:[ \t=\[]\\|^\\)\\(" begin "[^ \t\n]*\\)")))) - -(defun company-files--grab-existing-name () - ;; Grab the file name. - ;; When surrounded with quotes, it can include spaces. - (let (file dir) - (and (cl-dolist (regexp company-files--regexps) - (when (setq file (company-grab-line regexp 1)) - (cl-return file))) - (company-files--connected-p file) - (setq dir (file-name-directory file)) - (not (string-match "//" dir)) - (file-exists-p dir) - file))) - -(defun company-files--connected-p (file) - (or (not (file-remote-p file)) - (file-remote-p file nil t))) - -(defun company-files--trailing-slash-p (file) - ;; `file-directory-p' is very expensive on remotes. We are relying on - ;; `file-name-all-completions' returning directories with trailing / instead. - (let ((len (length file))) - (and (> len 0) (eq (aref file (1- len)) ?/)))) - -(defvar company-files--completion-cache nil) - -(defun company-files--complete (prefix) - (let* ((dir (file-name-directory prefix)) - (file (file-name-nondirectory prefix)) - (key (list file - (expand-file-name dir) - (nth 5 (file-attributes dir)))) - (completion-ignore-case read-file-name-completion-ignore-case)) - (unless (company-file--keys-match-p key (car company-files--completion-cache)) - (let* ((candidates (mapcar (lambda (f) (concat dir f)) - (company-files--directory-files dir file))) - (directories (unless (file-remote-p dir) - (cl-remove-if-not (lambda (f) - (and (company-files--trailing-slash-p f) - (not (file-remote-p f)) - (company-files--connected-p f))) - candidates))) - (children (and directories - (cl-mapcan (lambda (d) - (mapcar (lambda (c) (concat d c)) - (company-files--directory-files d ""))) - directories)))) - (setq company-files--completion-cache - (cons key (append candidates children))))) - (all-completions prefix - (cdr company-files--completion-cache)))) - -(defun company-file--keys-match-p (new old) - (and (equal (cdr old) (cdr new)) - (string-prefix-p (car old) (car new)))) - -(defun company-files--post-completion (arg) - (when (and company-files-chop-trailing-slash - (company-files--trailing-slash-p arg)) - (delete-char -1))) - -;;;###autoload -(defun company-files (command &optional arg &rest ignored) - "`company-mode' completion backend existing file names. -Completions works for proper absolute and relative files paths. -File paths with spaces are only supported inside strings." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-files)) - (prefix (company-files--grab-existing-name)) - (candidates (company-files--complete arg)) - (location (cons (dired-noselect - (file-name-directory (directory-file-name arg))) 1)) - (post-completion (company-files--post-completion arg)) - (kind (if (string-suffix-p "/" arg) 'folder 'file)) - (sorted t) - (no-cache t))) - -(provide 'company-files) -;;; company-files.el ends here diff --git a/elpa/company-0.10.2/company-gtags.el b/elpa/company-0.10.2/company-gtags.el @@ -1,161 +0,0 @@ -;;; company-gtags.el --- company-mode completion backend for GNU Global - -;; Copyright (C) 2009-2011, 2013-2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'company-template) -(require 'cl-lib) - -(defgroup company-gtags nil - "Completion backend for GNU Global." - :group 'company) - -(define-obsolete-variable-alias - 'company-gtags-gnu-global-program-name - 'company-gtags-executable "earlier") - -(defcustom company-gtags-executable - (executable-find "global") - "Location of GNU global executable." - :type 'string) - -(defcustom company-gtags-insert-arguments t - "When non-nil, insert function arguments as a template after completion." - :type 'boolean - :package-version '(company . "0.8.1")) - -(defvar-local company-gtags--tags-available-p 'unknown) -(defvar-local company-gtags--executable 'unknown) - -(defcustom company-gtags-modes '(prog-mode jde-mode) - "Modes that use `company-gtags'. -In all these modes (and their derivatives) `company-gtags' will perform -completion." - :type '(repeat (symbol :tag "Major mode")) - :package-version '(company . "0.8.4")) - -(defun company-gtags--tags-available-p () - (if (eq company-gtags--tags-available-p 'unknown) - (setq company-gtags--tags-available-p - (locate-dominating-file buffer-file-name "GTAGS")) - company-gtags--tags-available-p)) - -;; Avoid byte-compilation warnings on Emacs < 27. -(declare-function with-connection-local-variables "files-x") -(declare-function connection-local-set-profile-variables "files-x") -(declare-function connection-local-set-profiles "files-x") - -(defun company-gtags--executable () - (cond - ((not (eq company-gtags--executable 'unknown)) ;; the value is already cached - company-gtags--executable) - ((and (version<= "27" emacs-version) ;; can search remotely to set - (file-remote-p default-directory)) - - (with-connection-local-variables - (if (boundp 'company-gtags--executable-connection) - (setq-local company-gtags--executable ;; use if defined as connection-local - company-gtags--executable-connection) - - ;; Else search and set as connection local for next uses. - (setq-local company-gtags--executable - (with-no-warnings (executable-find "global" t))) - (let* ((host (file-remote-p default-directory 'host)) - (symvars (intern (concat host "-vars")))) ;; profile name - - (connection-local-set-profile-variables - symvars - `((company-gtags--executable-connection . ,company-gtags--executable))) - - (connection-local-set-profiles `(:machine ,host) symvars)) - company-gtags--executable))) - (t ;; use default value (searched locally) - company-gtags-executable))) - -(defun company-gtags--fetch-tags (prefix) - (with-temp-buffer - (let (tags) - ;; For some reason Global v 6.6.3 is prone to returning exit status 1 - ;; even on successful searches when '-T' is used. - (when (/= 3 (process-file (company-gtags--executable) nil - ;; "-T" goes through all the tag files listed in GTAGSLIBPATH - (list (current-buffer) nil) nil "-xGqT" (concat "^" prefix))) - (goto-char (point-min)) - (cl-loop while - (re-search-forward (concat - "^" - "\\([^ ]*\\)" ;; completion - "[ \t]+\\([[:digit:]]+\\)" ;; linum - "[ \t]+\\([^ \t]+\\)" ;; file - "[ \t]+\\(.*\\)" ;; definition - "$" - ) nil t) - collect - (propertize (match-string 1) - 'meta (match-string 4) - 'location (cons (expand-file-name (match-string 3)) - (string-to-number (match-string 2))) - )))))) - -(defun company-gtags--annotation (arg) - (let ((meta (get-text-property 0 'meta arg))) - (when (string-match (concat (regexp-quote arg) " *(") meta) - (with-temp-buffer - (let ((start (match-end 0))) - (insert meta) - (goto-char start) - (condition-case nil - (forward-sexp) - (scan-error - (goto-char (point-max)))) - (buffer-substring-no-properties - start (point))))))) - -;;;###autoload -(defun company-gtags (command &optional arg &rest ignored) - "`company-mode' completion backend for GNU Global." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-gtags)) - (prefix (and (company-gtags--executable) - buffer-file-name - (apply #'derived-mode-p company-gtags-modes) - (not (company-in-string-or-comment)) - (company-gtags--tags-available-p) - (or (company-grab-symbol) 'stop))) - (candidates (company-gtags--fetch-tags arg)) - (sorted t) - (duplicates t) - (annotation (company-gtags--annotation arg)) - (meta (get-text-property 0 'meta arg)) - (location (get-text-property 0 'location arg)) - (post-completion (let ((anno (company-gtags--annotation arg))) - (when (and company-gtags-insert-arguments anno) - (insert anno) - (company-template-c-like-templatify anno)))))) - -(provide 'company-gtags) -;;; company-gtags.el ends here diff --git a/elpa/company-0.10.2/company-ispell.el b/elpa/company-0.10.2/company-ispell.el @@ -1,83 +0,0 @@ -;;; company-ispell.el --- company-mode completion backend using Ispell - -;; Copyright (C) 2009-2011, 2013-2016, 2018, 2021 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'ispell) - -(defgroup company-ispell nil - "Completion backend using Ispell." - :group 'company) - -(defcustom company-ispell-dictionary nil - "Dictionary to use for `company-ispell'. -If nil, use `ispell-complete-word-dict'." - :type '(choice (const :tag "default (nil)" nil) - (file :tag "dictionary" t))) - -(defvar company-ispell-available 'unknown) - -(defalias 'company-ispell--lookup-words - (if (fboundp 'ispell-lookup-words) - 'ispell-lookup-words - 'lookup-words)) - -(defun company-ispell-available () - (when (eq company-ispell-available 'unknown) - (condition-case err - (progn - (company-ispell--lookup-words "WHATEVER") - (setq company-ispell-available t)) - (error - (message "Company-Ispell: %s" (error-message-string err)) - (setq company-ispell-available nil)))) - company-ispell-available) - -;;;###autoload -(defun company-ispell (command &optional arg &rest ignored) - "`company-mode' completion backend using Ispell." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-ispell)) - (prefix (when (company-ispell-available) - (company-grab-word))) - (candidates - (let ((words (company-ispell--lookup-words - arg - (or company-ispell-dictionary ispell-complete-word-dict))) - (completion-ignore-case t)) - (if (string= arg "") - ;; Small optimization. - words - ;; Work around issue #284. - (all-completions arg words)))) - (kind 'text) - (sorted t) - (ignore-case 'keep-prefix))) - -(provide 'company-ispell) -;;; company-ispell.el ends here diff --git a/elpa/company-0.10.2/company-keywords.el b/elpa/company-0.10.2/company-keywords.el @@ -1,461 +0,0 @@ -;;; company-keywords.el --- A company backend for programming language keywords - -;; Copyright (C) 2009-2011, 2013-2018, 2020-2022 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(eval-when-compile (require 'make-mode)) - -(defgroup company-keywords nil - "Completion backend for keywords." - :group 'company) - -(defcustom company-keywords-ignore-case nil - "Non-nil to ignore case in completion candidates." - :type 'boolean) - -(defun company-keywords-upper-lower (&rest lst) - ;; Upcase order is different for _. - (nconc (sort (mapcar 'upcase lst) 'string<) lst)) - -(defvar company-keywords-alist - ;; Please contribute corrections or additions. - `((c++-mode - ;; from https://en.cppreference.com/w/cpp/keyword - "alignas" "alignof" "and" "and_eq" "asm" "atomic_cancel" "atomic_commit" - "atomic_noexcept" "auto" "bitand" "bitor" "bool" "break" "case" "catch" - "char" "char16_t" "char32_t" "char8_t" "class" "co_await" "co_return" - "co_yield" "compl" "concept" "const" "const_cast" "consteval" "constexpr" - "constinit" "continue" "decltype" "default" "delete" "do" "double" - "dynamic_cast" "else" "enum" "explicit" "export" "extern" "false" "final" - "float" "for" "friend" "goto" "if" "import" "inline" "int" "long" "module" - "mutable" "namespace" "new" "noexcept" "not" "not_eq" "nullptr" "operator" - "or" "or_eq" "override" "private" "protected" "public" "reflexpr" "register" - "reinterpret_cast" "requires" "return" "short" "signed" "sizeof" "static" - "static_assert" "static_cast" "struct" "switch" "synchronized" "template" - "this" "thread_local" "throw" "true" "try" "typedef" "typeid" "typename" - "union" "unsigned" "using" "virtual" "void" "volatile" "wchar_t" "while" - "xor" "xor_eq") - (c-mode - ;; from https://en.cppreference.com/w/c/keyword - "_Alignas" "_Alignof" "_Atomic" "_Bool" "_Complex" - "_Decimal128" "_Decimal32" "_Decimal64" "_Generic" "_Imaginary" - "_Noreturn" "_Static_assert" "_Thread_local" "__asm__" "asm" - "auto" "break" "case" "char" "const" "continue" "default" "do" - "double" "else" "enum" "extern" "float" "for" "goto" "if" "inline" - "int" "long" "register" "restrict" "return" "short" "signed" "sizeof" - "static" "struct" "switch" "typedef" "union" "unsigned" "void" "volatile" - "while") - (crystal-mode - ;; from https://github.com/crystal-lang/crystal-book/issues/124#issuecomment-1008311227 - "abstract" "alias" "annotation" "as" "as?" "asm" "begin" "break" "case" "class" - "def" "do" "else" "elsif" "end" "ensure" "enum" "extend" "false" "for" "fun" - "if" "in" "include" "instance_sizeof" "is_a?" "lib" "macro" "module" "next" - "nil" "nil?" "of" "offsetof" "out" "pointerof" "private" "protected" "require" - "rescue" "responds_to?" "return" "select" "self" "sizeof" "struct" "super" - "then" "true" "type" "typeof" "uninitialized" "union" "unless" "until" "verbatim" - "when" "while" "with" "yield") - (csharp-mode - "abstract" "add" "alias" "as" "base" "bool" "break" "byte" "case" - "catch" "char" "checked" "class" "const" "continue" "decimal" "default" - "delegate" "do" "double" "else" "enum" "event" "explicit" "extern" - "false" "finally" "fixed" "float" "for" "foreach" "get" "global" "goto" - "if" "implicit" "in" "int" "interface" "internal" "is" "lock" "long" - "namespace" "new" "null" "object" "operator" "out" "override" "params" - "partial" "private" "protected" "public" "readonly" "ref" "remove" - "return" "sbyte" "sealed" "set" "short" "sizeof" "stackalloc" "static" - "string" "struct" "switch" "this" "throw" "true" "try" "typeof" "uint" - "ulong" "unchecked" "unsafe" "ushort" "using" "value" "var" "virtual" - "void" "volatile" "where" "while" "yield") - (d-mode - ;; from http://www.digitalmars.com/d/2.0/lex.html - "abstract" "alias" "align" "asm" - "assert" "auto" "body" "bool" "break" "byte" "case" "cast" "catch" - "cdouble" "cent" "cfloat" "char" "class" "const" "continue" "creal" - "dchar" "debug" "default" "delegate" "delete" "deprecated" "do" - "double" "else" "enum" "export" "extern" "false" "final" "finally" - "float" "for" "foreach" "foreach_reverse" "function" "goto" "idouble" - "if" "ifloat" "import" "in" "inout" "int" "interface" "invariant" - "ireal" "is" "lazy" "long" "macro" "mixin" "module" "new" "nothrow" - "null" "out" "override" "package" "pragma" "private" "protected" - "public" "pure" "real" "ref" "return" "scope" "short" "static" "struct" - "super" "switch" "synchronized" "template" "this" "throw" "true" "try" - "typedef" "typeid" "typeof" "ubyte" "ucent" "uint" "ulong" "union" - "unittest" "ushort" "version" "void" "volatile" "wchar" "while" "with") - (elixir-mode - ;; from https://hexdocs.pm/elixir/Kernel.html - "__CALLER__" "__DIR__" "__ENV__" "__MODULE__" "__STACKTRACE__" - "__aliases__" "__block__" "abs" "alias" "alias!" "and" "apply" - "binary_part" "binary_slice" "binding" "bit_size" "byte_size" "case" "ceil" - "cond" "dbg" "def" "defdelegate" "defexception" "defguard" "defguardp" - "defimpl" "defmacro" "defmacrop" "defmodule" "defoverridable" "defp" - "defprotocol" "defstruct" "destructure" "div" "elem" "exit" "floor" "fn" - "for" "function_exported?" "get_and_update_in" "get_in" "hd" "if" "import" - "in" "inspect" "is_atom" "is_binary" "is_bitstring" "is_boolean" - "is_exception" "is_float" "is_function" "is_integer" "is_list" "is_map" - "is_map_key" "is_nil" "is_number" "is_pid" "is_port" "is_reference" - "is_struct" "is_tuple" "length" "macro_exported?" "make_ref" "map_size" - "match?" "max" "min" "node" "not" "or" "pop_in" "put_elem" "put_in" "quote" - "raise" "receive" "rem" "require" "reraise" "round" "self" "send" "spawn" - "spawn_link" "spawn_monitor" "struct" "struct!" "super" "tap" "then" - "throw" "tl" "to_charlist" "to_string" "trunc" "try" "tuple_size" "unless" - "unquote" "unquote_splicing" "update_in" "use" "var!" "with") - (erlang-mode - ;; from https://www.erlang.org/docs/20/reference_manual/introduction.html#id63536 - "after" "and" "andalso" "band" "begin" "bnot" "bor" "bsl" "bsr" "bxor" - "case" "catch" "cond" "div" "end" "fun" "if" "let" "not" "of" "or" "orelse" - "receive" "rem" "try" "when" "xor") - (f90-mode . - ;; from f90.el - ;; ".AND." ".GE." ".GT." ".LT." ".LE." ".NE." ".OR." ".TRUE." ".FALSE." - ,(company-keywords-upper-lower - "abs" "abstract" "achar" "acos" "adjustl" "adjustr" "aimag" "aint" - "align" "all" "all_prefix" "all_scatter" "all_suffix" "allocatable" - "allocate" "allocated" "and" "anint" "any" "any_prefix" "any_scatter" - "any_suffix" "asin" "assign" "assignment" "associate" "associated" - "asynchronous" "atan" "atan2" "backspace" "bind" "bit_size" "block" - "btest" "c_alert" "c_associated" "c_backspace" "c_bool" - "c_carriage_return" "c_char" "c_double" "c_double_complex" "c_f_pointer" - "c_f_procpointer" "c_float" "c_float_complex" "c_form_feed" "c_funloc" - "c_funptr" "c_horizontal_tab" "c_int" "c_int16_t" "c_int32_t" "c_int64_t" - "c_int8_t" "c_int_fast16_t" "c_int_fast32_t" "c_int_fast64_t" - "c_int_fast8_t" "c_int_least16_t" "c_int_least32_t" "c_int_least64_t" - "c_int_least8_t" "c_intmax_t" "c_intptr_t" "c_loc" "c_long" - "c_long_double" "c_long_double_complex" "c_long_long" "c_new_line" - "c_null_char" "c_null_funptr" "c_null_ptr" "c_ptr" "c_short" - "c_signed_char" "c_size_t" "c_vertical_tab" "call" "case" "ceiling" - "char" "character" "character_storage_size" "class" "close" "cmplx" - "command_argument_count" "common" "complex" "conjg" "contains" "continue" - "copy_prefix" "copy_scatter" "copy_suffix" "cos" "cosh" "count" - "count_prefix" "count_scatter" "count_suffix" "cpu_time" "cshift" - "cycle" "cyclic" "data" "date_and_time" "dble" "deallocate" "deferred" - "digits" "dim" "dimension" "distribute" "do" "dot_product" "double" - "dprod" "dynamic" "elemental" "else" "elseif" "elsewhere" "end" "enddo" - "endfile" "endif" "entry" "enum" "enumerator" "eoshift" "epsilon" "eq" - "equivalence" "eqv" "error_unit" "exit" "exp" "exponent" "extends" - "extends_type_of" "external" "extrinsic" "false" "file_storage_size" - "final" "floor" "flush" "forall" "format" "fraction" "function" "ge" - "generic" "get_command" "get_command_argument" "get_environment_variable" - "goto" "grade_down" "grade_up" "gt" "hpf_alignment" "hpf_distribution" - "hpf_template" "huge" "iachar" "iall" "iall_prefix" "iall_scatter" - "iall_suffix" "iand" "iany" "iany_prefix" "iany_scatter" "iany_suffix" - "ibclr" "ibits" "ibset" "ichar" "ieee_arithmetic" "ieee_exceptions" - "ieee_features" "ieee_get_underflow_mode" "ieee_set_underflow_mode" - "ieee_support_underflow_control" "ieor" "if" "ilen" "implicit" - "import" "include" "independent" "index" "inherit" "input_unit" - "inquire" "int" "integer" "intent" "interface" "intrinsic" "ior" - "iostat_end" "iostat_eor" "iparity" "iparity_prefix" "iparity_scatter" - "iparity_suffix" "ishft" "ishftc" "iso_c_binding" "iso_fortran_env" - "kind" "lbound" "le" "leadz" "len" "len_trim" "lge" "lgt" "lle" "llt" - "log" "log10" "logical" "lt" "matmul" "max" "maxexponent" "maxloc" - "maxval" "maxval_prefix" "maxval_scatter" "maxval_suffix" "merge" - "min" "minexponent" "minloc" "minval" "minval_prefix" "minval_scatter" - "minval_suffix" "mod" "module" "modulo" "move_alloc" "mvbits" "namelist" - "ne" "nearest" "neqv" "new" "new_line" "nint" "non_intrinsic" - "non_overridable" "none" "nopass" "not" "null" "nullify" - "number_of_processors" "numeric_storage_size" "only" "onto" "open" - "operator" "optional" "or" "output_unit" "pack" "parameter" "parity" - "parity_prefix" "parity_scatter" "parity_suffix" "pass" "pause" - "pointer" "popcnt" "poppar" "precision" "present" "print" "private" - "procedure" "processors" "processors_shape" "product" "product_prefix" - "product_scatter" "product_suffix" "program" "protected" "public" - "pure" "radix" "random_number" "random_seed" "range" "read" "real" - "realign" "recursive" "redistribute" "repeat" "reshape" "result" - "return" "rewind" "rrspacing" "same_type_as" "save" "scale" "scan" - "select" "selected_char_kind" "selected_int_kind" "selected_real_kind" - "sequence" "set_exponent" "shape" "sign" "sin" "sinh" "size" "spacing" - "spread" "sqrt" "stop" "subroutine" "sum" "sum_prefix" "sum_scatter" - "sum_suffix" "system_clock" "tan" "tanh" "target" "template" "then" - "tiny" "transfer" "transpose" "trim" "true" "type" "ubound" "unpack" - "use" "value" "verify" "volatile" "wait" "where" "while" "with" "write")) - (go-mode - ;; 1. Keywords ref: https://golang.org/ref/spec#Keywords - ;; 2. Builtin functions and types ref: https://golang.org/pkg/builtin/ - "append" "bool" "break" "byte" "cap" "case" "chan" "close" "complex" "complex128" - "complex64" "const" "continue" "copy" "default" "defer" "delete" "else" "error" - "fallthrough" "false" "float32" "float64" "for" "func" "go" "goto" "if" "imag" - "import" "int" "int16" "int32" "int64" "int8" "interface" "len" "make" - "map" "new" "nil" "package" "panic" "print" "println" "range" "real" "recover" - "return" "rune" "select" "string" "struct" "switch" "true" "type" "uint" "uint16" - "uint32" "uint64" "uint8" "uintptr" "var") - (java-mode - "abstract" "assert" "boolean" "break" "byte" "case" "catch" "char" "class" - "continue" "default" "do" "double" "else" "enum" "extends" "final" - "finally" "float" "for" "if" "implements" "import" "instanceof" "int" - "interface" "long" "native" "new" "package" "private" "protected" "public" - "return" "short" "static" "strictfp" "super" "switch" "synchronized" - "this" "throw" "throws" "transient" "try" "void" "volatile" "while") - (javascript-mode - ;; https://tc39.github.io/ecma262/ + async, static and undefined - "async" "await" "break" "case" "catch" "class" "const" "continue" - "debugger" "default" "delete" "do" "else" "enum" "export" "extends" "false" - "finally" "for" "function" "if" "import" "in" "instanceof" "let" "new" - "null" "return" "static" "super" "switch" "this" "throw" "true" "try" - "typeof" "undefined" "var" "void" "while" "with" "yield") - (kotlin-mode - "abstract" "annotation" "as" "break" "by" "catch" "class" "companion" - "const" "constructor" "continue" "data" "do" "else" "enum" "false" "final" - "finally" "for" "fun" "if" "import" "in" "init" "inner" "interface" - "internal" "is" "lateinit" "nested" "null" "object" "open" "out" "override" - "package" "private" "protected" "public" "return" "super" "this" "throw" - "trait" "true" "try" "typealias" "val" "var" "when" "while") - (lua-mode - ;; https://www.lua.org/manual/5.3/manual.html - "and" "break" "do" "else" "elseif" "end" "false" "for" "function" "goto" "if" - "in" "local" "nil" "not" "or" "repeat" "return" "then" "true" "until" "while") - (nim-mode - ;; https://nim-lang.org/docs/manual.html#lexical-analysis-identifiers-amp-keywords - "addr" "and" "as" "asm" "bind" "block" "break" "case" "cast" "concept" "const" "continue" - "converter" "defer" "discard" "distinct" "div" "do" "elif" "else" "end" "enum" "except" - "export" "finally" "for" "from" "func" "if" "import" "in" "include" "interface" "is" "isnot" - "iterator" "let" "macro" "method" "mixin" "mod" "nil" "not" "notin" "object" "of" "or" "out" - "proc" "ptr" "raise" "ref" "return" "shl" "shr" "static" "template" "try" "tuple" "type" - "using" "var" "when" "while" "xor" "yield") - (objc-mode - "@catch" "@class" "@encode" "@end" "@finally" "@implementation" - "@interface" "@private" "@protected" "@protocol" "@public" - "@selector" "@synchronized" "@throw" "@try" "alloc" "autorelease" - "bycopy" "byref" "in" "inout" "oneway" "out" "release" "retain") - (perl-mode - ;; from cperl.el - "AUTOLOAD" "BEGIN" "CHECK" "CORE" "DESTROY" "END" "INIT" "__END__" - "__FILE__" "__LINE__" "abs" "accept" "alarm" "and" "atan2" "bind" - "binmode" "bless" "caller" "chdir" "chmod" "chomp" "chop" "chown" "chr" - "chroot" "close" "closedir" "cmp" "connect" "continue" "cos" - "crypt" "dbmclose" "dbmopen" "defined" "delete" "die" "do" "dump" "each" - "else" "elsif" "endgrent" "endhostent" "endnetent" "endprotoent" - "endpwent" "endservent" "eof" "eq" "eval" "exec" "exists" "exit" "exp" - "fcntl" "fileno" "flock" "for" "foreach" "fork" "format" "formline" - "ge" "getc" "getgrent" "getgrgid" "getgrnam" "gethostbyaddr" - "gethostbyname" "gethostent" "getlogin" "getnetbyaddr" "getnetbyname" - "getnetent" "getpeername" "getpgrp" "getppid" "getpriority" - "getprotobyname" "getprotobynumber" "getprotoent" "getpwent" "getpwnam" - "getpwuid" "getservbyname" "getservbyport" "getservent" "getsockname" - "getsockopt" "glob" "gmtime" "goto" "grep" "gt" "hex" "if" "index" "int" - "ioctl" "join" "keys" "kill" "last" "lc" "lcfirst" "le" "length" - "link" "listen" "local" "localtime" "lock" "log" "lstat" "lt" "map" - "mkdir" "msgctl" "msgget" "msgrcv" "msgsnd" "my" "ne" "next" "no" - "not" "oct" "open" "opendir" "or" "ord" "our" "pack" "package" "pipe" - "pop" "pos" "print" "printf" "push" "q" "qq" "quotemeta" "qw" "qx" - "rand" "read" "readdir" "readline" "readlink" "readpipe" "recv" "redo" - "ref" "rename" "require" "reset" "return" "reverse" "rewinddir" "rindex" - "rmdir" "scalar" "seek" "seekdir" "select" "semctl" "semget" "semop" - "send" "setgrent" "sethostent" "setnetent" "setpgrp" "setpriority" - "setprotoent" "setpwent" "setservent" "setsockopt" "shift" "shmctl" - "shmget" "shmread" "shmwrite" "shutdown" "sin" "sleep" "socket" - "socketpair" "sort" "splice" "split" "sprintf" "sqrt" "srand" "stat" - "study" "sub" "substr" "symlink" "syscall" "sysopen" "sysread" "system" - "syswrite" "tell" "telldir" "tie" "time" "times" "tr" "truncate" "uc" - "ucfirst" "umask" "undef" "unless" "unlink" "unpack" "unshift" "untie" - "until" "use" "utime" "values" "vec" "wait" "waitpid" - "wantarray" "warn" "while" "write" "x" "xor" "y") - (php-mode ;; https://www.php.net/manual/reserved.php - "Closure" "Error" "Exception" "Generator" "Throwable" - "__CLASS__" "__DIR__" "__FILE__" "__FUNCTION__" "__LINE__" "__METHOD__" - "__NAMESPACE__" "__TRAIT__" - "abstract" "and" "array" "as" "bool" "break" "callable" "case" "catch" - "class" "clone" "const" "continue" "declare" "default" "die" "do" "echo" - "else" "elseif" "empty" "enddeclare" "endfor" "endforeach" "endif" - "endswitch" "endwhile" "enum" "eval" "exit" "extends" "false" "final" "finally" - "float" "fn" "for" "foreach" "function" "global" "goto" "if" - "implements" "include" "include_once" "instanceof" "insteadof" "interface" - "isset" "iterable" "list" "match" "namespace" "new" "null" "object" "or" - "print" "private" "protected" "public" "readonly" "require" "require_once" - "return" "self" "static" "string" "switch" "this" "throw" "trait" "true" - "try" "unset" "use" "var" "void" "while" "xor" "yield" "yield from") - (purescript-mode ;; purescript-font-lock.el - "ado" "case" "class" "data" "default" "deriving" "do" "else" "if" "import" - "in" "infix" "infixl" "infixr" "instance" "let" "module" "newtype" "of" - "then" "type" "where") - (python-mode - ;; https://docs.python.org/3/reference/lexical_analysis.html#keywords - "False" "None" "True" "and" "as" "assert" "break" "class" "continue" "def" - "del" "elif" "else" "except" "exec" "finally" "for" "from" "global" "if" - "import" "in" "is" "lambda" "nonlocal" "not" "or" "pass" "print" "raise" - "return" "try" "while" "with" "yield") - (ruby-mode - "BEGIN" "END" "alias" "and" "begin" "break" "case" "class" "def" "defined?" - "do" "else" "elsif" "end" "ensure" "false" "for" "if" "in" "module" - "next" "nil" "not" "or" "redo" "rescue" "retry" "return" "self" "super" - "then" "true" "undef" "unless" "until" "when" "while" "yield") - ;; From https://doc.rust-lang.org/grammar.html#keywords - ;; but excluding unused reserved words: https://www.reddit.com/r/rust/comments/34fq0k/is_there_a_good_list_of_rusts_keywords/cqucvnj - (rust-mode - "Self" - "as" "box" "break" "const" "continue" "crate" "else" "enum" "extern" - "false" "fn" "for" "if" "impl" "in" "let" "loop" "macro" "match" "mod" - "move" "mut" "pub" "ref" "return" "self" "static" "struct" "super" - "trait" "true" "type" "unsafe" "use" "where" "while") - ; Extract from R7RS-small Tex: https://small.r7rs.org/ - (scheme-mode - "abs" "acos" "angle" "append" "apply" "asin" "assoc" "assq" "assv" - "atan" "binary-port?" "body" "boolean=?" "boolean?" "bytevector" - "bytevector-append" "bytevector-copy" "bytevector-copy!" - "bytevector-length" "bytevector-u8-ref" "bytevector-u8-set!" - "bytevector?" "caaaar" "caaadr" "caaar" "caadar" "caaddr" "caadr" - "caar" "cadaar" "cadadr" "cadar" "caddar" "cadddr" "caddr" "cadr" - "call-with-port" "call-with-values" "car" "car-internal" "cdaaar" - "cdaadr" "cdaar" "cdadar" "cdaddr" "cdadr" "cdar" "cddaar" "cddadr" - "cddar" "cdddar" "cddddr" "cdddr" "cddr" "cdr" "ceiling" - "char->integer" "char-alphabetic?" "char-ci<=?" "char-ci<?" - "char-ci=?" "char-ci>=?" "char-ci>?" "char-downcase" "char-foldcase" - "char-lower-case?" "char-numeric?" "char-ready?" "char-upcase" - "char-upper-case?" "char-whitespace?" "char<=?" "char<?" "char=?" - "char>=?" "char>?" "char?" "close-input-port" "close-output-port" - "close-port" "command-line" "complex?" "cons" "cos" - "current-error-port" "current-input-port" "current-jiffy" - "current-output-port" "current-second" "delete-file" "denominator" - "digit-value" "display" "dynamic-wind" "emergency-exit" "environment" - "eof-object" "eof-object?" "eq?" "equal?" "eqv?" "error" - "error-object-irritants" "error-object-message" "error-object?" "eval" - "even?" "exact" "exact-integer-sqrt" "exact-integer?" "exact?" "exit" - "exp" "expt" "features" "file-error?" "file-exists?" "finite?" "floor" - "floor-quotient" "floor-remainder" "floor/" "flush-output-port" "gcd" - "get-environment-variable" "get-environment-variables" - "get-output-bytevector" "get-output-string" "imag-part" "inexact" - "inexact?" "infinite?" "input-port-open?" "input-port?" - "integer->char" "integer?" "interaction-environment" - "jiffies-per-second" "lcm" "length" "list" "list->string" - "list->vector" "list-copy" "list-ref" "list-set!" "list-tail" "list?" - "load" "log" "magnitude" "make-bytevector" "make-list" - "make-parameter" "make-polar" "make-promise" "make-rectangular" - "make-string" "make-vector" "max" "member" "memq" "memv" "min" - "modulo" "nan?" "negative?" "newline" "nil" "not" "null-environment" - "null?" "number->string" "number?" "numerator" "odd?" - "open-binary-input-file" "open-binary-output-file" - "open-input-bytevector" "open-input-file" "open-input-string" - "open-output-bytevector" "open-output-file" "open-output-string" - "output-port-open?" "output-port?" "pair?" "peek-char" "peek-u8" - "port?" "positive?" "procedure?" "promise?" "quasiquote" "quote" - "quotient" "raise" "raise-continuable" "rational?" "rationalize" - "read" "read-bytevector" "read-bytevector!" "read-char" "read-error?" - "read-line" "read-string" "read-u8" "real-part" "real?" "remainder" - "reverse" "round" "scheme-report-environment" "set!" "set-car!" - "set-cdr!" "setcar" "sin" "sqrt" "square" "string" "string->list" - "string->number" "string->symbol" "string->utf" "string->vector" - "string-append" "string-ci<=?" "string-ci<?" "string-ci=?" - "string-ci>=?" "string-ci>?" "string-copy" "string-copy!" - "string-downcase" "string-fill!" "string-foldcase" "string-for-each" - "string-length" "string-map" "string-ref" "string-set!" - "string-upcase" "string<=?" "string<?" "string=?" "string>=?" - "string>?" "string?" "substring" "symbol->string" "symbol=?" "symbol?" - "tan" "textual-port?" "truncate" "truncate-quotient" - "truncate-remainder" "truncate/" "u8-ready?" "unquote" - "unquote-splicing" "utf->string" "values" "vector" "vector->list" - "vector->string" "vector-append" "vector-copy" "vector-copy!" - "vector-fill!" "vector-for-each" "vector-length" "vector-map" - "vector-ref" "vector-set!" "vector?" "with-exception-handler" - "with-input-from-file" "with-output-to-file" "write" - "write-bytevector" "write-char" "write-shared" "write-simple" - "write-string" "write-u8" "zero?") - (scala-mode - "abstract" "case" "catch" "class" "def" "do" "else" "extends" "false" - "final" "finally" "for" "forSome" "if" "implicit" "import" "lazy" "match" - "new" "null" "object" "override" "package" "private" "protected" - "return" "sealed" "super" "this" "throw" "trait" "true" "try" "type" "val" - "var" "while" "with" "yield") - (swift-mode - "Protocol" "Self" "Type" "and" "as" "assignment" "associatedtype" - "associativity" "available" "break" "case" "catch" "class" "column" "continue" - "convenience" "default" "defer" "deinit" "didSet" "do" "dynamic" "dynamicType" - "else" "elseif" "endif" "enum" "extension" "fallthrough" "false" "file" - "fileprivate" "final" "for" "func" "function" "get" "guard" "higherThan" "if" - "import" "in" "indirect" "infix" "init" "inout" "internal" "is" "lazy" "left" - "let" "line" "lowerThan" "mutating" "nil" "none" "nonmutating" "open" - "operator" "optional" "override" "postfix" "precedence" "precedencegroup" - "prefix" "private" "protocol" "public" "repeat" "required" "rethrows" "return" - "right" "selector" "self" "set" "static" "struct" "subscript" "super" "switch" - "throw" "throws" "true" "try" "typealias" "unowned" "var" "weak" "where" - "while" "willSet") - (julia-mode - "abstract" "break" "case" "catch" "const" "continue" "do" "else" "elseif" - "end" "eval" "export" "false" "finally" "for" "function" "global" "if" - "ifelse" "immutable" "import" "importall" "in" "let" "macro" "module" - "otherwise" "quote" "return" "switch" "throw" "true" "try" "type" - "typealias" "using" "while" - ) - ;; From https://github.com/apache/thrift/blob/master/contrib/thrift.el - (thrift-mode - "binary" "bool" "byte" "const" "double" "enum" "exception" "extends" - "i16" "i32" "i64" "include" "list" "map" "oneway" "optional" "required" - "service" "set" "string" "struct" "throws" "typedef" "void" - ) - ;; aliases - (js2-mode . javascript-mode) - (js2-jsx-mode . javascript-mode) - (espresso-mode . javascript-mode) - (js-mode . javascript-mode) - (js-jsx-mode . javascript-mode) - (rjsx-mode . javascript-mode) - (cperl-mode . perl-mode) - (jde-mode . java-mode) - (ess-julia-mode . julia-mode) - (phps-mode . php-mode) - (enh-ruby-mode . ruby-mode)) - "Alist mapping major-modes to sorted keywords for `company-keywords'.") - -(with-eval-after-load 'make-mode - (mapc - (lambda (mode-stmnts) - (setf (alist-get (car mode-stmnts) company-keywords-alist) - (cl-remove-duplicates - (sort (append makefile-special-targets-list - (cl-mapcan #'identity - (mapcar - #'split-string - (cl-remove-if-not - #'stringp - (symbol-value (cdr mode-stmnts)))))) - #'string<) - :test #'string=))) - '((makefile-automake-mode . makefile-automake-statements) - (makefile-gmake-mode . makefile-gmake-statements) - (makefile-makepp-mode . makefile-makepp-statements) - (makefile-bsdmake-mode . makefile-bsdmake-statements) - (makefile-imake-mode . makefile-statements) - (makefile-mode . makefile-statements)))) - -;;;###autoload -(defun company-keywords (command &optional arg &rest ignored) - "`company-mode' backend for programming language keywords." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-keywords)) - (prefix (and (assq major-mode company-keywords-alist) - (not (company-in-string-or-comment)) - (or (company-grab-symbol) 'stop))) - (candidates - (let ((completion-ignore-case company-keywords-ignore-case) - (symbols (cdr (assq major-mode company-keywords-alist)))) - (all-completions arg (if (consp symbols) - symbols - (cdr (assq symbols company-keywords-alist)))))) - (kind 'keyword) - (sorted t) - (ignore-case company-keywords-ignore-case))) - -(provide 'company-keywords) -;;; company-keywords.el ends here diff --git a/elpa/company-0.10.2/company-nxml.el b/elpa/company-0.10.2/company-nxml.el @@ -1,143 +0,0 @@ -;;; company-nxml.el --- company-mode completion backend for nxml-mode - -;; Copyright (C) 2009-2011, 2013-2015, 2017-2018 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; -;; In Emacs >= 26, company-capf is used instead. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defvar rng-open-elements) -(defvar rng-validate-mode) -(defvar rng-in-attribute-regex) -(defvar rng-in-attribute-value-regex) -(declare-function rng-set-state-after "rng-nxml") -(declare-function rng-match-possible-start-tag-names "rng-match") -(declare-function rng-adjust-state-for-attribute "rng-nxml") -(declare-function rng-match-possible-attribute-names "rng-match") -(declare-function rng-adjust-state-for-attribute-value "rng-nxml") -(declare-function rng-match-possible-value-strings "rng-match") - -(defconst company-nxml-token-regexp - "\\(?:[_[:alpha:]][-._[:alnum:]]*\\_>\\)") - -(defvar company-nxml-in-attribute-value-regexp - (replace-regexp-in-string "w" company-nxml-token-regexp - "<w\\(?::w\\)?\ -\\(?:[ \t\r\n]+w\\(?::w\\)?[ \t\r\n]*=\ -\[ \t\r\n]*\\(?:\"[^\"]*\"\\|'[^']*'\\)\\)*\ -\[ \t\r\n]+\\(w\\(:w\\)?\\)[ \t\r\n]*=[ \t\r\n]*\ -\\(\"\\([^\"]*\\>\\)\\|'\\([^']*\\>\\)\\)\\=" - t t)) - -(defvar company-nxml-in-tag-name-regexp - (replace-regexp-in-string "w" company-nxml-token-regexp - "<\\(/?w\\(?::w?\\)?\\)?\\=" t t)) - -(defun company-nxml-all-completions (prefix alist) - (let ((candidates (mapcar 'cdr alist)) - (case-fold-search nil) - filtered) - (when (cdar rng-open-elements) - (push (concat "/" (cdar rng-open-elements)) candidates)) - (setq candidates (sort (all-completions prefix candidates) 'string<)) - (while candidates - (unless (equal (car candidates) (car filtered)) - (push (car candidates) filtered)) - (pop candidates)) - (nreverse filtered))) - -(defmacro company-nxml-prepared (&rest body) - (declare (indent 0) (debug t)) - `(let ((lt-pos (save-excursion (search-backward "<" nil t))) - xmltok-dtd) - (when (and lt-pos (= (rng-set-state-after lt-pos) lt-pos)) - ,@body))) - -(defun company-nxml-tag (command &optional arg &rest ignored) - (cl-case command - (prefix (and (derived-mode-p 'nxml-mode) - rng-validate-mode - (company-grab company-nxml-in-tag-name-regexp 1))) - (candidates (company-nxml-prepared - (company-nxml-all-completions - arg (rng-match-possible-start-tag-names)))) - (sorted t))) - -(defun company-nxml-attribute (command &optional arg &rest ignored) - (cl-case command - (prefix (and (derived-mode-p 'nxml-mode) - rng-validate-mode - (memq (char-after) '(?\ ?\t ?\n)) ;; outside word - (company-grab rng-in-attribute-regex 1))) - (candidates (company-nxml-prepared - (and (rng-adjust-state-for-attribute - lt-pos (- (point) (length arg))) - (company-nxml-all-completions - arg (rng-match-possible-attribute-names))))) - (sorted t))) - -(defun company-nxml-attribute-value (command &optional arg &rest ignored) - (cl-case command - (prefix (and (derived-mode-p 'nxml-mode) - rng-validate-mode - (and (memq (char-after) '(?' ?\" ?\ ?\t ?\n)) ;; outside word - (looking-back company-nxml-in-attribute-value-regexp nil) - (or (match-string-no-properties 4) - (match-string-no-properties 5) - "")))) - (candidates (company-nxml-prepared - (let (attr-start attr-end colon) - (and (looking-back rng-in-attribute-value-regex lt-pos) - (setq colon (match-beginning 2) - attr-start (match-beginning 1) - attr-end (match-end 1)) - (rng-adjust-state-for-attribute lt-pos attr-start) - (rng-adjust-state-for-attribute-value - attr-start colon attr-end) - (all-completions - arg (rng-match-possible-value-strings)))))))) - -;;;###autoload -(defun company-nxml (command &optional arg &rest ignored) - "`company-mode' completion backend for `nxml-mode'." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-nxml)) - (prefix (or (company-nxml-tag 'prefix) - (company-nxml-attribute 'prefix) - (company-nxml-attribute-value 'prefix))) - (candidates (cond - ((company-nxml-tag 'prefix) - (company-nxml-tag 'candidates arg)) - ((company-nxml-attribute 'prefix) - (company-nxml-attribute 'candidates arg)) - ((company-nxml-attribute-value 'prefix) - (sort (company-nxml-attribute-value 'candidates arg) - 'string<)))) - (sorted t))) - -(provide 'company-nxml) -;;; company-nxml.el ends here diff --git a/elpa/company-0.10.2/company-oddmuse.el b/elpa/company-0.10.2/company-oddmuse.el @@ -1,57 +0,0 @@ -;;; company-oddmuse.el --- company-mode completion backend for oddmuse-mode - -;; Copyright (C) 2009-2011, 2013-2016, 2022 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(eval-when-compile (require 'yaoddmuse nil t)) -(eval-when-compile (require 'oddmuse nil t)) - -(defvar company-oddmuse-link-regexp - "\\(\\<[A-Z][[:alnum:]]*\\>\\)\\|\\[\\[\\([[:alnum:]]+\\>\\|\\)") - -(defun company-oddmuse-get-page-table () - (cl-case major-mode - (yaoddmuse-mode (with-no-warnings - (yaoddmuse-get-pagename-table yaoddmuse-wikiname))) - (oddmuse-mode (with-no-warnings - (oddmuse-make-completion-table oddmuse-wiki))))) - -;;;###autoload -(defun company-oddmuse (command &optional arg &rest ignored) - "`company-mode' completion backend for `oddmuse-mode'." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-oddmuse)) - (prefix (let ((case-fold-search nil)) - (and (memq major-mode '(oddmuse-mode yaoddmuse-mode)) - (looking-back company-oddmuse-link-regexp (line-beginning-position)) - (or (match-string 1) - (match-string 2))))) - (candidates (all-completions arg (company-oddmuse-get-page-table))))) - -(provide 'company-oddmuse) -;;; company-oddmuse.el ends here diff --git a/elpa/company-0.10.2/company-pkg.el b/elpa/company-0.10.2/company-pkg.el @@ -1,2 +0,0 @@ -;; Generated package description from company.el -*- no-byte-compile: t -*- -(define-package "company" "0.10.2" "Modular text completion framework" '((emacs "25.1")) :commit "34e92d9b7084b03d087866abcd1e6a22a244c9bb" :maintainer '("Dmitry Gutov" . "dmitry@gutov.dev") :keywords '("abbrev" "convenience" "matching") :url "http://company-mode.github.io/") diff --git a/elpa/company-0.10.2/company-semantic.el b/elpa/company-0.10.2/company-semantic.el @@ -1,168 +0,0 @@ -;;; company-semantic.el --- company-mode completion backend using Semantic - -;; Copyright (C) 2009-2011, 2013-2018 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'company-template) -(require 'cl-lib) - -(defvar semantic-idle-summary-function) -(declare-function semantic-documentation-for-tag "semantic/doc" ) -(declare-function semantic-analyze-current-context "semantic/analyze") -(declare-function semantic-analyze-possible-completions "semantic/complete") -(declare-function semantic-analyze-find-tags-by-prefix "semantic/analyze/fcn") -(declare-function semantic-tag-class "semantic/tag") -(declare-function semantic-tag-name "semantic/tag") -(declare-function semantic-tag-start "semantic/tag") -(declare-function semantic-tag-buffer "semantic/tag") -(declare-function semantic-active-p "semantic") -(declare-function semantic-format-tag-prototype "semantic/format") - -(defgroup company-semantic nil - "Completion backend using Semantic." - :group 'company) - -(defcustom company-semantic-metadata-function 'company-semantic-summary-and-doc - "The function turning a semantic tag into doc information." - :type 'function) - -(defcustom company-semantic-begin-after-member-access t - "When non-nil, automatic completion will start whenever the current -symbol is preceded by \".\", \"->\" or \"::\", ignoring -`company-minimum-prefix-length'. - -If `company-begin-commands' is a list, it should include `c-electric-lt-gt' -and `c-electric-colon', for automatic completion right after \">\" and -\":\"." - :type 'boolean) - -(defcustom company-semantic-insert-arguments t - "When non-nil, insert function arguments as a template after completion." - :type 'boolean - :package-version '(company . "0.9.0")) - -(defvar company-semantic-modes '(c-mode c++-mode jde-mode java-mode)) - -(defvar-local company-semantic--current-tags nil - "Tags for the current context.") - -(defun company-semantic-documentation-for-tag (tag) - (when (semantic-tag-buffer tag) - ;; When TAG's buffer is unknown, the function below raises an error. - (semantic-documentation-for-tag tag))) - -(defun company-semantic-doc-or-summary (tag) - (or (company-semantic-documentation-for-tag tag) - (and (require 'semantic-idle nil t) - (require 'semantic/idle nil t) - (funcall semantic-idle-summary-function tag nil t)))) - -(defun company-semantic-summary-and-doc (tag) - (let ((doc (company-semantic-documentation-for-tag tag)) - (summary (funcall semantic-idle-summary-function tag nil t))) - (and (stringp doc) - (string-match "\n*\\(.*\\)$" doc) - (setq doc (match-string 1 doc))) - (concat summary - (when doc - (if (< (+ (length doc) (length summary) 4) (window-width)) - " -- " - "\n")) - doc))) - -(defun company-semantic-doc-buffer (tag) - (let ((doc (company-semantic-documentation-for-tag tag))) - (when doc - (company-doc-buffer - (concat (funcall semantic-idle-summary-function tag nil t) - "\n" - doc))))) - -(defsubst company-semantic-completions (prefix) - (ignore-errors - (let ((completion-ignore-case nil) - (context (semantic-analyze-current-context))) - (setq company-semantic--current-tags - (semantic-analyze-possible-completions context 'no-unique)) - (all-completions prefix company-semantic--current-tags)))) - -(defun company-semantic-completions-raw (prefix) - (setq company-semantic--current-tags nil) - (dolist (tag (semantic-analyze-find-tags-by-prefix prefix)) - (unless (eq (semantic-tag-class tag) 'include) - (push tag company-semantic--current-tags))) - (delete "" (mapcar 'semantic-tag-name company-semantic--current-tags))) - -(defun company-semantic-annotation (argument tags) - (let* ((tag (assq argument tags)) - (kind (when tag (elt tag 1)))) - (cl-case kind - (function (let* ((prototype (semantic-format-tag-prototype tag nil nil)) - (par-pos (string-match "(" prototype))) - (when par-pos (substring prototype par-pos))))))) - -(defun company-semantic--prefix () - (if company-semantic-begin-after-member-access - (company-grab-symbol-cons "\\.\\|->\\|::" 2) - (company-grab-symbol))) - -;;;###autoload -(defun company-semantic (command &optional arg &rest ignored) - "`company-mode' completion backend using CEDET Semantic." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-semantic)) - (prefix (and (featurep 'semantic) - (semantic-active-p) - (memq major-mode company-semantic-modes) - (not (company-in-string-or-comment)) - (or (company-semantic--prefix) 'stop))) - (candidates (if (and (equal arg "") - (not (looking-back "->\\|\\.\\|::" (- (point) 2)))) - (company-semantic-completions-raw arg) - (company-semantic-completions arg))) - (meta (funcall company-semantic-metadata-function - (assoc arg company-semantic--current-tags))) - (annotation (company-semantic-annotation arg - company-semantic--current-tags)) - (doc-buffer (company-semantic-doc-buffer - (assoc arg company-semantic--current-tags))) - ;; Because "" is an empty context and doesn't return local variables. - (no-cache (equal arg "")) - (duplicates t) - (location (let ((tag (assoc arg company-semantic--current-tags))) - (when (buffer-live-p (semantic-tag-buffer tag)) - (cons (semantic-tag-buffer tag) - (semantic-tag-start tag))))) - (post-completion (let ((anno (company-semantic-annotation - arg company-semantic--current-tags))) - (when (and company-semantic-insert-arguments anno) - (insert anno) - (company-template-c-like-templatify (concat arg anno))) - )))) - -(provide 'company-semantic) -;;; company-semantic.el ends here diff --git a/elpa/company-0.10.2/company-template.el b/elpa/company-0.10.2/company-template.el @@ -1,272 +0,0 @@ -;;; company-template.el --- utility library for template expansion - -;; Copyright (C) 2009-2010, 2013-2017, 2019 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - -;;; Code: - -(require 'cl-lib) - -(defface company-template-field - '((((background dark)) (:background "yellow" :foreground "black")) - (((background light)) (:background "orange" :foreground "black"))) - "Face used for editable text in template fields." - :group 'company-faces) - -(defvar company-template-forward-field-item - '(menu-item "" company-template-forward-field - :filter company-template--keymap-filter)) - -(defvar company-template-nav-map - (let ((keymap (make-sparse-keymap))) - (define-key keymap [tab] company-template-forward-field-item) - (define-key keymap (kbd "TAB") company-template-forward-field-item) - keymap)) - -(defvar company-template-clear-field-item - '(menu-item "" company-template-clear-field - :filter company-template--keymap-filter)) - -(defvar company-template-field-map - (let ((keymap (make-sparse-keymap))) - (set-keymap-parent keymap company-template-nav-map) - (define-key keymap (kbd "C-d") company-template-clear-field-item) - keymap)) - -(defvar-local company-template--buffer-templates nil) - -;; interactive ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-template-templates-at (pos) - (let (os) - (dolist (o (overlays-at pos)) - ;; FIXME: Always return the whole list of templates? - ;; We remove templates not at point after every command. - (when (memq o company-template--buffer-templates) - (push o os))) - os)) - -(defun company-template-move-to-first (templ) - (interactive) - (goto-char (overlay-start templ)) - (company-template-forward-field)) - -(defun company-template-forward-field () - (interactive) - (let ((start (point)) - (next-field-start (company-template-find-next-field))) - (push-mark) - (goto-char next-field-start) - (company-template-remove-field (company-template-field-at start)))) - -(defun company-template-clear-field () - "Clear the field at point." - (interactive) - (let ((ovl (company-template-field-at (point)))) - (when ovl - (company-template-remove-field ovl t) - (let ((after-clear-fn - (overlay-get ovl 'company-template-after-clear))) - (when (functionp after-clear-fn) - (funcall after-clear-fn)))))) - -(defun company-template--keymap-filter (cmd) - (unless (run-hook-with-args-until-success 'yas-keymap-disable-hook) - cmd)) - -(defun company-template--after-clear-c-like-field () - "Function that can be called after deleting a field of a c-like template. -For c-like templates it is set as `after-post-fn' property on fields in -`company-template-add-field'. If there is a next field, delete everything -from point to it. If there is no field after point, remove preceding comma -if present." - (let* ((pos (point)) - (next-field-start (company-template-find-next-field)) - (last-field-p (not (company-template-field-at next-field-start)))) - (cond ((and (not last-field-p) - (< pos next-field-start) - (string-match "^[ ]*,+[ ]*$" (buffer-substring-no-properties - pos next-field-start))) - (delete-region pos next-field-start)) - ((and last-field-p - (looking-back ",+[ ]*" (line-beginning-position))) - (delete-region (match-beginning 0) pos))))) - -(defun company-template-find-next-field () - (let* ((start (point)) - (templates (company-template-templates-at start)) - (minimum (apply 'max (mapcar 'overlay-end templates))) - (fields (cl-loop for templ in templates - append (overlay-get templ 'company-template-fields)))) - (dolist (pos (mapcar 'overlay-start fields) minimum) - (and pos - (> pos start) - (< pos minimum) - (setq minimum pos))))) - -(defun company-template-field-at (&optional point) - (cl-loop for ovl in (overlays-at (or point (point))) - when (overlay-get ovl 'company-template-parent) - return ovl)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-template-declare-template (beg end) - (let ((ov (make-overlay beg end))) - ;; (overlay-put ov 'face 'highlight) - (overlay-put ov 'keymap company-template-nav-map) - (overlay-put ov 'priority 101) - (overlay-put ov 'evaporate t) - (push ov company-template--buffer-templates) - (add-hook 'post-command-hook 'company-template-post-command nil t) - ov)) - -(defun company-template-remove-template (templ) - (mapc 'company-template-remove-field - (overlay-get templ 'company-template-fields)) - (setq company-template--buffer-templates - (delq templ company-template--buffer-templates)) - (delete-overlay templ)) - -(defun company-template-add-field (templ beg end &optional display after-clear-fn) - "Add new field to template TEMPL spanning from BEG to END. -When DISPLAY is non-nil, set the respective property on the overlay. -Leave point at the end of the field. -AFTER-CLEAR-FN is a function that can be used to apply custom behavior -after deleting a field in `company-template-remove-field'." - (cl-assert templ) - (when (> end (overlay-end templ)) - (move-overlay templ (overlay-start templ) end)) - (let ((ov (make-overlay beg end)) - (siblings (overlay-get templ 'company-template-fields))) - ;; (overlay-put ov 'evaporate t) - (overlay-put ov 'intangible t) - (overlay-put ov 'face 'company-template-field) - (when display - (overlay-put ov 'display display)) - (overlay-put ov 'company-template-parent templ) - (overlay-put ov 'insert-in-front-hooks '(company-template-insert-hook)) - (when after-clear-fn - (overlay-put ov 'company-template-after-clear after-clear-fn)) - (overlay-put ov 'keymap company-template-field-map) - (overlay-put ov 'priority 101) - (push ov siblings) - (overlay-put templ 'company-template-fields siblings))) - -(defun company-template-remove-field (ovl &optional clear) - (when (overlayp ovl) - (when (overlay-buffer ovl) - (when clear - (delete-region (overlay-start ovl) (overlay-end ovl))) - (delete-overlay ovl)) - (let* ((templ (overlay-get ovl 'company-template-parent)) - (siblings (overlay-get templ 'company-template-fields))) - (setq siblings (delq ovl siblings)) - (overlay-put templ 'company-template-fields siblings)))) - -(defun company-template-clean-up (&optional pos) - "Clean up all templates that don't contain POS." - (let ((local-ovs (overlays-at (or pos (point))))) - (dolist (templ company-template--buffer-templates) - (unless (memq templ local-ovs) - (company-template-remove-template templ))))) - -;; hooks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-template-insert-hook (ovl after-p &rest _ignore) - "Called when a snippet input prompt is modified." - (unless after-p - (company-template-remove-field ovl t))) - -(defun company-template-post-command () - (company-template-clean-up) - (unless company-template--buffer-templates - (remove-hook 'post-command-hook 'company-template-post-command t))) - -;; common ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-template-c-like-templatify (call) - (let* ((end (point-marker)) - (beg (- (point) (length call))) - (templ (company-template-declare-template beg end)) - paren-open paren-close) - (with-syntax-table (make-syntax-table (syntax-table)) - (modify-syntax-entry ?< "(") - (modify-syntax-entry ?> ")") - (when (search-backward ")" beg t) - (setq paren-close (point-marker)) - (forward-char 1) - (delete-region (point) end) - (backward-sexp) - (forward-char 1) - (setq paren-open (point-marker))) - (when (search-backward ">" beg t) - (let ((angle-close (point-marker))) - (forward-char 1) - (backward-sexp) - (forward-char) - (company-template--c-like-args templ angle-close))) - (when (looking-back "\\((\\*)\\)(" (line-beginning-position)) - (delete-region (match-beginning 1) (match-end 1))) - (when paren-open - (goto-char paren-open) - (company-template--c-like-args templ paren-close))) - (if (overlay-get templ 'company-template-fields) - (company-template-move-to-first templ) - (company-template-remove-template templ) - (goto-char end)))) - -(defun company-template--c-like-args (templ end) - (let ((last-pos (point))) - (while (re-search-forward "\\([^,]+\\),?" end 'move) - (when (zerop (car (parse-partial-sexp last-pos (point)))) - (company-template-add-field templ last-pos (match-end 1) nil - #'company-template--after-clear-c-like-field) - (skip-chars-forward " ") - (setq last-pos (point)))))) - -;; objc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-template-objc-templatify (selector) - (let* ((end (point-marker)) - (beg (- (point) (length selector) 1)) - (templ (company-template-declare-template beg end)) - (cnt 0)) - (save-excursion - (goto-char beg) - (catch 'stop - (while (search-forward ":" end t) - (if (looking-at "\\(([^)]*)\\) ?") - (company-template-add-field templ (point) (match-end 1)) - ;; Not sure which conditions this case manifests under, but - ;; apparently it did before, when I wrote the first test for this - ;; function. FIXME: Revisit it. - (company-template-add-field templ (point) - (progn - (insert (format "arg%d" cnt)) - (point))) - (when (< (point) end) - (insert " ")) - (cl-incf cnt)) - (when (>= (point) end) - (throw 'stop t))))) - (company-template-move-to-first templ))) - -(provide 'company-template) -;;; company-template.el ends here diff --git a/elpa/company-0.10.2/company-tempo.el b/elpa/company-0.10.2/company-tempo.el @@ -1,72 +0,0 @@ -;;; company-tempo.el --- company-mode completion backend for tempo - -;; Copyright (C) 2009-2011, 2013-2016 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'tempo) - -(defgroup company-tempo nil - "Tempo completion backend." - :group 'company) - -(defcustom company-tempo-expand nil - "Whether to expand a tempo tag after completion." - :type '(choice (const :tag "Off" nil) - (const :tag "On" t))) - -(defsubst company-tempo-lookup (match) - (cdr (assoc match (tempo-build-collection)))) - -(defun company-tempo-insert (match) - "Replace MATCH with the expanded tempo template." - (search-backward match) - (goto-char (match-beginning 0)) - (replace-match "") - (call-interactively (company-tempo-lookup match))) - -(defsubst company-tempo-meta (match) - (let ((templ (company-tempo-lookup match)) - doc) - (and templ - (setq doc (documentation templ t)) - (car (split-string doc "\n" t))))) - -;;;###autoload -(defun company-tempo (command &optional arg &rest ignored) - "`company-mode' completion backend for tempo." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-tempo)) - (prefix (or (car (tempo-find-match-string tempo-match-finder)) "")) - (candidates (all-completions arg (tempo-build-collection))) - (kind 'snippet) - (meta (company-tempo-meta arg)) - (post-completion (when company-tempo-expand (company-tempo-insert arg))) - (sorted t))) - -(provide 'company-tempo) -;;; company-tempo.el ends here diff --git a/elpa/company-0.10.2/company-tng.el b/elpa/company-0.10.2/company-tng.el @@ -1,196 +0,0 @@ -;;; company-tng.el --- company-mode configuration for single-button interaction - -;; Copyright (C) 2017-2021 Free Software Foundation, Inc. - -;; Author: Nikita Leshenko - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; -;; company-tng (Tab and Go) allows you to perform completion using just TAB. -;; Pressing it will both select the next completion candidate in the list and -;; insert it into the buffer (or make it look like it's inserted, in fact). -;; -;; It cycles the candidates like `yank-pop' or `dabbrev-expand' or Vim: -;; Pressing TAB selects the first item in the completion menu and inserts it in -;; the buffer. Pressing TAB again selects the second item and replaces the -;; "inserted" item with the second one. This can continue as long as the user -;; wishes to cycle through the menu. You can also press S-TAB to select the -;; previous candidate, of course. -;; -;; The benefits are that you only have to use one shortcut key and there is no -;; need to confirm the entry. -;; -;; Usage: -;; -;; Enable `company-tng-mode' with: -;; -;; (add-hook 'after-init-hook 'company-tng-mode) -;; -;; in your init script. It will set up the required frontend, as well as make a -;; number of recommended configuration changes described below. -;; -;; To avoid these changes, if you want to tweak everything yourself, customize -;;`company-tng-auto-configure' to nil. -;; -;; We recommend to bind TAB to `company-select-next', S-TAB to -;; `company-select-previous', and unbind RET and other now-unnecessary -;; keys from `company-active-map': -;; -;; (define-key company-active-map (kbd "TAB") 'company-select-next) -;; (define-key company-active-map (kbd "<backtab>") 'company-select-previous) -;; (define-key company-active-map (kbd "RET") nil) -;; -;; Note that it's not necessary to rebind keys to use this frontend, -;; you can use the arrow keys or M-n/M-p to select and insert -;; candidates. You also need to decide which keys to unbind, depending -;; on whether you want them to do the Company action or the default -;; Emacs action (for example C-s or C-w). -;; -;; We recommend to disable `company-require-match' to allow free typing at any -;; point. -;; -;; By default, company-tng doesn't work well with backends that insert function -;; arguments into the buffer and (optionally) expand them into a snippet -;; (usually performed in `post-completion' using yasnippet or company-template). -;; In company-tng, completion candidates -;; are inserted into the buffer as the user selects them and the completion is -;; finished implicitly when the user continues typing after selecting a -;; candidate. Modifying the buffer (by expanding a snippet) when the user -;; continues typing would be surprising and undesirable, since the candidate was -;; already inserted into the buffer. -;; -;; For this reason `company-tng-mode' by default disables arguments insertion -;; for a number of popular backends. If the backend you are using is not among -;; them, you might have to configure it not to do that yourself. -;; -;; YASnippet and company-tng both use TAB, which causes conflicts. The -;; recommended way to use YASnippet with company-tng is to choose a different -;; key for expanding a snippet and moving to the next snippet field: -;; -;; (define-key yas-minor-mode-map "\C-j" 'yas-expand) -;; (define-key yas-keymap "\C-j" 'yas-next-field-or-maybe-expand) -;; (dolist (keymap (list yas-minor-mode-map yas-keymap)) -;; (define-key keymap (kbd "TAB") nil) -;; (define-key keymap [(tab)] nil)) - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defvar-local company-tng--overlay nil) - -;;;###autoload -(defun company-tng-frontend (command) - "When the user changes the selection at least once, this -frontend will display the candidate in the buffer as if it's -already there and any key outside of `company-active-map' will -confirm the selection and finish the completion." - (cl-case command - (show - (let ((ov (make-overlay (point) (point)))) - (setq company-tng--overlay ov) - (overlay-put ov 'priority 2))) - (update - (let* ((ov company-tng--overlay) - (selected (and company-selection - (nth company-selection company-candidates))) - (prefix (length company-prefix))) - (move-overlay ov (- (point) prefix) (point)) - (overlay-put ov - (if (= prefix 0) 'after-string 'display) - selected))) - (hide - (when company-tng--overlay - (delete-overlay company-tng--overlay) - (kill-local-variable 'company-tng--overlay))) - (pre-command - (when (and company-selection - (not (company--company-command-p (this-command-keys)))) - (company--unread-this-command-keys) - (setq this-command 'company-complete-selection))))) - -(defvar company-clang-insert-arguments) -(defvar company-semantic-insert-arguments) -(defvar company-rtags-insert-arguments) -(defvar lsp-enable-snippet) - -(defgroup company-tng nil - "Company Tab and Go." - :group 'company) - -(defcustom company-tng-auto-configure t - "Automatically apply default configure when enable `company-tng-mode'." - :type 'boolean) - -;;;###autoload -(define-obsolete-function-alias 'company-tng-configure-default 'company-tng-mode "0.10.0" - "Applies the default configuration to enable company-tng.") - -(declare-function eglot--snippet-expansion-fn "eglot") - -(defvar company-tng-map - (let ((keymap (make-sparse-keymap))) - (set-keymap-parent keymap company-active-map) - (define-key keymap [return] nil) - (define-key keymap (kbd "RET") nil) - (define-key keymap [tab] 'company-select-next) - (define-key keymap (kbd "TAB") 'company-select-next) - (define-key keymap [backtab] 'company-select-previous) - (define-key keymap (kbd "S-TAB") 'company-select-previous) - keymap)) - -;;;###autoload -(define-minor-mode company-tng-mode - "This minor mode enables `company-tng-frontend'." - :init-value nil - :global t - (cond - (company-tng-mode - (setq company-frontends - (add-to-list 'company-frontends 'company-tng-frontend)) - (when company-tng-auto-configure - (setq company-frontends '(company-tng-frontend - company-pseudo-tooltip-frontend - company-echo-metadata-frontend)) - (setq company-require-match nil - company-clang-insert-arguments nil - company-semantic-insert-arguments nil - company-rtags-insert-arguments nil - lsp-enable-snippet nil) - (advice-add #'eglot--snippet-expansion-fn :override #'ignore) - (setq company-active-map company-tng-map)) - (setq company-selection-default nil)) - (t - (setq company-frontends - '(company-pseudo-tooltip-unless-just-one-frontend - company-preview-if-just-one-frontend - company-echo-metadata-frontend)) - (when company-tng-auto-configure - (setq company-require-match 'company-explicit-action-p - company-clang-insert-arguments t - company-semantic-insert-arguments t - company-rtags-insert-arguments t - lsp-enable-snippet t) - (advice-remove #'eglot--snippet-expansion-fn #'ignore) - (setq company-active-map (keymap-parent company-tng-map))) - (setq company-selection-default 0)))) - -(provide 'company-tng) -;;; company-tng.el ends here diff --git a/elpa/company-0.10.2/company-yasnippet.el b/elpa/company-0.10.2/company-yasnippet.el @@ -1,186 +0,0 @@ -;;; company-yasnippet.el --- company-mode completion backend for Yasnippet - -;; Copyright (C) 2014-2015, 2020-2022 Free Software Foundation, Inc. - -;; Author: Dmitry Gutov - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(declare-function yas--table-hash "yasnippet") -(declare-function yas--get-snippet-tables "yasnippet") -(declare-function yas-expand-snippet "yasnippet") -(declare-function yas--template-content "yasnippet") -(declare-function yas--template-expand-env "yasnippet") -(declare-function yas--warning "yasnippet") -(declare-function yas-minor-mode "yasnippet") -(declare-function yas--require-template-specific-condition-p "yasnippet") -(declare-function yas--template-can-expand-p "yasnippet") -(declare-function yas--template-condition "yasnippet") - -(defvar company-yasnippet-annotation-fn - (lambda (name) - (concat - (unless company-tooltip-align-annotations " -> ") - name)) - "Function to format completion annotation. -It has to accept one argument: the snippet's name.") - -(defun company-yasnippet--key-prefixes () - ;; Mostly copied from `yas--templates-for-key-at-point'. - (defvar yas-key-syntaxes) - (save-excursion - (let ((original (point)) - (methods yas-key-syntaxes) - prefixes - method) - (while methods - (unless (eq method (car methods)) - (goto-char original)) - (setq method (car methods)) - (cond ((stringp method) - (skip-syntax-backward method) - (setq methods (cdr methods))) - ((functionp method) - (unless (eq (funcall method original) - 'again) - (setq methods (cdr methods)))) - (t - (setq methods (cdr methods)) - (yas--warning "Invalid element `%s' in `yas-key-syntaxes'" method))) - (let ((prefix (buffer-substring-no-properties (point) original))) - (unless (equal prefix (car prefixes)) - (push prefix prefixes)))) - prefixes))) - -(defun company-yasnippet--candidates (prefix) - ;; Process the prefixes in reverse: unlike Yasnippet, we look for prefix - ;; matches, so the longest prefix with any matches should be the most useful. - (cl-loop with tables = (yas--get-snippet-tables) - for key-prefix in (company-yasnippet--key-prefixes) - ;; Only consider keys at least as long as the symbol at point. - when (>= (length key-prefix) (length prefix)) - thereis (company-yasnippet--completions-for-prefix prefix - key-prefix - tables))) - -(defun company-yasnippet--completions-for-prefix (prefix key-prefix tables) - (cl-mapcan - (lambda (table) - (let ((keyhash (yas--table-hash table)) - (requirement (yas--require-template-specific-condition-p)) - res) - (when keyhash - (maphash - (lambda (key value) - (when (and (stringp key) - (string-prefix-p key-prefix key)) - (maphash - (lambda (name template) - (when (yas--template-can-expand-p - (yas--template-condition template) requirement) - (push - (propertize key - 'yas-annotation name - 'yas-template template - 'yas-prefix-offset (- (length key-prefix) - (length prefix))) - res))) - value))) - keyhash)) - res)) - tables)) - -(defun company-yasnippet--doc (arg) - (let ((template (get-text-property 0 'yas-template arg)) - (mode major-mode) - (file-name (buffer-file-name))) - (defvar yas-prompt-functions) - (with-current-buffer (company-doc-buffer) - (let ((buffer-file-name file-name)) - (yas-minor-mode 1) - (setq-local yas-prompt-functions '(yas-no-prompt)) - (condition-case error - (yas-expand-snippet (yas--template-content template)) - (error - (message "%s" (error-message-string error)))) - (delay-mode-hooks - (let ((inhibit-message t)) - (if (eq mode 'web-mode) - (progn - (setq mode 'html-mode) - (funcall mode)) - (funcall mode))) - (ignore-errors (font-lock-ensure)))) - (current-buffer)))) - -;;;###autoload -(defun company-yasnippet (command &optional arg &rest ignore) - "`company-mode' backend for `yasnippet'. - -This backend should be used with care, because as long as there are -snippets defined for the current major mode, this backend will always -shadow backends that come after it. Recommended usages: - -* In a buffer-local value of `company-backends', grouped with a backend or - several that provide actual text completions. - - (add-hook \\='js-mode-hook - (lambda () - (set (make-local-variable \\='company-backends) - \\='((company-dabbrev-code company-yasnippet))))) - -* After keyword `:with', grouped with other backends. - - (push \\='(company-semantic :with company-yasnippet) company-backends) - -* Not in `company-backends', just bound to a key. - - (global-set-key (kbd \"C-c y\") \\='company-yasnippet) -" - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-yasnippet)) - (prefix - ;; Should probably use `yas--current-key', but that's bound to be slower. - ;; How many trigger keys start with non-symbol characters anyway? - (and (bound-and-true-p yas-minor-mode) - (company-grab-symbol))) - (annotation - (funcall company-yasnippet-annotation-fn - (get-text-property 0 'yas-annotation arg))) - (candidates (company-yasnippet--candidates arg)) - (doc-buffer (company-yasnippet--doc arg)) - (no-cache t) - (kind 'snippet) - (post-completion - (let ((template (get-text-property 0 'yas-template arg)) - (prefix-offset (get-text-property 0 'yas-prefix-offset arg))) - (yas-expand-snippet (yas--template-content template) - (- (point) (length arg) prefix-offset) - (point) - (yas--template-expand-env template)))))) - -(provide 'company-yasnippet) -;;; company-yasnippet.el ends here diff --git a/elpa/company-0.10.2/company.el b/elpa/company-0.10.2/company.el @@ -1,3986 +0,0 @@ -;;; company.el --- Modular text completion framework -*- lexical-binding: t -*- - -;; Copyright (C) 2009-2023 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher -;; Maintainer: Dmitry Gutov <dmitry@gutov.dev> -;; URL: http://company-mode.github.io/ -;; Version: 0.10.2 -;; Keywords: abbrev, convenience, matching -;; Package-Requires: ((emacs "25.1")) - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; -;; Company is a modular completion framework. Modules for retrieving completion -;; candidates are called backends, modules for displaying them are frontends. -;; -;; Company comes with many backends, e.g. `company-etags'. These are -;; distributed in separate files and can be used individually. -;; -;; Enable `company-mode' in all buffers with M-x global-company-mode. For -;; further information look at the documentation for `company-mode' (C-h f -;; company-mode RET). -;; -;; If you want to start a specific backend, call it interactively or use -;; `company-begin-backend'. For example: -;; M-x company-abbrev will prompt for and insert an abbrev. -;; -;; To write your own backend, look at the documentation for `company-backends'. -;; Here is a simple example completing "foo": -;; -;; (defun company-my-backend (command &optional arg &rest ignored) -;; (interactive (list 'interactive)) -;; (pcase command -;; (`interactive (company-begin-backend 'company-my-backend)) -;; (`prefix (company-grab-symbol)) -;; (`candidates (list "foobar" "foobaz" "foobarbaz")) -;; (`meta (format "This value is named %s" arg)))) -;; -;; Sometimes it is a good idea to mix several backends together, for example to -;; enrich gtags with dabbrev-code results (to emulate local variables). To do -;; this, add a list with both backends as an element in `company-backends'. -;; -;;; Change Log: -;; -;; See NEWS.md in the repository. - -;;; Code: - -(require 'cl-lib) -(require 'subr-x) -(require 'pcase) - -(defgroup company nil - "Extensible inline text completion mechanism." - :group 'abbrev - :group 'convenience - :group 'matching - :link '(custom-manual "(company) Top")) - -(defgroup company-faces nil - "Faces used by Company." - :group 'company - :group 'faces) - -(defface company-tooltip - '((((class color) (min-colors 88) (background light)) - (:foreground "black" :background "cornsilk")) - (((class color) (min-colors 88) (background dark)) - (:background "gray26")) - (t (:foreground "black" :background "yellow"))) - "Face used for the tooltip.") - -(defface company-tooltip-selection - '((((class color) (min-colors 88) (background light)) - (:background "light blue")) - (((class color) (min-colors 88) (background dark)) - (:background "gray31")) - (t (:background "green"))) - "Face used for the selection in the tooltip.") - -(defface company-tooltip-deprecated - '((t (:strike-through t))) - "Face used for the deprecated items.") - -(defface company-tooltip-search - '((default :inherit highlight)) - "Face used for the search string in the tooltip.") - -(defface company-tooltip-search-selection - '((default :inherit highlight)) - "Face used for the search string inside the selection in the tooltip.") - -(defface company-tooltip-mouse - '((default :inherit highlight)) - "Face used for the tooltip item under the mouse.") - -(defface company-tooltip-common - '((((background light)) - :foreground "darkred") - (((background dark)) - :foreground "pale turquoise")) - "Face used for the common completion in the tooltip.") - -(defface company-tooltip-common-selection - '((default :inherit company-tooltip-common)) - "Face used for the selected common completion in the tooltip.") - -(defface company-tooltip-annotation - '((((background light)) - :foreground "firebrick4") - (((background dark)) - :foreground "LightCyan3")) - "Face used for the completion annotation in the tooltip.") - -(defface company-tooltip-annotation-selection - '((default :inherit company-tooltip-annotation)) - "Face used for the selected completion annotation in the tooltip.") - -(defface company-tooltip-quick-access - '((default :inherit company-tooltip-annotation)) - "Face used for the quick-access hints shown in the tooltip." - :package-version '(company . "0.10.0")) - -(defface company-tooltip-quick-access-selection - '((default :inherit company-tooltip-annotation-selection)) - "Face used for the selected quick-access hints shown in the tooltip." - :package-version '(company . "0.10.0")) - -(define-obsolete-face-alias - 'company-scrollbar-fg - 'company-tooltip-scrollbar-thumb - "0.10.0") - -(defface company-tooltip-scrollbar-thumb - '((((background light)) - :background "darkred") - (((background dark)) - :background "gray33")) - "Face used for the tooltip scrollbar thumb (bar).") - -(define-obsolete-face-alias - 'company-scrollbar-bg - 'company-tooltip-scrollbar-track - "0.10.0") - -(defface company-tooltip-scrollbar-track - '((((background light)) - :background "wheat") - (((background dark)) - :background "gray28")) - "Face used for the tooltip scrollbar track (trough).") - -(defface company-preview - '((default :inherit (company-tooltip-selection company-tooltip))) - "Face used for the completion preview.") - -(defface company-preview-common - '((default :inherit company-tooltip-common-selection)) - "Face used for the common part of the completion preview.") - -(defface company-preview-search - '((default :inherit company-tooltip-common-selection)) - "Face used for the search string in the completion preview.") - -(defface company-echo nil - "Face used for completions in the echo area.") - -(defface company-echo-common - '((((background light)) (:foreground "firebrick4")) - (((background dark)) (:foreground "firebrick1"))) - "Face used for the common part of completions in the echo area.") - -;; Too lazy to re-add :group to all defcustoms down below. -(setcdr (assoc load-file-name custom-current-group-alist) - 'company) - -(defun company-frontends-set (variable value) - ;; Uniquify. - (let ((value (delete-dups (copy-sequence value)))) - (and (or (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value) - (memq 'company-pseudo-tooltip-frontend value)) - (and (memq 'company-pseudo-tooltip-unless-just-one-frontend-with-delay value) - (memq 'company-pseudo-tooltip-frontend value)) - (and (memq 'company-pseudo-tooltip-unless-just-one-frontend-with-delay value) - (memq 'company-pseudo-tooltip-unless-just-one-frontend value))) - (user-error "Pseudo tooltip frontend cannot be used more than once")) - (and (or (and (memq 'company-preview-if-just-one-frontend value) - (memq 'company-preview-frontend value)) - (and (memq 'company-preview-if-just-one-frontend value) - (memq 'company-preview-common-frontend value)) - (and (memq 'company-preview-frontend value) - (memq 'company-preview-common-frontend value)) - ) - (user-error "Preview frontend cannot be used twice")) - (and (memq 'company-echo value) - (memq 'company-echo-metadata-frontend value) - (user-error "Echo area cannot be used twice")) - ;; Preview must come last. - (dolist (f '(company-preview-if-just-one-frontend company-preview-frontend company-preview-common-frontend)) - (when (cdr (memq f value)) - (setq value (append (delq f value) (list f))))) - (set variable value))) - -(defcustom company-frontends '(company-pseudo-tooltip-unless-just-one-frontend - company-preview-if-just-one-frontend - company-echo-metadata-frontend) - "The list of active frontends (visualizations). -Each frontend is a function that takes one argument. It is called with -one of the following arguments: - -`show': When the visualization should start. - -`hide': When the visualization should end. - -`update': When the data has been updated. - -`pre-command': Before every command that is executed while the -visualization is active. - -`post-command': After every command that is executed while the -visualization is active. - -`unhide': When an asynchronous backend is waiting for its completions. -Only needed in frontends which hide their visualizations in `pre-command' -for technical reasons. - -The visualized data is stored in `company-prefix', `company-candidates', -`company-common', `company-selection', `company-point' and -`company-search-string'." - :set 'company-frontends-set - :type '(repeat (choice (const :tag "echo" company-echo-frontend) - (const :tag "echo, strip common" - company-echo-strip-common-frontend) - (const :tag "show echo meta-data in echo" - company-echo-metadata-frontend) - (const :tag "pseudo tooltip" - company-pseudo-tooltip-frontend) - (const :tag "pseudo tooltip, multiple only" - company-pseudo-tooltip-unless-just-one-frontend) - (const :tag "pseudo tooltip, multiple only, delayed" - company-pseudo-tooltip-unless-just-one-frontend-with-delay) - (const :tag "preview" company-preview-frontend) - (const :tag "preview, unique only" - company-preview-if-just-one-frontend) - (const :tag "preview, common" - company-preview-common-frontend) - (function :tag "custom function" nil)))) - -(defcustom company-tooltip-limit 10 - "The maximum number of candidates in the tooltip." - :type 'integer) - -(defcustom company-tooltip-minimum 6 - "Ensure visibility of this number of candidates. -When that many lines are not available between point and the bottom of the -window, display the tooltip above point." - :type 'integer) - -(defcustom company-tooltip-minimum-width 0 - "The minimum width of the tooltip's inner area. -This doesn't include the margins and the scroll bar." - :type 'integer - :package-version '(company . "0.8.0")) - -(defcustom company-tooltip-maximum-width most-positive-fixnum - "The maximum width of the tooltip's inner area. -This doesn't include the margins and the scroll bar." - :type 'integer - :package-version '(company . "0.9.5")) - -(defcustom company-tooltip-width-grow-only nil - "When non-nil, the tooltip width is not allowed to decrease." - :type 'boolean - :package-version '(company . "0.10.0")) - -(defcustom company-tooltip-margin 1 - "Width of margin columns to show around the toolip." - :type 'integer) - -(defcustom company-tooltip-offset-display 'scrollbar - "Method using which the tooltip displays scrolling position. -`scrollbar' means draw a scrollbar to the right of the items. -`lines' means wrap items in lines with \"before\" and \"after\" counters." - :type '(choice (const :tag "Scrollbar" scrollbar) - (const :tag "Two lines" lines))) - -(defcustom company-tooltip-align-annotations nil - "When non-nil, align annotations to the right tooltip border." - :type 'boolean - :package-version '(company . "0.7.1")) - -(defcustom company-tooltip-flip-when-above nil - "Whether to flip the tooltip when it's above the current line." - :type 'boolean - :package-version '(company . "0.8.1")) - -(defcustom company-tooltip-annotation-padding nil - "Non-nil to specify the padding before annotation. - -Depending on the value of `company-tooltip-align-annotations', the default -padding is either 0 or 1 space. This variable allows to override that -value to increase the padding. When annotations are right-aligned, it sets -the minimum padding, and otherwise just the constant one." - :type 'number - :package-version '(company "0.10.0")) - -(defvar company-safe-backends - '((company-abbrev . "Abbrev") - (company-bbdb . "BBDB") - (company-capf . "completion-at-point-functions") - (company-clang . "Clang") - (company-cmake . "CMake") - (company-css . "CSS (obsolete backend)") - (company-dabbrev . "dabbrev for plain text") - (company-dabbrev-code . "dabbrev for code") - (company-elisp . "Emacs Lisp (obsolete backend)") - (company-etags . "etags") - (company-files . "Files") - (company-gtags . "GNU Global") - (company-ispell . "Ispell") - (company-keywords . "Programming language keywords") - (company-nxml . "nxml (obsolete backend)") - (company-oddmuse . "Oddmuse") - (company-semantic . "Semantic") - (company-tempo . "Tempo templates"))) -(put 'company-safe-backends 'risky-local-variable t) - -(defun company-safe-backends-p (backends) - (and (consp backends) - (not (cl-dolist (backend backends) - (unless (if (consp backend) - (company-safe-backends-p backend) - (assq backend company-safe-backends)) - (cl-return t)))))) - -(defcustom company-backends `(company-bbdb - ,@(unless (version<= "26" emacs-version) - (list 'company-nxml)) - ,@(unless (version<= "26" emacs-version) - (list 'company-css)) - company-semantic - company-cmake - company-capf - company-clang - company-files - (company-dabbrev-code company-gtags company-etags - company-keywords) - company-oddmuse company-dabbrev) - "The list of active backends (completion engines). - -Only one backend is used at a time. The choice depends on the order of -the items in this list, and on the values they return in response to the -`prefix' command (see below). But a backend can also be a \"grouped\" -one (see below). - -`company-begin-backend' can be used to start a specific backend, -`company-other-backend' will skip to the next matching backend in the list. - -Each backend is a function that takes a variable number of arguments. -The first argument is the command requested from the backend. It is one -of the following: - -`prefix': The backend should return the text to be completed. It must be -text immediately before point. Returning nil from this command passes -control to the next backend. The function should return `stop' if it -should complete but cannot (e.g. when in the middle of a symbol). -Instead of a string, the backend may return a cons (PREFIX . LENGTH) -where LENGTH is a number used in place of PREFIX's length when -comparing against `company-minimum-prefix-length'. LENGTH can also -be just t, and in the latter case the test automatically succeeds. - -`candidates': The second argument is the prefix to be completed. The -return value should be a list of candidates that match the prefix. - -Non-prefix matches are also supported (candidates that don't start with the -prefix, but match it in some backend-defined way). Backends that use this -feature must disable cache (return t to `no-cache') and might also want to -respond to `match'. - -Optional commands -================= - -`sorted': Return t here to indicate that the candidates are sorted and will -not need to be sorted again. - -`duplicates': If non-nil, company will take care of removing duplicates -from the list. - -`no-cache': Usually company doesn't ask for candidates again as completion -progresses, unless the backend returns t for this command. The second -argument is the latest prefix. - -`ignore-case': Return t here if the backend returns case-insensitive -matches. This value is used to determine the longest common prefix (as -used in `company-complete-common'), and to filter completions when fetching -them from cache. - -`meta': The second argument is a completion candidate. Return a (short) -documentation string for it. - -`doc-buffer': The second argument is a completion candidate. Return a -buffer with documentation for it. Preferably use `company-doc-buffer'. If -not all buffer contents pertain to this candidate, return a cons of buffer -and window start position. - -`location': The second argument is a completion candidate. Return a cons -of buffer and buffer location, or of file and line number where the -completion candidate was defined. - -`annotation': The second argument is a completion candidate. Return a -string to be displayed inline with the candidate in the popup. If -duplicates are removed by company, candidates with equal string values will -be kept if they have different annotations. For that to work properly, -backends should store the related information on candidates using text -properties. - -`deprecated': The second argument is a completion candidate. Return -non-nil if the completion candidate is deprecated. - -`match': The second argument is a completion candidate. Return a positive -integer, the index after the end of text matching `prefix' within the -candidate string. Alternatively, return a list of (CHUNK-START -. CHUNK-END) elements, where CHUNK-START and CHUNK-END are indexes within -the candidate string. The corresponding regions are be used when rendering -the popup. This command only makes sense for backends that provide -non-prefix completion. - -`require-match': If this returns t, the user is not allowed to enter -anything not offered as a candidate. Please don't use that value in normal -backends. The default value nil gives the user that choice with -`company-require-match'. Return value `never' overrides that option the -other way around (using that value will indicate that the returned set of -completions is often incomplete, so this behavior will not be useful). - -`init': Called once for each buffer. The backend can check for external -programs and files and load any required libraries. Raising an error here -will show up in message log once, and the backend will not be used for -completion. - -`post-completion': Called after a completion candidate has been inserted -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 to `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. - -Grouped backends -================ - -An element of `company-backends' can also be a list of backends. The -completions from backends in such groups are merged, but only from those -backends which return the same `prefix'. - -If a backend command takes a candidate as an argument (e.g. `meta'), the -call is dispatched to the backend the candidate came from. In other -cases (except for `duplicates' and `sorted'), the first non-nil value among -all the backends is returned. - -The group can also contain keywords. Currently, `:with' and `:separate' -keywords are defined. If the group contains keyword `:with', the backends -listed after this keyword are ignored for the purpose of the `prefix' -command. If the group contains keyword `:separate', the candidates that -come from different backends are sorted separately in the combined list. - -Asynchronous backends -===================== - -The return value of each command can also be a cons (:async . FETCHER) -where FETCHER is a function of one argument, CALLBACK. When the data -arrives, FETCHER must call CALLBACK and pass it the appropriate return -value, as described above. That call must happen in the same buffer as -where completion was initiated. - -True asynchronous operation is only supported for command `candidates', and -only during idle completion. Other commands will block the user interface, -even if the backend uses the asynchronous calling convention." - :type `(repeat - (choice - :tag "backend" - ,@(mapcar (lambda (b) `(const :tag ,(cdr b) ,(car b))) - company-safe-backends) - (symbol :tag "User defined") - (repeat :tag "Merged backends" - (choice :tag "backend" - ,@(mapcar (lambda (b) - `(const :tag ,(cdr b) ,(car b))) - company-safe-backends) - (const :tag "With" :with) - (symbol :tag "User defined")))))) - -(put 'company-backends 'safe-local-variable 'company-safe-backends-p) - -(defcustom company-transformers nil - "Functions to change the list of candidates received from backends. - -Each function gets called with the return value of the previous one. -The first one gets passed the list of candidates, already sorted and -without duplicates." - :type '(choice - (const :tag "None" nil) - (const :tag "Sort by occurrence" (company-sort-by-occurrence)) - (const :tag "Sort by backend importance" - (company-sort-by-backend-importance)) - (const :tag "Prefer case sensitive prefix" - (company-sort-prefer-same-case-prefix)) - (repeat :tag "User defined" function))) - -(defcustom company-completion-started-hook nil - "Hook run when company starts completing. -The hook is called with one argument that is non-nil if the completion was -started manually." - :type 'hook) - -(defcustom company-completion-cancelled-hook nil - "Hook run when company cancels completing. -The hook is called with one argument that is non-nil if the completion was -aborted manually." - :type 'hook) - -(defcustom company-completion-finished-hook nil - "Hook run when company successfully completes. -The hook is called with the selected candidate as an argument. - -If you indend to use it to post-process candidates from a specific -backend, consider using the `post-completion' command instead." - :type 'hook) - -(defcustom company-after-completion-hook nil - "Hook run at the end of completion, successful or not. -The hook is called with one argument which is either a string or a symbol." - :type 'hook) - -(defcustom company-minimum-prefix-length 3 - "The minimum prefix length for idle completion." - :type '(integer :tag "prefix length")) - -(defcustom company-abort-manual-when-too-short nil - "If enabled, cancel a manually started completion when the prefix gets -shorter than both `company-minimum-prefix-length' and the length of the -prefix it was started from." - :type 'boolean - :package-version '(company . "0.8.0")) - -(defcustom company-abort-on-unique-match t - "If non-nil, typing a full unique match aborts completion. - -You can still invoke `company-complete' manually to run the -`post-completion' handler, though. - -If it's nil, completion will remain active until you type a prefix that -doesn't match anything or finish it manually, e.g. with RET." - :type 'boolean) - -(defcustom company-require-match 'company-explicit-action-p - "If enabled, disallow non-matching input. -This can be a function do determine if a match is required. - -This can be overridden by the backend, if it returns t or `never' to -`require-match'. `company-insertion-on-trigger' also takes precedence over -this." - :type '(choice (const :tag "Off" nil) - (function :tag "Predicate function") - (const :tag "On, if user interaction took place" - company-explicit-action-p) - (const :tag "On" t))) - -(define-obsolete-variable-alias - 'company-auto-complete - 'company-insertion-on-trigger - "0.10.0") - -(define-obsolete-variable-alias - 'company-auto-commit - 'company-insertion-on-trigger - "0.10.0") - -(defcustom company-insertion-on-trigger nil - "If enabled, allow triggering insertion of the selected candidate. -This can also be a predicate function, for example, -`company-explicit-action-p'. - -See `company-insertion-triggers' for more details on how to define -triggers." - :type '(choice (const :tag "Off" nil) - (function :tag "Predicate function") - (const :tag "On, if user interaction took place" - company-explicit-action-p) - (const :tag "On" t)) - :package-version '(company . "0.10.0")) - -(define-obsolete-variable-alias - 'company-auto-complete-chars - 'company-insertion-triggers - "0.10.0") - -(define-obsolete-variable-alias - 'company-auto-commit-chars - 'company-insertion-triggers - "0.10.0") - -(defcustom company-insertion-triggers '(?\ ?\) ?.) - "Determine triggers for `company-insertion-on-trigger'. - -If this is a string, then each character in it can trigger insertion of the -selected candidate. If it is a list of syntax description characters (see -`modify-syntax-entry'), then characters with any of those syntaxes can act -as triggers. - -This can also be a function, which is called with the new input. To -trigger insertion, the function should return a non-nil value. - -Note that a character that is part of a valid completion never triggers -insertion." - :type '(choice (string :tag "Characters") - (set :tag "Syntax" - (const :tag "Whitespace" ?\ ) - (const :tag "Symbol" ?_) - (const :tag "Opening parentheses" ?\() - (const :tag "Closing parentheses" ?\)) - (const :tag "Word constituent" ?w) - (const :tag "Punctuation." ?.) - (const :tag "String quote." ?\") - (const :tag "Paired delimiter." ?$) - (const :tag "Expression quote or prefix operator." ?\') - (const :tag "Comment starter." ?<) - (const :tag "Comment ender." ?>) - (const :tag "Character-quote." ?/) - (const :tag "Generic string fence." ?|) - (const :tag "Generic comment fence." ?!)) - (function :tag "Predicate function")) - :package-version '(company . "0.10.0")) - -(defcustom company-idle-delay .2 - "The idle delay in seconds until completion starts automatically. -The prefix still has to satisfy `company-minimum-prefix-length' before that -happens. The value of nil means no idle completion." - :type '(choice (const :tag "never (nil)" nil) - (const :tag "immediate (0)" 0) - (function :tag "Predicate function") - (number :tag "seconds"))) - -(defcustom company-tooltip-idle-delay .5 - "The idle delay in seconds until tooltip is shown when using -`company-pseudo-tooltip-unless-just-one-frontend-with-delay'." - :type '(choice (const :tag "never (nil)" nil) - (const :tag "immediate (0)" 0) - (number :tag "seconds"))) - -(defcustom company-begin-commands '(self-insert-command - org-self-insert-command - orgtbl-self-insert-command - c-scope-operator - c-electric-colon - c-electric-lt-gt - c-electric-slash) - "A list of commands after which idle completion is allowed. -If this is t, it can show completions after any command except a few from a -pre-defined list. See `company-idle-delay'. - -Alternatively, any command with a non-nil `company-begin' property is -treated as if it was on this list." - :type '(choice (const :tag "Any command" t) - (const :tag "Self insert command" (self-insert-command)) - (repeat :tag "Commands" function)) - :package-version '(company . "0.8.4")) - -(defcustom company-continue-commands '(not save-buffer save-some-buffers - save-buffers-kill-terminal - save-buffers-kill-emacs - completion-at-point) - "A list of commands that are allowed during completion. -If this is t, or if `company-begin-commands' is t, any command is allowed. -Otherwise, the value must be a list of symbols. If it starts with `not', -the cdr is the list of commands that abort completion. Otherwise, all -commands except those in that list, or in `company-begin-commands', or -commands in the `company-' namespace, abort completion." - :type '(choice (const :tag "Any command" t) - (cons :tag "Any except" - (const not) - (repeat :tag "Commands" function)) - (repeat :tag "Commands" function))) - -(defun company-custom--set-quick-access (option value) - "Re-bind quick-access key sequences on OPTION VALUE change." - ;; When upgrading from an earlier version of company, might not be. - (when (fboundp #'company-keymap--unbind-quick-access) - (when (boundp 'company-active-map) - (company-keymap--unbind-quick-access company-active-map)) - (when (boundp 'company-search-map) - (company-keymap--unbind-quick-access company-search-map))) - (custom-set-default option value) - (when (fboundp #'company-keymap--bind-quick-access) - (when (boundp 'company-active-map) - (company-keymap--bind-quick-access company-active-map)) - (when (boundp 'company-search-map) - (company-keymap--bind-quick-access company-search-map)))) - -(defcustom company-quick-access-keys '("1" "2" "3" "4" "5" "6" "7" "8" "9" "0") - "Character strings used as a part of quick-access key sequences. -To change this value without Customize interface, use `customize-set-variable'. - -To change the quick-access key sequences modifier, customize -`company-quick-access-modifier'. - -If `company-show-quick-access' is non-nil, show quick-access hints -beside the candidates." - :set #'company-custom--set-quick-access - :type '(choice - (const :tag "Digits" ("1" "2" "3" "4" "5" "6" "7" "8" "9" "0")) - (const :tag "QWERTY home row" ("a" "s" "d" "f" "g" "h" "j" "k" "l" ";")) - ;; TODO un-comment on removal of `M-n' `company--select-next-and-warn'. - ;; (const :tag "Dvorak home row" ("a" "o" "e" "u" "i" "d" "h" "t" "n" "s")) - (repeat :tag "User defined" string)) - :package-version '(company . "0.10.0")) - -(defcustom company-quick-access-modifier 'meta - "Modifier key used for quick-access keys sequences. -To change this value without Customize interface, use `customize-set-variable'. -See `company-quick-access-keys' for more details." - :set #'company-custom--set-quick-access - :type '(choice (const :tag "Meta key" meta) - (const :tag "Super key" super) - (const :tag "Hyper key" hyper) - (const :tag "Control key" control)) - :package-version '(company . "0.10.0")) - -(defun company-keymap--quick-access-modifier () - "Return string representation of the `company-quick-access-modifier'." - (if-let ((modifier (assoc-default company-quick-access-modifier - '((meta . "M") - (super . "s") - (hyper . "H") - (control . "C"))))) - modifier - (warn "company-quick-access-modifier value unknown: %S" - company-quick-access-modifier) - "M")) - -(defun company-keymap--unbind-quick-access (keymap) - (let ((modifier (company-keymap--quick-access-modifier))) - (dolist (key company-quick-access-keys) - (let ((key-seq (company-keymap--kbd-quick-access modifier key))) - (when (equal (lookup-key keymap key-seq) 'company-complete-quick-access) - (define-key keymap key-seq nil)))))) - -(defun company-keymap--bind-quick-access (keymap) - (let ((modifier (company-keymap--quick-access-modifier))) - (dolist (key company-quick-access-keys) - (let ((key-seq (company-keymap--kbd-quick-access modifier key))) - (if (lookup-key keymap key-seq) - (warn "Key sequence %s already bound" (key-description key-seq)) - (define-key keymap key-seq #'company-complete-quick-access)))))) - -(defun company-keymap--kbd-quick-access (modifier key) - (kbd (format "%s-%s" modifier key))) - -(define-obsolete-variable-alias - 'company-show-numbers - 'company-show-quick-access - "0.10.0") - -(defcustom company-show-quick-access nil - "If non-nil, show quick-access hints beside the candidates. - -For a tooltip frontend, non-nil value enables a column with the hints -on the right side of the tooltip, unless the configured value is `left'. - -To change the quick-access key bindings, customize `company-quick-access-keys' -and `company-quick-access-modifier'. - -To change the shown quick-access hints, customize -`company-quick-access-hint-function'." - :type '(choice (const :tag "off" nil) - (const :tag "left" left) - (const :tag "on" t))) - -(defcustom company-show-numbers-function nil - "Function called to get quick-access numbers for the first ten candidates. - -The function receives the candidate number (starting from 1) and should -return a string prefixed with one space." - :type 'function) -(make-obsolete-variable - 'company-show-numbers-function - "use `company-quick-access-hint-function' instead, -but adjust the expected values appropriately." - "0.10.0") - -(defcustom company-quick-access-hint-function #'company-quick-access-hint-key - "Function called to get quick-access hints for the candidates. - -The function receives a candidate's 0-based number -and should return a string. -See `company-show-quick-access' for more details." - :type 'function) - -(defun company-quick-access-hint-key (candidate) - "Return a quick-access key for the CANDIDATE number. -This is a default value of `company-quick-access-hint-function'." - (if company-show-numbers-function - (funcall company-show-numbers-function (1+ candidate)) - (format "%s" - (if (< candidate (length company-quick-access-keys)) - (nth candidate company-quick-access-keys) - "")))) - -(defcustom company-selection-wrap-around nil - "If enabled, selecting item before first or after last wraps around." - :type '(choice (const :tag "off" nil) - (const :tag "on" t))) - -(defcustom company-async-redisplay-delay 0.005 - "Delay before redisplay when fetching candidates asynchronously. - -You might want to set this to a higher value if your backends respond -quickly, to avoid redisplaying twice per each typed character." - :type 'number) - -(defvar company-async-wait 0.03 - "Pause between checks to see if the value's been set when turning an -asynchronous call into synchronous.") - -(defvar company-async-timeout 2 - "Maximum wait time for a value to be set during asynchronous call.") - -;;; mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar company-mode-map (make-sparse-keymap) - "Keymap used by `company-mode'.") - -(defvar company-active-map - (let ((keymap (make-sparse-keymap))) - (define-key keymap "\e\e\e" 'company-abort) - (define-key keymap "\C-g" 'company-abort) - (define-key keymap (kbd "M-n") 'company--select-next-and-warn) - (define-key keymap (kbd "M-p") 'company--select-previous-and-warn) - (define-key keymap (kbd "C-n") 'company-select-next-or-abort) - (define-key keymap (kbd "C-p") 'company-select-previous-or-abort) - (define-key keymap (kbd "<down>") 'company-select-next-or-abort) - (define-key keymap (kbd "<up>") 'company-select-previous-or-abort) - (define-key keymap [remap scroll-up-command] 'company-next-page) - (define-key keymap [remap scroll-down-command] 'company-previous-page) - (define-key keymap [down-mouse-1] 'ignore) - (define-key keymap [down-mouse-3] 'ignore) - (define-key keymap [mouse-1] 'company-complete-mouse) - (define-key keymap [mouse-3] 'company-select-mouse) - (define-key keymap [up-mouse-1] 'ignore) - (define-key keymap [up-mouse-3] 'ignore) - (define-key keymap [return] 'company-complete-selection) - (define-key keymap (kbd "RET") 'company-complete-selection) - (define-key keymap [tab] 'company-complete-common) - (define-key keymap (kbd "TAB") 'company-complete-common) - (define-key keymap (kbd "<f1>") 'company-show-doc-buffer) - (define-key keymap (kbd "C-h") 'company-show-doc-buffer) - (define-key keymap "\C-w" 'company-show-location) - (define-key keymap "\C-s" 'company-search-candidates) - (define-key keymap "\C-\M-s" 'company-filter-candidates) - (company-keymap--bind-quick-access keymap) - keymap) - "Keymap that is enabled during an active completion.") - -(defvar company--disabled-backends nil) - -(defun company--select-next-and-warn (&optional arg) - (interactive "p") - (company--warn-changed-binding) - (company-select-next arg)) - -(defun company--select-previous-and-warn (&optional arg) - (interactive "p") - (company--warn-changed-binding) - (company-select-previous arg)) - -(defun company--warn-changed-binding () - (interactive) - (run-with-idle-timer - 0.01 nil - (lambda () - (message "Warning: default bindings are being changed to C-n and C-p")))) - -(defun company-init-backend (backend) - (and (symbolp backend) - (not (fboundp backend)) - (ignore-errors (require backend nil t))) - (cond - ((symbolp backend) - (condition-case err - (progn - (funcall backend 'init) - (put backend 'company-init t)) - (error - (put backend 'company-init 'failed) - (unless (memq backend company--disabled-backends) - (message "Company backend '%s' could not be initialized:\n%s" - backend (error-message-string err))) - (cl-pushnew backend company--disabled-backends) - nil))) - ;; No initialization for lambdas. - ((functionp backend) t) - (t ;; Must be a list. - (cl-dolist (b backend) - (unless (keywordp b) - (company-init-backend b)))))) - -(defun company--maybe-init-backend (backend) - (or (not (symbolp backend)) - (eq t (get backend 'company-init)) - (unless (get backend 'company-init) - (company-init-backend backend)))) - -(defcustom company-lighter-base "company" - "Base string to use for the `company-mode' lighter." - :type 'string - :package-version '(company . "0.8.10")) - -(defvar company-lighter '(" " - (company-candidates - (:eval - (if (consp company-backend) - (when company-selection - (company--group-lighter (nth company-selection - company-candidates) - company-lighter-base)) - (symbol-name company-backend))) - company-lighter-base)) - "Mode line lighter for Company. - -The value of this variable is a mode line template as in -`mode-line-format'.") - -(put 'company-lighter 'risky-local-variable t) - -;;;###autoload -(define-minor-mode company-mode - "\"complete anything\"; is an in-buffer completion framework. -Completion starts automatically, depending on the values -`company-idle-delay' and `company-minimum-prefix-length'. - -Completion can be controlled with the commands: -`company-complete-common', `company-complete-selection', `company-complete', -`company-select-next', `company-select-previous'. If these commands are -called before `company-idle-delay', completion will also start. - -Completions can be searched with `company-search-candidates' or -`company-filter-candidates'. These can be used while completion is -inactive, as well. - -The completion data is retrieved using `company-backends' and displayed -using `company-frontends'. If you want to start a specific backend, call -it interactively or use `company-begin-backend'. - -By default, the completions list is sorted alphabetically, unless the -backend chooses otherwise, or `company-transformers' changes it later. - -regular keymap (`company-mode-map'): - -\\{company-mode-map} -keymap during active completions (`company-active-map'): - -\\{company-active-map}" - :lighter company-lighter - (if company-mode - (progn - (add-hook 'pre-command-hook 'company-pre-command nil t) - (add-hook 'post-command-hook 'company-post-command nil t) - (add-hook 'yas-keymap-disable-hook 'company--active-p nil t) - (mapc 'company-init-backend company-backends)) - (remove-hook 'pre-command-hook 'company-pre-command t) - (remove-hook 'post-command-hook 'company-post-command t) - (remove-hook 'yas-keymap-disable-hook 'company--active-p t) - (company-cancel) - (kill-local-variable 'company-point))) - -(defcustom company-global-modes t - "Modes for which `company-mode' mode is turned on by `global-company-mode'. -If nil, means no modes. If t, then all major modes have it turned on. -If a list, it should be a list of `major-mode' symbol names for which -`company-mode' should be automatically turned on. The sense of the list is -negated if it begins with `not'. For example: - (c-mode c++-mode) -means that `company-mode' is turned on for buffers in C and C++ modes only. - (not message-mode) -means that `company-mode' is always turned on except in `message-mode' buffers." - :type '(choice (const :tag "none" nil) - (const :tag "all" t) - (set :menu-tag "mode specific" :tag "modes" - :value (not) - (const :tag "Except" not) - (repeat :inline t (symbol :tag "mode"))))) - -;;;###autoload -(define-globalized-minor-mode global-company-mode company-mode company-mode-on) - -(defun company-mode-on () - (when (and (not (or noninteractive (eq (aref (buffer-name) 0) ?\s))) - (cond ((eq company-global-modes t) - t) - ((eq (car-safe company-global-modes) 'not) - (not (memq major-mode (cdr company-global-modes)))) - (t (memq major-mode company-global-modes)))) - (company-mode 1))) - -(defsubst company-assert-enabled () - (unless company-mode - (company-uninstall-map) - (user-error "Company not enabled"))) - -;;; keymaps ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-my-keymap nil) - -(defvar company-emulation-alist '((t . nil))) - -(defun company-enable-overriding-keymap (keymap) - (company-uninstall-map) - (setq company-my-keymap keymap)) - -(defun company-ensure-emulation-alist () - (unless (eq 'company-emulation-alist (car emulation-mode-map-alists)) - (setq emulation-mode-map-alists - (cons 'company-emulation-alist - (delq 'company-emulation-alist emulation-mode-map-alists))))) - -(defun company-install-map () - (unless (or (cdar company-emulation-alist) - (null company-my-keymap)) - (setf (cdar company-emulation-alist) company-my-keymap))) - -(defun company-uninstall-map () - (setf (cdar company-emulation-alist) nil)) - -(defun company--company-command-p (keys) - "Checks if the keys are part of company's overriding keymap" - (or (equal [company-dummy-event] keys) - (commandp (lookup-key company-my-keymap keys)))) - -;; To avoid warnings in Emacs < 26. -(declare-function line-number-display-width "indent.c") - -(defun company--posn-col-row (posn) - (let ((col (car (posn-col-row posn))) - ;; `posn-col-row' doesn't work well with lines of different height. - ;; `posn-actual-col-row' doesn't handle multiple-width characters. - (row (cdr (or (posn-actual-col-row posn) - ;; When position is non-visible for some reason. - (posn-col-row posn))))) - ;; posn-col-row return value relative to the left - (when (eq (current-bidi-paragraph-direction) 'right-to-left) - (let ((ww (window-body-width))) - (setq col (- ww col)))) - (when (bound-and-true-p display-line-numbers) - (cl-decf col (+ 2 (line-number-display-width)))) - (cons (+ col (window-hscroll)) row))) - -(defun company--col-row (&optional pos) - (company--posn-col-row (posn-at-point pos))) - -(defun company--row (&optional pos) - (cdr (company--col-row pos))) - -;;; backends ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-backend nil) - -(defun company-grab (regexp &optional expression limit) - (when (looking-back regexp limit) - (or (match-string-no-properties (or expression 0)) ""))) - -(defun company-grab-line (regexp &optional expression) - "Return a match string for REGEXP if it matches text before point. -If EXPRESSION is non-nil, return the match string for the respective -parenthesized expression in REGEXP. -Matching is limited to the current line." - (let ((inhibit-field-text-motion t)) - (company-grab regexp expression (line-beginning-position)))) - -(defun company-grab-symbol () - "If point is at the end of a symbol, return it. -Otherwise, if point is not inside a symbol, return an empty string." - (if (looking-at "\\_>") - (buffer-substring (point) (save-excursion (skip-syntax-backward "w_") - (point))) - (unless (and (char-after) (memq (char-syntax (char-after)) '(?w ?_))) - ""))) - -(defun company-grab-word () - "If point is at the end of a word, return it. -Otherwise, if point is not inside a symbol, return an empty string." - (if (looking-at "\\>") - (buffer-substring (point) (save-excursion (skip-syntax-backward "w") - (point))) - (unless (and (char-after) (eq (char-syntax (char-after)) ?w)) - ""))) - -(defun company-grab-symbol-cons (idle-begin-after-re &optional max-len) - "Return a string SYMBOL or a cons (SYMBOL . t). -SYMBOL is as returned by `company-grab-symbol'. If the text before point -matches IDLE-BEGIN-AFTER-RE, return it wrapped in a cons." - (let ((symbol (company-grab-symbol))) - (when symbol - (save-excursion - (forward-char (- (length symbol))) - (if (looking-back idle-begin-after-re (if max-len - (- (point) max-len) - (line-beginning-position))) - (cons symbol t) - symbol))))) - -(defun company-in-string-or-comment () - "Return non-nil if point is within a string or comment." - (let ((ppss (syntax-ppss))) - (or (car (setq ppss (nthcdr 3 ppss))) - (car (setq ppss (cdr ppss))) - (nth 3 ppss)))) - -(defun company-call-backend (&rest args) - (company--force-sync #'company-call-backend-raw args company-backend)) - -(defun company--force-sync (fun args backend) - (let ((value (apply fun args))) - (if (not (eq (car-safe value) :async)) - value - (let ((res 'trash) - (start (time-to-seconds))) - (funcall (cdr value) - (lambda (result) (setq res result))) - (while (eq res 'trash) - (if (> (- (time-to-seconds) start) company-async-timeout) - (error "Company: backend %s async timeout with args %s" - backend args) - ;; XXX: Reusing the trick from company--fetch-candidates here - ;; doesn't work well: sit-for isn't a good fit when we want to - ;; ignore pending input (results in too many calls). - ;; FIXME: We should deal with this by standardizing on a kind of - ;; Future object that knows how to sync itself. In most cases (but - ;; not all), by calling accept-process-output, probably. - (sleep-for company-async-wait))) - res)))) - -(defun company-call-backend-raw (&rest args) - (condition-case-unless-debug err - (if (functionp company-backend) - (apply company-backend args) - (apply #'company--multi-backend-adapter company-backend args)) - (user-error (user-error - "Company: backend %s user-error: %s" - company-backend (error-message-string err))) - (error (error "Company: backend %s error \"%s\" with args %s" - company-backend (error-message-string err) args)))) - -(defun company--multi-backend-adapter (backends command &rest args) - (let ((backends (cl-loop for b in backends - when (or (keywordp b) - (company--maybe-init-backend b)) - collect b)) - (separate (memq :separate backends))) - - (when (eq command 'prefix) - (setq backends (butlast backends (length (member :with backends))))) - - (setq backends (cl-delete-if #'keywordp backends)) - - (pcase command - (`candidates - (company--multi-backend-adapter-candidates backends (car args) separate)) - (`sorted separate) - (`duplicates (not separate)) - ((or `prefix `ignore-case `no-cache `require-match) - (let (value) - (cl-dolist (backend backends) - (when (setq value (company--force-sync - backend (cons command args) backend)) - (when (and (eq command 'ignore-case) - (eq value 'keep-prefix)) - (setq value t)) - (cl-return value))))) - (_ - (let ((arg (car args))) - (when (> (length arg) 0) - (let ((backend (or (get-text-property 0 'company-backend arg) - (car backends)))) - (apply backend command args)))))))) - -(defun company--multi-backend-adapter-candidates (backends prefix separate) - (let ((pairs (cl-loop for backend in backends - when (equal (company--prefix-str - (let ((company-backend backend)) - (company-call-backend 'prefix))) - prefix) - collect (cons (funcall backend 'candidates prefix) - (company--multi-candidates-mapper - backend - separate - ;; Small perf optimization: don't tag the - ;; candidates received from the first - ;; backend in the group. - (not (eq backend (car backends)))))))) - (company--merge-async pairs (lambda (values) (apply #'append values))))) - -(defun company--multi-candidates-mapper (backend separate tag) - (lambda (candidates) - (when separate - (let ((company-backend backend)) - (setq candidates - (company--preprocess-candidates candidates)))) - (when tag - (setq candidates - (mapcar - (lambda (str) - (propertize str 'company-backend backend)) - candidates))) - candidates)) - -(defun company--merge-async (pairs merger) - (let ((async (cl-loop for pair in pairs - thereis - (eq :async (car-safe (car pair)))))) - (if (not async) - (funcall merger (cl-loop for (val . mapper) in pairs - collect (funcall mapper val))) - (cons - :async - (lambda (callback) - (let* (lst - (pending (mapcar #'car pairs)) - (finisher (lambda () - (unless pending - (funcall callback - (funcall merger - (nreverse lst))))))) - (dolist (pair pairs) - (push nil lst) - (let* ((cell lst) - (val (car pair)) - (mapper (cdr pair)) - (this-finisher (lambda (res) - (setq pending (delq val pending)) - (setcar cell (funcall mapper res)) - (funcall finisher)))) - (if (not (eq :async (car-safe val))) - (funcall this-finisher val) - (let ((fetcher (cdr val))) - (funcall fetcher this-finisher))))))))))) - -(defun company--prefix-str (prefix) - (or (car-safe prefix) prefix)) - -;;; completion mechanism ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-prefix nil) - -(defvar-local company-candidates nil) - -(defvar-local company-candidates-length nil) - -(defvar-local company-candidates-cache nil) - -(defvar-local company-candidates-predicate nil) - -(defvar-local company-common nil) - -(defvar company-selection-default 0 - "The default value for `company-selection'.") -(defvar-local company-selection company-selection-default) - -(defvar-local company-selection-changed nil) - -(defvar-local company--manual-action nil - "Non-nil, if manual completion took place.") - -(defvar-local company--manual-prefix nil) - -(defvar-local company--point-max nil) - -(defvar-local company-point nil) - -(defvar company-timer nil) -(defvar company-tooltip-timer nil) - -(defsubst company-strip-prefix (str) - (substring str (length company-prefix))) - -(defun company--insert-candidate (candidate) - (when (> (length candidate) 0) - (setq candidate (substring-no-properties candidate)) - ;; XXX: Return value we check here is subject to change. - (if (eq (company-call-backend 'ignore-case) 'keep-prefix) - (insert (company-strip-prefix candidate)) - (unless (equal company-prefix candidate) - (delete-region (- (point) (length company-prefix)) (point)) - (insert candidate))))) - -(defmacro company-with-candidate-inserted (candidate &rest body) - "Evaluate BODY with CANDIDATE temporarily inserted. -This is a tool for backends that need candidates inserted before they -can retrieve meta-data for them." - (declare (indent 1)) - `(let ((inhibit-modification-hooks t) - (inhibit-point-motion-hooks t) - (modified-p (buffer-modified-p))) - (company--insert-candidate ,candidate) - (unwind-protect - (progn ,@body) - (delete-region company-point (point)) - (set-buffer-modified-p modified-p)))) - -(defun company-explicit-action-p () - "Return whether explicit completion action was taken by the user." - (or company--manual-action - company-selection-changed)) - -(defun company-reformat (candidate) - ;; company-ispell needs this, because the results are always lower-case - ;; It's mory efficient to fix it only when they are displayed. - ;; FIXME: Adopt the current text's capitalization instead? - (if (eq (company-call-backend 'ignore-case) 'keep-prefix) - (let ((prefix (company--clean-string company-prefix))) - (concat prefix (substring candidate (length prefix)))) - candidate)) - -(defun company--should-complete () - (and (eq company-idle-delay 'now) - (not (or buffer-read-only - overriding-local-map)) - ;; Check if in the middle of entering a key combination. - (or (equal (this-command-keys-vector) []) - (not (keymapp (key-binding (this-command-keys-vector))))) - (not (and transient-mark-mode mark-active)))) - -(defun company--should-continue () - (or (eq t company-begin-commands) - (eq t company-continue-commands) - (if (eq 'not (car company-continue-commands)) - (not (memq this-command (cdr company-continue-commands))) - (or (memq this-command company-begin-commands) - (memq this-command company-continue-commands) - (and (symbolp this-command) - (string-match-p "\\`company-" (symbol-name this-command))))))) - -(defvar company-auto-update-doc nil - "If non-nil, update the documentation buffer on each selection change. -To toggle the value of this variable, call `company-show-doc-buffer' with a -prefix argument.") - -(defun company-call-frontends (command) - (cl-loop for frontend in company-frontends collect - (condition-case-unless-debug err - (funcall frontend command) - (error (error "Company: frontend %s error \"%s\" on command %s" - frontend (error-message-string err) command))))) - -(defun company-set-selection (selection &optional force-update) - "Set SELECTION for company candidates. -This will update `company-selection' and related variable. -Only update when the current selection is changed, but optionally always -update if FORCE-UPDATE." - (when selection - (let* ((offset (if company-selection-default 0 1)) - (company-candidates-length - (+ company-candidates-length offset))) - (setq selection (+ selection offset)) - (setq selection - (if company-selection-wrap-around - (mod selection company-candidates-length) - (max 0 (min (1- company-candidates-length) selection)))) - (setq selection (unless (< selection offset) - (- selection offset))))) - (when (or force-update (not (equal selection company-selection))) - (setq company-selection selection - company-selection-changed t) - (company-call-frontends 'update))) - -(defun company--group-lighter (candidate base) - (let ((backend (or (get-text-property 0 'company-backend candidate) - (cl-some (lambda (x) (and (not (keywordp x)) x)) - company-backend)))) - (when (and backend (symbolp backend)) - (let ((name (replace-regexp-in-string "company-\\|-company" "" - (symbol-name backend)))) - (format "%s-<%s>" base name))))) - -(defun company-update-candidates (candidates) - (setq company-candidates-length (length candidates)) - (if company-selection-changed - ;; Try to restore the selection - (let ((selected (and company-selection - (nth company-selection company-candidates)))) - (setq company-candidates candidates) - (when selected - (setq company-selection 0) - (catch 'found - (while candidates - (let ((candidate (pop candidates))) - (when (and (string= candidate selected) - (equal (company-call-backend 'annotation candidate) - (company-call-backend 'annotation selected))) - (throw 'found t))) - (cl-incf company-selection)) - (setq company-selection company-selection-default - company-selection-changed nil)))) - (setq company-selection company-selection-default - company-candidates candidates)) - ;; Calculate common. - (let ((completion-ignore-case (company-call-backend 'ignore-case))) - ;; We want to support non-prefix completion, so filtering is the - ;; responsibility of each respective backend, not ours. - ;; On the other hand, we don't want to replace non-prefix input in - ;; `company-complete-common', unless there's only one candidate. - (setq company-common - (if (cdr company-candidates) - (let ((common (try-completion "" company-candidates))) - (when (string-prefix-p company-prefix common - completion-ignore-case) - common)) - (car company-candidates))))) - -(defun company-calculate-candidates (prefix ignore-case) - (let ((candidates (cdr (assoc prefix company-candidates-cache)))) - (or candidates - (when company-candidates-cache - (let ((len (length prefix)) - (completion-ignore-case ignore-case) - prev) - (cl-dotimes (i (1+ len)) - (when (setq prev (cdr (assoc (substring prefix 0 (- len i)) - company-candidates-cache))) - (setq candidates (all-completions prefix prev)) - (cl-return t))))) - ;; No cache match, call the backend. - (let ((refresh-timer (run-with-timer company-async-redisplay-delay - nil #'company--sneaky-refresh))) - (setq candidates (company--preprocess-candidates - (company--fetch-candidates prefix))) - ;; If the backend is synchronous, no chance for the timer to run. - (cancel-timer refresh-timer) - ;; Save in cache. - (push (cons prefix candidates) company-candidates-cache))) - ;; Only now apply the predicate and transformers. - (company--postprocess-candidates candidates))) - -(defun company--unique-match-p (candidates prefix ignore-case) - (and candidates - (not (cdr candidates)) - (eq t (compare-strings (car candidates) nil nil - prefix nil nil ignore-case)) - (not (eq (company-call-backend 'kind (car candidates)) - 'snippet)))) - -(defun company--fetch-candidates (prefix) - (let* ((non-essential (not (company-explicit-action-p))) - (inhibit-redisplay t) - (c (if (or company-selection-changed - ;; FIXME: This is not ideal, but we have not managed to deal - ;; with these situations in a better way yet. - (company-require-match-p)) - (company-call-backend 'candidates prefix) - (company-call-backend-raw 'candidates prefix)))) - (if (not (eq (car c) :async)) - c - (let ((res 'none)) - (funcall - (cdr c) - (lambda (candidates) - (when (eq res 'none) - (push 'company-foo unread-command-events)) - (setq res candidates))) - (if (company--flyspell-workaround-p) - (while (and (eq res 'none) - (not (input-pending-p))) - (sleep-for company-async-wait)) - (while (and (eq res 'none) - (sit-for 0.5 t)))) - (while (member (car unread-command-events) - '(company-foo (t . company-foo))) - (pop unread-command-events)) - (prog1 - (and (consp res) res) - (setq res 'exited)))))) - -(defun company--sneaky-refresh () - (when company-candidates (company-call-frontends 'unhide)) - (let (inhibit-redisplay) - (redisplay)) - (when company-candidates (company-call-frontends 'pre-command))) - -(defun company--flyspell-workaround-p () - ;; https://debbugs.gnu.org/23980 - (and (bound-and-true-p flyspell-mode) - (version< emacs-version "27"))) - -(defun company--preprocess-candidates (candidates) - (cl-assert (cl-every #'stringp candidates)) - (unless (company-call-backend 'sorted) - (setq candidates (sort candidates 'string<))) - (when (company-call-backend 'duplicates) - (company--strip-duplicates candidates)) - candidates) - -(defun company--postprocess-candidates (candidates) - (when (or company-candidates-predicate company-transformers) - (setq candidates (copy-sequence candidates))) - (when company-candidates-predicate - (setq candidates (cl-delete-if-not company-candidates-predicate candidates))) - (company--transform-candidates candidates)) - -(defun company--strip-duplicates (candidates) - (let ((c2 candidates) - (extras 'unk)) - (while c2 - (setcdr c2 - (let ((str (pop c2))) - (while (let ((str2 (car c2))) - (if (not (equal str str2)) - (progn - (setq extras 'unk) - nil) - (when (eq extras 'unk) - (setq extras (list (cons (company-call-backend - 'annotation str) - (company-call-backend - 'kind str))))) - (let ((extra2 (cons (company-call-backend - 'annotation str2) - (company-call-backend - 'kind str2)))) - (if (member extra2 extras) - t - (push extra2 extras) - nil)))) - (pop c2)) - c2))))) - -(defun company--transform-candidates (candidates) - (let ((c candidates)) - (dolist (tr company-transformers) - (setq c (funcall tr c))) - c)) - -(defcustom company-occurrence-weight-function - #'company-occurrence-prefer-closest-above - "Function to weigh matches in `company-sort-by-occurrence'. -It's called with three arguments: cursor position, the beginning and the -end of the match." - :type '(choice - (const :tag "First above point, then below point" - company-occurrence-prefer-closest-above) - (const :tag "Prefer closest in any direction" - company-occurrence-prefer-any-closest))) - -(defvar company-vscode-icons-mapping - '((array . "symbol-array.svg") - (boolean . "symbol-boolean.svg") - (class . "symbol-class.svg") - (color . "symbol-color.svg") - (constant . "symbol-constant.svg") - (constructor . "symbol-method.svg") - (enum-member . "symbol-enumerator-member.svg") - (enum . "symbol-enumerator.svg") - (event . "symbol-event.svg") - (field . "symbol-field.svg") - (file . "symbol-file.svg") - (folder . "folder.svg") - (interface . "symbol-interface.svg") - (keyword . "symbol-keyword.svg") - (method . "symbol-method.svg") - (function . "symbol-method.svg") - (module . "symbol-namespace.svg") - (numeric . "symbol-numeric.svg") - (operator . "symbol-operator.svg") - (property . "symbol-property.svg") - (reference . "references.svg") - (snippet . "symbol-snippet.svg") - (string . "symbol-string.svg") - (struct . "symbol-structure.svg") - (text . "symbol-key.svg") - (type-parameter . "symbol-parameter.svg") - (unit . "symbol-ruler.svg") - (value . "symbol-enumerator.svg") - (variable . "symbol-variable.svg") - (t . "symbol-misc.svg"))) - -(defconst company-icons-root - (file-name-as-directory - (expand-file-name "icons" - (file-name-directory (or load-file-name buffer-file-name))))) - -(defcustom company-icon-size '(auto-scale . 16) - "Size of icons indicating completion kind in the popup." - :type '(choice (integer :tag "Size in pixels" :value 16) - (cons :tag "Size in pixels, scaled 2x on HiDPI screens" - (const auto-scale) - (integer :value 16)))) - -(defcustom company-icon-margin 2 - "Width of the margin that shows the icons, in characters." - :type 'integer) - -(defun company--render-icons-margin (icon-mapping root-dir candidate selected) - (if-let ((ws (window-system)) - (candidate candidate) - (kind (company-call-backend 'kind candidate)) - (icon-file (or (alist-get kind icon-mapping) - (alist-get t icon-mapping)))) - (let* ((bkg (face-attribute (if selected - 'company-tooltip-selection - 'company-tooltip) - :background)) - (dfw (default-font-width)) - (icon-size (cond - ((integerp company-icon-size) - company-icon-size) - ;; XXX: Also consider smooth scaling, e.g. using - ;; (aref (font-info (face-font 'default)) 2) - ((and (consp company-icon-size) - (eq 'auto-scale (car company-icon-size))) - (let ((base-size (cdr company-icon-size)) - (dfh (default-font-height))) - (min - (if (>= dfh (* 2 base-size)) - (* 2 base-size) - base-size) - (* company-icon-margin dfw)))))) - (spec (list 'image - :file (expand-file-name icon-file root-dir) - :type 'svg - :width icon-size - :height icon-size - :ascent 'center - :background (unless (eq bkg 'unspecified) - bkg))) - (spacer-px-width (- (* company-icon-margin dfw) icon-size))) - (cond - ((<= company-icon-margin 2) - (concat - (propertize " " 'display spec) - (propertize (company-space-string (1- company-icon-margin)) - 'display `(space . (:width (,spacer-px-width)))))) - (t - (let* ((spacer-left (/ spacer-px-width 2)) - (spacer-right (- spacer-px-width spacer-left))) - (concat - (propertize (company-space-string 1) - 'display `(space . (:width (,spacer-left)))) - (propertize " " 'display spec) - (propertize (company-space-string (- company-icon-margin 2)) - 'display `(space . (:width (,spacer-right))))))))) - nil)) - -(defun company-vscode-dark-icons-margin (candidate selected) - "Margin function which returns icons from vscode's dark theme." - (company--render-icons-margin company-vscode-icons-mapping - (expand-file-name "vscode-dark" company-icons-root) - candidate - selected)) - -(defun company-vscode-light-icons-margin (candidate selected) - "Margin function which returns icons from vscode's light theme." - (company--render-icons-margin company-vscode-icons-mapping - (expand-file-name "vscode-light" company-icons-root) - candidate - selected)) - -(defcustom company-text-icons-mapping - '((array "a" font-lock-type-face) - (boolean "b" font-lock-builtin-face) - (class "c" font-lock-type-face) - (color "#" success) - (constant "c" font-lock-constant-face) - (constructor "c" font-lock-function-name-face) - (enum-member "e" font-lock-builtin-face) - (enum "e" font-lock-builtin-face) - (field "f" font-lock-variable-name-face) - (file "f" font-lock-string-face) - (folder "d" font-lock-doc-face) - (interface "i" font-lock-type-face) - (keyword "k" font-lock-keyword-face) - (method "m" font-lock-function-name-face) - (function "f" font-lock-function-name-face) - (module "{" font-lock-type-face) - (numeric "n" font-lock-builtin-face) - (operator "o" font-lock-comment-delimiter-face) - (property "p" font-lock-variable-name-face) - (reference "r" font-lock-doc-face) - (snippet "S" font-lock-string-face) - (string "s" font-lock-string-face) - (struct "%" font-lock-variable-name-face) - (text "w" shadow) - (type-parameter "p" font-lock-type-face) - (unit "u" shadow) - (value "v" font-lock-builtin-face) - (variable "v" font-lock-variable-name-face) - (t "." shadow)) - "Mapping of the text icons. -The format should be an alist of (KIND . CONF) where CONF is a list of the -form (ICON FG BG) which is used to propertize the icon to be shown for a -candidate of kind KIND. FG can either be color string or a face from which -we can get a color string (using the :foreground face-property). BG must be -of the same form as FG or a cons cell of (BG . BG-WHEN-SELECTED) which each -should be of the same form as FG. - -The only mandatory element in CONF is ICON, you can omit both the FG and BG -fields without issue. - -When BG is omitted and `company-text-icons-add-background' is non-nil, a BG -color is generated using a gradient between the active tooltip color and -the FG color." - :type '(repeat sexp)) - -(defcustom company-text-face-extra-attributes '(:weight bold) - "Additional attributes to add to text/dot icons faces. -If non-nil, an anonymous face is generated. - -Affects `company-text-icons-margin' and `company-dot-icons-margin'." - :type '(plist :tag "Face property list")) - -(defcustom company-text-icons-format " %s " - "Format string for printing the text icons." - :type 'string) - -(defcustom company-text-icons-add-background nil - "Generate a background color for text/dot icons when none is given. -See `company-text-icons-mapping'." - :type 'boolean) - -(defun company-text-icons-margin (candidate selected) - "Margin function which returns unicode icons." - (when-let ((candidate candidate) - (kind (company-call-backend 'kind candidate)) - (conf (or (alist-get kind company-text-icons-mapping) - (alist-get t company-text-icons-mapping)))) - (cl-destructuring-bind (icon &optional fg bg) conf - (propertize - (format company-text-icons-format icon) - 'face - (company-text-icons--face fg bg selected))))) - -(declare-function color-rgb-to-hex "color") -(declare-function color-gradient "color") - -(defun company-text-icons--extract-property (face property) - "Try to extract PROPERTY from FACE. -If FACE isn't a valid face return FACE as is. If FACE doesn't have -PROPERTY return nil." - (if (facep face) - (let ((value (face-attribute face property))) - (unless (eq value 'unspecified) - value)) - face)) - -(defun company-text-icons--face (fg bg selected) - (let ((fg-color (company-text-icons--extract-property fg :foreground))) - `(,@company-text-face-extra-attributes - ,@(and fg-color - (list :foreground fg-color)) - ,@(let* ((bg-is-cons (consp bg)) - (bg (if bg-is-cons (if selected (cdr bg) (car bg)) bg)) - (bg-color (company-text-icons--extract-property bg :background)) - (tooltip-bg-color (company-text-icons--extract-property - (if selected - 'company-tooltip-selection - 'company-tooltip) - :background))) - (cond - ((and company-text-icons-add-background selected - (not bg-is-cons) bg-color tooltip-bg-color) - ;; Adjust the coloring of the background when *selected* but user hasn't - ;; specified an alternate background color for selected item icons. - (list :background - (apply #'color-rgb-to-hex - (nth 0 (color-gradient (color-name-to-rgb tooltip-bg-color) - (color-name-to-rgb bg-color) - 2))))) - (bg - ;; When background is configured we use it as is, even if it doesn't - ;; constrast well with other candidates when selected. - (and bg-color - (list :background bg-color))) - ((and company-text-icons-add-background fg-color tooltip-bg-color) - ;; Lastly attempt to generate a background from the foreground. - (list :background - (apply #'color-rgb-to-hex - (nth 0 (color-gradient (color-name-to-rgb tooltip-bg-color) - (color-name-to-rgb fg-color) - 10)))))))))) - -(defcustom company-dot-icons-format "● " - "Format string for `company-dot-icons-margin'." - :type 'string) - -(defun company-dot-icons-margin (candidate selected) - "Margin function that uses a colored dot to display completion kind." - (when-let ((kind (company-call-backend 'kind candidate)) - (conf (or (assoc-default kind company-text-icons-mapping) - (assoc-default t company-text-icons-mapping)))) - (cl-destructuring-bind (_icon &optional fg bg) conf - (propertize company-dot-icons-format - 'face - (company-text-icons--face fg bg selected))))) - -(defun company-detect-icons-margin (candidate selected) - "Margin function which picks the appropriate icon set automatically." - (if (and (display-graphic-p) - (image-type-available-p 'svg)) - (cl-case (frame-parameter nil 'background-mode) - (light (company-vscode-light-icons-margin candidate selected)) - (t (company-vscode-dark-icons-margin candidate selected))) - (company-text-icons-margin candidate selected))) - -(defcustom company-format-margin-function #'company-detect-icons-margin - "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 "Detect icons theme base on conditions" company-detect-icons-margin) - (const :tag "Text characters as icons" company-text-icons-margin) - (const :tag "Colored dots as icons" company-dot-icons-margin) - (const :tag "VScode dark icons theme" company-vscode-dark-icons-margin) - (const :tag "VScode light icons theme" company-vscode-light-icons-margin) - (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) - (- pos match-end) - (- match-beg (window-start)))) - -(defun company-occurrence-prefer-any-closest (pos _match-beg match-end) - "Give priority to the matches closest to the point." - (abs (- pos match-end))) - -(defun company-sort-by-occurrence (candidates) - "Sort CANDIDATES according to their occurrences. -Searches for each in the currently visible part of the current buffer and -prioritizes the matches according to `company-occurrence-weight-function'. -The rest of the list is appended unchanged. -Keywords and function definition names are ignored." - (let* ((w-start (window-start)) - (w-end (window-end)) - (start-point (point)) - occurs - (noccurs - (save-excursion - (cl-delete-if - (lambda (candidate) - (goto-char w-start) - (when (and (not (equal candidate "")) - (search-forward candidate w-end t) - ;; ^^^ optimize for large lists where most elements - ;; won't have a match. - (catch 'done - (goto-char (1- start-point)) - (while (search-backward candidate w-start t) - (when (save-match-data - (company--occurrence-predicate)) - (throw 'done t))) - (goto-char start-point) - (while (search-forward candidate w-end t) - (when (save-match-data - (company--occurrence-predicate)) - (throw 'done t))))) - (push - (cons candidate - (funcall company-occurrence-weight-function - start-point - (match-beginning 0) - (match-end 0))) - occurs) - t)) - candidates)))) - (nconc - (mapcar #'car (sort occurs (lambda (e1 e2) (<= (cdr e1) (cdr e2))))) - noccurs))) - -(defun company--occurrence-predicate () - (defvar comint-last-prompt) - (let ((beg (match-beginning 0)) - (end (match-end 0)) - (comint-last-prompt (bound-and-true-p comint-last-prompt))) - (save-excursion - (goto-char end) - ;; Workaround for python-shell-completion-at-point's behavior: - ;; https://github.com/company-mode/company-mode/issues/759 - ;; https://github.com/company-mode/company-mode/issues/549 - (when (derived-mode-p 'inferior-python-mode) - (let ((lbp (line-beginning-position))) - (setq comint-last-prompt (cons lbp lbp)))) - (and (not (memq (get-text-property (1- (point)) 'face) - '(font-lock-function-name-face - font-lock-keyword-face))) - (let ((prefix (company--prefix-str - (company-call-backend 'prefix)))) - (and (stringp prefix) - (= (length prefix) (- end beg)))))))) - -(defun company-sort-by-backend-importance (candidates) - "Sort CANDIDATES as two priority groups. -If `company-backend' is a function, do nothing. If it's a list, move -candidates from backends before keyword `:with' to the front. Candidates -from the rest of the backends in the group, if any, will be left at the end." - (if (functionp company-backend) - candidates - (let ((low-priority (cdr (memq :with company-backend)))) - (if (null low-priority) - candidates - (sort candidates - (lambda (c1 c2) - (and - (let ((b2 (get-text-property 0 'company-backend c2))) - (and b2 (memq b2 low-priority))) - (let ((b1 (get-text-property 0 'company-backend c1))) - (or (not b1) (not (memq b1 low-priority))))))))))) - -(defun company-sort-prefer-same-case-prefix (candidates) - "Prefer CANDIDATES with the exact same prefix. -If a backend returns case insensitive matches, candidates with the an exact -prefix match (same case) will be prioritized." - (cl-loop for candidate in candidates - if (string-prefix-p company-prefix candidate) - collect candidate into same-case - else collect candidate into other-case - finally return (append same-case other-case))) - -(defun company-idle-begin (buf win tick pos) - (and (eq buf (current-buffer)) - (eq win (selected-window)) - (eq tick (buffer-chars-modified-tick)) - (eq pos (point)) - (let ((non-essential t)) - (when (company-auto-begin) - (let ((this-command 'company-idle-begin)) - (company-post-command)))))) - -(defun company-auto-begin () - (and company-mode - (not company-candidates) - (let ((company-idle-delay 'now)) - (condition-case-unless-debug err - (let ((inhibit-quit nil)) - (company--perform) - ;; Return non-nil if active. - company-candidates) - (error (message "Company: An error occurred in auto-begin") - (message "%s" (error-message-string err)) - (company-cancel)) - (quit (company-cancel)))))) - -;;;###autoload -(defun company-manual-begin () - (interactive) - (company-assert-enabled) - (setq company--manual-action t) - (unwind-protect - (let ((company-minimum-prefix-length 0)) - (or company-candidates - (company-auto-begin))) - (unless company-candidates - (setq company--manual-action nil)))) - -(defun company-other-backend (&optional backward) - (interactive (list current-prefix-arg)) - (company-assert-enabled) - (let* ((after (if company-backend - (cdr (member company-backend company-backends)) - company-backends)) - (before (cdr (member company-backend (reverse company-backends)))) - (next (if backward - (append before (reverse after)) - (append after (reverse before))))) - (company-cancel) - (cl-dolist (backend next) - (when (ignore-errors (company-begin-backend backend)) - (cl-return t)))) - (unless company-candidates - (user-error "No other backend"))) - -(defun company-require-match-p () - (let ((backend-value (company-call-backend 'require-match))) - (or (eq backend-value t) - (and (not (eq backend-value 'never)) - (if (functionp company-require-match) - (funcall company-require-match) - (eq company-require-match t)))))) - -(defun company-insertion-on-trigger-p (input) - "Return non-nil if INPUT should trigger insertion. -For more details see `company-insertion-on-trigger' and -`company-insertion-triggers'." - (and (if (functionp company-insertion-on-trigger) - (funcall company-insertion-on-trigger) - company-insertion-on-trigger) - (if (functionp company-insertion-triggers) - (funcall company-insertion-triggers input) - (if (consp company-insertion-triggers) - (memq (char-syntax (string-to-char input)) - company-insertion-triggers) - (string-match (regexp-quote (substring input 0 1)) - company-insertion-triggers))))) - -(defun company--incremental-p () - (and (> (point) company-point) - (> (point-max) company--point-max) - (not (eq this-command 'backward-delete-char-untabify)) - (equal (buffer-substring (- company-point (length company-prefix)) - company-point) - company-prefix))) - -(defun company--continue-failed (new-prefix) - (cond - ((and (or (not (company-require-match-p)) - ;; Don't require match if the new prefix - ;; doesn't continue the old one, and the latter was a match. - (not (stringp new-prefix)) - (<= (length new-prefix) (length company-prefix))) - (member company-prefix company-candidates)) - ;; Last input was a success, - ;; but we're treating it as an abort + input anyway, - ;; like the `unique' case below. - (company-cancel 'non-unique)) - ((company-require-match-p) - ;; Wrong incremental input, but required match. - (delete-char (- company-point (point))) - (ding) - (message "Matching input is required") - company-candidates) - (t (company-cancel)))) - -(defun company--good-prefix-p (prefix) - (and (stringp (company--prefix-str prefix)) ;excludes 'stop - (or (eq (cdr-safe prefix) t) - (let ((len (or (cdr-safe prefix) (length prefix)))) - (if company--manual-prefix - (or (not company-abort-manual-when-too-short) - ;; Must not be less than minimum or initial length. - (>= len (min company-minimum-prefix-length - (length company--manual-prefix)))) - (>= len company-minimum-prefix-length)))))) - -(defun company--continue () - (when (company-call-backend 'no-cache company-prefix) - ;; Don't complete existing candidates, fetch new ones. - (setq company-candidates-cache nil)) - (let* ((new-prefix (company-call-backend 'prefix)) - (ignore-case (company-call-backend 'ignore-case)) - (c (when (and (company--good-prefix-p new-prefix) - (setq new-prefix (company--prefix-str new-prefix)) - (= (- (point) (length new-prefix)) - (- company-point (length company-prefix)))) - (company-calculate-candidates new-prefix ignore-case)))) - (cond - ((and company-abort-on-unique-match - (company--unique-match-p c new-prefix ignore-case)) - ;; Handle it like completion was aborted, to differentiate from user - ;; calling one of Company's commands to insert the candidate, - ;; not to trigger template expansion, etc. - (company-cancel 'unique)) - ((consp c) - ;; incremental match - (setq company-prefix new-prefix) - (company-update-candidates c) - c) - ((and (characterp last-command-event) - (company-insertion-on-trigger-p (string last-command-event))) - ;; Insertion on trigger. - (save-excursion - (goto-char company-point) - (company-complete-selection) - nil)) - ((not (company--incremental-p)) - (company-cancel)) - (t (company--continue-failed new-prefix))))) - -(defun company--begin-new () - (let (prefix c) - (cl-dolist (backend (if company-backend - ;; prefer manual override - (list company-backend) - company-backends)) - (setq prefix - (if (or (symbolp backend) - (functionp backend)) - (when (company--maybe-init-backend backend) - (let ((company-backend backend)) - (company-call-backend 'prefix))) - (company--multi-backend-adapter backend 'prefix))) - (when prefix - (when (company--good-prefix-p prefix) - (let ((ignore-case (company-call-backend 'ignore-case))) - (setq company-prefix (company--prefix-str prefix) - company-backend backend - c (company-calculate-candidates company-prefix ignore-case)) - (cond - ((and company-abort-on-unique-match - (company--unique-match-p c company-prefix ignore-case) - (if company--manual-action - ;; If `company-manual-begin' was called, the user - ;; really wants something to happen. Otherwise... - (ignore (message "Sole completion")) - t)) - ;; ...abort and run the hooks, e.g. to clear the cache. - (company-cancel 'unique)) - ((null c) - (when company--manual-action - (message "No completion found"))) - (t ;; We got completions! - (when company--manual-action - (setq company--manual-prefix prefix)) - (company-update-candidates c) - (run-hook-with-args 'company-completion-started-hook - (company-explicit-action-p)) - (company-call-frontends 'show))))) - (cl-return c))))) - -(defun company--perform () - (cond - (company-candidates - (company--continue)) - ((company--should-complete) - (company--begin-new))) - (if (not company-candidates) - (setq company-backend nil) - (setq company-point (point) - company--point-max (point-max)) - (company-ensure-emulation-alist) - (company-enable-overriding-keymap company-active-map) - (company-call-frontends 'update))) - -(defun company-cancel (&optional result) - (let ((prefix company-prefix) - (backend company-backend)) - (setq company-backend nil - company-prefix nil - company-candidates nil - company-candidates-length nil - company-candidates-cache nil - company-candidates-predicate nil - company-common nil - company-selection company-selection-default - company-selection-changed nil - company--manual-action nil - company--manual-prefix nil - company--point-max nil - company-point nil) - (when company-timer - (cancel-timer company-timer)) - (company-echo-cancel t) - (company-search-mode 0) - (company-call-frontends 'hide) - (company-enable-overriding-keymap nil) - (when prefix - (if (stringp result) - (let ((company-backend backend)) - (run-hook-with-args 'company-completion-finished-hook result) - (company-call-backend 'post-completion result)) - (run-hook-with-args 'company-completion-cancelled-hook result)) - (run-hook-with-args 'company-after-completion-hook result))) - ;; Make return value explicit. - nil) - -(defun company-abort () - (interactive) - (company-cancel 'abort)) - -(defun company-finish (result) - (company--insert-candidate result) - (company-cancel result)) - -(defsubst company-keep (command) - (and (symbolp command) (get command 'company-keep))) - -(defun company--active-p () - company-candidates) - -(defun company-pre-command () - (company--electric-restore-window-configuration) - (unless (company-keep this-command) - (condition-case-unless-debug err - (when company-candidates - (company-call-frontends 'pre-command) - (unless (company--should-continue) - (company-abort))) - (error (message "Company: An error occurred in pre-command") - (message "%s" (error-message-string err)) - (company-cancel)))) - (when company-timer - (cancel-timer company-timer) - (setq company-timer nil)) - (company-echo-cancel t) - (company-uninstall-map)) - -(defun company-post-command () - (when (and company-candidates - (null this-command)) - ;; Happens when the user presses `C-g' while inside - ;; `flyspell-post-command-hook', for example. - ;; Or any other `post-command-hook' function that can call `sit-for', - ;; or any quittable timer function. - (company-abort) - (setq this-command 'company-abort)) - (unless (company-keep this-command) - (condition-case-unless-debug err - (progn - (unless (equal (point) company-point) - (let (company-idle-delay) ; Against misbehavior while debugging. - (company--perform))) - (if company-candidates - (progn - (company-call-frontends 'post-command) - (when company-auto-update-doc - (condition-case nil - (unless (company--electric-command-p) - (company-show-doc-buffer)) - (user-error nil) - (quit nil)))) - (let ((delay (company--idle-delay))) - (and (numberp delay) - (not defining-kbd-macro) - (company--should-begin) - (setq company-timer - (run-with-timer delay nil - 'company-idle-begin - (current-buffer) (selected-window) - (buffer-chars-modified-tick) (point))))))) - (error (message "Company: An error occurred in post-command") - (message "%s" (error-message-string err)) - (company-cancel)))) - (company-install-map)) - -(defun company--idle-delay () - (let ((delay - (if (functionp company-idle-delay) - (funcall company-idle-delay) - company-idle-delay))) - (if (memql delay '(t 0 0.0)) - 0.01 - delay))) - -(defvar company--begin-inhibit-commands '(company-abort - company-complete-mouse - company-complete - company-complete-common - company-complete-selection - company-complete-tooltip-row) - "List of commands after which idle completion is (still) disabled when -`company-begin-commands' is t.") - -(defun company--should-begin () - (if (eq t company-begin-commands) - (not (memq this-command company--begin-inhibit-commands)) - (or - (memq this-command company-begin-commands) - (and (symbolp this-command) (get this-command 'company-begin))))) - -;;; search ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defcustom company-search-regexp-function #'regexp-quote - "Function to construct the search regexp from input. -It's called with one argument, the current search input. It must return -either a regexp without groups, or one where groups don't intersect and -each one wraps a part of the input string." - :type '(choice - (const :tag "Exact match" regexp-quote) - (const :tag "Words separated with spaces" company-search-words-regexp) - (const :tag "Words separated with spaces, in any order" - company-search-words-in-any-order-regexp) - (const :tag "All characters in given order, with anything in between" - company-search-flex-regexp))) - -(defvar-local company-search-string "") - -(defvar company-search-lighter '(" " - (company-search-filtering "Filter" "Search") - ": \"" - company-search-string - "\"")) - -(defvar-local company-search-filtering nil - "Non-nil to filter the completion candidates by the search string") - -(defvar-local company--search-old-selection 0) - -(defvar-local company--search-old-changed nil) - -(defun company-search-words-regexp (input) - (mapconcat (lambda (word) (format "\\(%s\\)" (regexp-quote word))) - (split-string input " +" t) ".*")) - -(defun company-search-words-in-any-order-regexp (input) - (let* ((words (mapcar (lambda (word) (format "\\(%s\\)" (regexp-quote word))) - (split-string input " +" t))) - (permutations (company--permutations words))) - (mapconcat (lambda (words) - (mapconcat #'identity words ".*")) - permutations - "\\|"))) - -(defun company-search-flex-regexp (input) - (if (zerop (length input)) - "" - (concat (regexp-quote (string (aref input 0))) - (mapconcat (lambda (c) - (concat "[^" (string c) "]*" - (regexp-quote (string c)))) - (substring input 1) "")))) - -(defun company--permutations (lst) - (if (not lst) - '(nil) - ;; FIXME: Replace with `mapcan' in Emacs 26. - (cl-mapcan - (lambda (e) - (mapcar (lambda (perm) (cons e perm)) - (company--permutations (cl-remove e lst :count 1)))) - lst))) - -(defun company--search (text lines) - (let ((re (funcall company-search-regexp-function text)) - (i 0)) - (cl-dolist (line lines) - (when (string-match-p re line) - (cl-return i)) - (cl-incf i)))) - -(defun company-search-printing-char () - (interactive) - (company--search-assert-enabled) - (let* ((event-type (event-basic-type last-command-event)) - (event-string (if (characterp event-type) - (string last-command-event) - ;; Handle key press on the keypad. - (let ((name (symbol-name event-type))) - (if (string-match "kp-\\([0-9]\\)" name) - (match-string 1 name) - (error "Unexpected printing char input"))))) - (ss (concat company-search-string event-string))) - (when company-search-filtering - (company--search-update-predicate ss)) - (company--search-update-string ss))) - -(defun company--search-update-predicate (ss) - (let* ((re (funcall company-search-regexp-function ss)) - (company-candidates-predicate - (and (not (string= re "")) - company-search-filtering - (lambda (candidate) (string-match re candidate)))) - (cc (company-calculate-candidates company-prefix - (company-call-backend 'ignore-case)))) - (unless cc (user-error "No match")) - (company-update-candidates cc))) - -(defun company--search-update-string (new) - (let* ((selection (or company-selection 0)) - (pos (company--search new (nthcdr selection company-candidates)))) - (if (null pos) - (ding) - (setq company-search-string new) - (company-set-selection (+ selection pos) t)))) - -(defun company--search-assert-input () - (company--search-assert-enabled) - (when (string= company-search-string "") - (user-error "Empty search string"))) - -(defun company-search-repeat-forward () - "Repeat the incremental search in completion candidates forward." - (interactive) - (company--search-assert-input) - (let* ((selection (or company-selection 0)) - (pos (company--search company-search-string - (cdr (nthcdr selection company-candidates))))) - (if (null pos) - (ding) - (company-set-selection (+ selection pos 1) t)))) - -(defun company-search-repeat-backward () - "Repeat the incremental search in completion candidates backwards." - (interactive) - (company--search-assert-input) - (let* ((selection (or company-selection 0)) - (pos (company--search company-search-string - (nthcdr (- company-candidates-length - selection) - (reverse company-candidates))))) - (if (null pos) - (ding) - (company-set-selection (- selection pos 1) t)))) - -(defun company-search-toggle-filtering () - "Toggle `company-search-filtering'." - (interactive) - (company--search-assert-enabled) - (setq company-search-filtering (not company-search-filtering)) - (let ((ss company-search-string)) - (company--search-update-predicate ss) - (company--search-update-string ss))) - -(defun company-search-abort () - "Abort searching the completion candidates." - (interactive) - (company--search-assert-enabled) - (company-search-mode 0) - (company-set-selection company--search-old-selection t) - (setq company-selection-changed company--search-old-changed)) - -(defun company-search-other-char () - (interactive) - (company--search-assert-enabled) - (company-search-mode 0) - (company--unread-this-command-keys)) - -(defun company-search-delete-char () - (interactive) - (company--search-assert-enabled) - (if (string= company-search-string "") - (ding) - (let ((ss (substring company-search-string 0 -1))) - (when company-search-filtering - (company--search-update-predicate ss)) - (company--search-update-string ss)))) - -(defvar company-search-map - (let ((i 0) - (keymap (make-keymap))) - (if (fboundp 'max-char) - (set-char-table-range (nth 1 keymap) (cons #x100 (max-char)) - 'company-search-printing-char) - (with-no-warnings - ;; obsolete in Emacs 23 - (let ((l (generic-character-list)) - (table (nth 1 keymap))) - (while l - (set-char-table-default table (car l) 'company-search-printing-char) - (setq l (cdr l)))))) - (define-key keymap [t] 'company-search-other-char) - (while (< i ?\s) - (define-key keymap (make-string 1 i) 'company-search-other-char) - (cl-incf i)) - (while (< i 256) - (define-key keymap (vector i) 'company-search-printing-char) - (cl-incf i)) - (dotimes (i 10) - (define-key keymap (kbd (format "<kp-%d>" i)) 'company-search-printing-char)) - (let ((meta-map (make-sparse-keymap))) - (define-key keymap (char-to-string meta-prefix-char) meta-map) - (define-key keymap [escape] meta-map)) - (define-key keymap (vector meta-prefix-char t) 'company-search-other-char) - (define-key keymap (kbd "C-n") 'company-select-next-or-abort) - (define-key keymap (kbd "C-p") 'company-select-previous-or-abort) - (define-key keymap (kbd "M-n") 'company--select-next-and-warn) - (define-key keymap (kbd "M-p") 'company--select-previous-and-warn) - (define-key keymap (kbd "<down>") 'company-select-next-or-abort) - (define-key keymap (kbd "<up>") 'company-select-previous-or-abort) - (define-key keymap "\e\e\e" 'company-search-other-char) - (define-key keymap [escape escape escape] 'company-search-other-char) - (define-key keymap (kbd "DEL") 'company-search-delete-char) - (define-key keymap [backspace] 'company-search-delete-char) - (define-key keymap "\C-g" 'company-search-abort) - (define-key keymap "\C-s" 'company-search-repeat-forward) - (define-key keymap "\C-r" 'company-search-repeat-backward) - (define-key keymap "\C-o" 'company-search-toggle-filtering) - (company-keymap--bind-quick-access keymap) - keymap) - "Keymap used for incrementally searching the completion candidates.") - -(define-minor-mode company-search-mode - "Search mode for completion candidates. -Don't start this directly, use `company-search-candidates' or -`company-filter-candidates'." - :lighter company-search-lighter - (if company-search-mode - (if (company-manual-begin) - (progn - (setq company--search-old-selection company-selection - company--search-old-changed company-selection-changed) - (company-call-frontends 'update) - (company-enable-overriding-keymap company-search-map)) - (setq company-search-mode nil)) - (kill-local-variable 'company-search-string) - (kill-local-variable 'company-search-filtering) - (kill-local-variable 'company--search-old-selection) - (kill-local-variable 'company--search-old-changed) - (when company-backend - (company--search-update-predicate "") - (company-call-frontends 'update)) - (company-enable-overriding-keymap company-active-map))) - -(defun company--search-assert-enabled () - (company-assert-enabled) - (unless company-search-mode - (company-uninstall-map) - (user-error "Company not in search mode"))) - -(defun company-search-candidates () - "Start searching the completion candidates incrementally. - -\\<company-search-map>Search can be controlled with the commands: -- `company-search-repeat-forward' (\\[company-search-repeat-forward]) -- `company-search-repeat-backward' (\\[company-search-repeat-backward]) -- `company-search-abort' (\\[company-search-abort]) -- `company-search-delete-char' (\\[company-search-delete-char]) - -Regular characters are appended to the search string. - -Customize `company-search-regexp-function' to change how the input -is interpreted when searching. - -The command `company-search-toggle-filtering' (\\[company-search-toggle-filtering]) -uses the search string to filter the completion candidates." - (interactive) - (company-search-mode 1)) - -(defun company-filter-candidates () - "Start filtering the completion candidates incrementally. -This works the same way as `company-search-candidates' immediately -followed by `company-search-toggle-filtering'." - (interactive) - (company-search-mode 1) - (setq company-search-filtering t)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun company-select-next (&optional arg) - "Select the next candidate in the list. - -With ARG, move by that many elements. -When `company-selection-default' is nil, add a special pseudo candidates -meant for no selection." - (interactive "p") - (when (company-manual-begin) - (let ((selection (+ (or arg 1) - (or company-selection - company-selection-default - -1)))) - (company-set-selection selection)))) - -(defun company-select-previous (&optional arg) - "Select the previous candidate in the list. - -With ARG, move by that many elements." - (interactive "p") - (company-select-next (if arg (- arg) -1))) - -(defun company-select-next-or-abort (&optional arg) - "Select the next candidate if more than one, else abort -and invoke the normal binding. - -With ARG, move by that many elements." - (interactive "p") - (if (or (not company-selection) - (> company-candidates-length 1)) - (company-select-next arg) - (company-abort) - (company--unread-this-command-keys))) - -(defun company-select-previous-or-abort (&optional arg) - "Select the previous candidate if more than one, else abort -and invoke the normal binding. - -With ARG, move by that many elements." - (interactive "p") - (if (> company-candidates-length 1) - (company-select-previous arg) - (company-abort) - (company--unread-this-command-keys))) - -(defun company-select-first () - "Select the first completion candidate." - (interactive) - (company-set-selection 0)) - -(defun company-select-last () - "Select the last completion candidate." - (interactive) - (company-set-selection (1- company-candidates-length))) - -(defun company-next-page () - "Select the candidate one page further." - (interactive) - (when (company-manual-begin) - (if (and company-selection-wrap-around - (= company-selection (1- company-candidates-length))) - (company-set-selection 0) - (let (company-selection-wrap-around) - (company-set-selection (+ company-selection - company-tooltip-limit)))))) - -(defun company-previous-page () - "Select the candidate one page earlier." - (interactive) - (when (company-manual-begin) - (if (and company-selection-wrap-around - (zerop company-selection)) - (company-set-selection (1- company-candidates-length)) - (let (company-selection-wrap-around) - (company-set-selection (- company-selection - company-tooltip-limit)))))) - -(defun company--event-col-row (event) - (company--posn-col-row (event-start event))) - -(defvar company-mouse-event nil - "Holds the mouse event from `company-select-mouse'. -For use in the `select-mouse' frontend action. `let'-bound.") - -(defun company-select-mouse (event) - "Select the candidate picked by the mouse." - (interactive "e") - (or (let ((company-mouse-event event)) - (cl-some #'identity (company-call-frontends 'select-mouse))) - (progn - (company-abort) - (company--unread-this-command-keys) - nil))) - -(defun company-complete-mouse (event) - "Insert the candidate picked by the mouse." - (interactive "e") - (when (company-select-mouse event) - (company-complete-selection))) - -(defun company-complete-selection () - "Insert the selected candidate." - (interactive) - (when (and (company-manual-begin) company-selection) - (let ((result (nth company-selection company-candidates))) - (company-finish result)))) - -(defun company-complete-common () - "Insert the common part of all candidates." - (interactive) - (when (company-manual-begin) - (if (and (not (cdr company-candidates)) - (equal company-common (car company-candidates))) - (company-complete-selection) - (company--insert-candidate company-common)))) - -(defun company-complete-common-or-cycle (&optional arg) - "Insert the common part of all candidates, or select the next one. - -With ARG, move by that many elements." - (interactive "p") - (when (company-manual-begin) - (let ((tick (buffer-chars-modified-tick))) - (call-interactively 'company-complete-common) - (when (eq tick (buffer-chars-modified-tick)) - (let ((company-selection-wrap-around t) - (current-prefix-arg arg)) - (call-interactively 'company-select-next)))))) - -(defun company-complete-common-or-show-delayed-tooltip () - "Insert the common part of all candidates, or show a tooltip." - (interactive) - (when (company-manual-begin) - (let ((tick (buffer-chars-modified-tick))) - (call-interactively 'company-complete-common) - (when (eq tick (buffer-chars-modified-tick)) - (let ((company-tooltip-idle-delay 0.0)) - (company-complete) - (and company-candidates - (company-call-frontends 'post-command))))))) - -(defun company-indent-or-complete-common (arg) - "Indent the current line or region, or complete the common part." - (interactive "P") - (cond - ((use-region-p) - (indent-region (region-beginning) (region-end))) - ((memq indent-line-function - '(indent-relative indent-relative-maybe)) - (company-complete-common)) - ((let ((old-point (point)) - (old-tick (buffer-chars-modified-tick)) - (tab-always-indent t)) - (indent-for-tab-command arg) - (when (and (eq old-point (point)) - (eq old-tick (buffer-chars-modified-tick))) - (company-complete-common)))))) - -(defun company-select-next-if-tooltip-visible-or-complete-selection () - "Insert selection if appropriate, or select the next candidate. -Insert selection if only preview is showing or only one candidate, -otherwise select the next candidate." - (interactive) - (if (and (company-tooltip-visible-p) (> company-candidates-length 1)) - (call-interactively 'company-select-next) - (call-interactively 'company-complete-selection))) - -;;;###autoload -(defun company-complete () - "Insert the common part of all candidates or the current selection. -The first time this is called, the common part is inserted, the second -time, or when the selection has been changed, the selected candidate is -inserted." - (interactive) - (when (company-manual-begin) - (if (or company-selection-changed - (and (eq real-last-command 'company-complete) - (eq last-command 'company-complete-common))) - (call-interactively 'company-complete-selection) - (call-interactively 'company-complete-common) - (when company-candidates - (setq this-command 'company-complete-common))))) - -(define-obsolete-function-alias - 'company-complete-number - 'company-complete-tooltip-row - "0.10.0") - -(defun company-complete-tooltip-row (number) - "Insert a candidate visible on the tooltip's row NUMBER. - -Inserts one of the first ten candidates, -numbered according to the current scrolling position starting with 1. - -When called interactively, uses the last typed digit, stripping the -modifiers and translating 0 into 10, so `M-1' inserts the first visible -candidate, and `M-0' insert to 10th one. - -To show hint numbers beside the candidates, enable `company-show-quick-access'." - (interactive - (list (let* ((type (event-basic-type last-command-event)) - (char (if (characterp type) - ;; Number on the main row. - type - ;; Keypad number, if bound directly. - (car (last (string-to-list (symbol-name type)))))) - (number (- char ?0))) - (if (zerop number) 10 number)))) - (company--complete-nth (1- number))) - -(defun company-complete-quick-access (row) - "Insert a candidate visible on a ROW matched by a quick-access key binding. -See `company-quick-access-keys' for more details." - (interactive - (list (let* ((event-type (event-basic-type last-command-event)) - (event-string (if (characterp event-type) - (string event-type) - (error "Unexpected input")))) - (cl-position event-string company-quick-access-keys :test 'equal)))) - (when row - (company--complete-nth row))) - -(defvar-local company-tooltip-offset 0 - "Current scrolling state of the tooltip. -Represented by the index of the first visible completion candidate -from the candidates list.") - -(defun company--complete-nth (row) - "Insert a candidate visible on the tooltip's zero-based ROW." - (when (company-manual-begin) - (and (or (< row 0) (>= row (- company-candidates-length - company-tooltip-offset))) - (user-error "No candidate on the row number %d" row)) - (company-finish (nth (+ row company-tooltip-offset) - company-candidates)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst company-space-strings-limit 100) - -(defconst company-space-strings - (let (lst) - (dotimes (i company-space-strings-limit) - (push (make-string (- company-space-strings-limit 1 i) ?\ ) lst)) - (apply 'vector lst))) - -(defun company-space-string (len) - (if (< len company-space-strings-limit) - (aref company-space-strings len) - (make-string len ?\ ))) - -(defun company-safe-substring (str from &optional to) - (let ((bis buffer-invisibility-spec)) - (if (> from (string-width str)) - "" - (with-temp-buffer - (setq buffer-invisibility-spec bis) - (insert str) - (move-to-column from) - (let ((beg (point))) - (if to - (progn - (move-to-column to) - (concat (buffer-substring beg (point)) - (let ((padding (- to (current-column)))) - (when (> padding 0) - (company-space-string padding))))) - (buffer-substring beg (point-max)))))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-last-metadata nil) - -(defun company-fetch-metadata () - (let ((selected (nth (or company-selection 0) company-candidates))) - (unless (eq selected (car company-last-metadata)) - (setq company-last-metadata - (cons selected (company-call-backend 'meta selected)))) - (cdr company-last-metadata))) - -(defun company-doc-buffer (&optional string) - (with-current-buffer (get-buffer-create "*company-documentation*") - (erase-buffer) - (fundamental-mode) - (when string - (save-excursion - (insert string) - (visual-line-mode))) - (current-buffer))) - -(defvar company--electric-saved-window-configuration nil) - -(defvar company--electric-commands - '(scroll-other-window scroll-other-window-down mwheel-scroll) - "List of Commands that won't break out of electric commands.") - -(defun company--electric-command-p () - (memq this-command company--electric-commands)) - -(defun company--electric-restore-window-configuration () - "Restore window configuration (after electric commands)." - (when (and company--electric-saved-window-configuration - (not (company--electric-command-p))) - (set-window-configuration company--electric-saved-window-configuration) - (setq company--electric-saved-window-configuration nil))) - -(defmacro company--electric-do (&rest body) - (declare (indent 0) (debug t)) - `(when company-candidates - (cl-assert (null company--electric-saved-window-configuration)) - (setq company--electric-saved-window-configuration (current-window-configuration)) - (let ((height (window-height)) - (row (company--row))) - ,@body - (and (< (window-height) height) - (< (- (window-height) row 2) company-tooltip-limit) - (recenter (- (window-height) row 2)))))) - -(defun company--unread-this-command-keys () - (when (> (length (this-command-keys)) 0) - (setq unread-command-events (nconc - (listify-key-sequence (this-command-keys)) - unread-command-events)) - (clear-this-command-keys t))) - -(defun company--show-doc-buffer () - "Show the documentation buffer for the selection." - (let ((other-window-scroll-buffer) - (selection (or company-selection 0))) - (let* ((selected (nth selection company-candidates)) - (doc-buffer (or (company-call-backend 'doc-buffer selected) - (user-error "No documentation available"))) - start) - (when (consp doc-buffer) - (setq start (cdr doc-buffer) - doc-buffer (car doc-buffer))) - (setq other-window-scroll-buffer (get-buffer doc-buffer)) - (let ((win (display-buffer doc-buffer t))) - (set-window-start win (if start start (point-min))))))) - -(defun company-show-doc-buffer (&optional toggle-auto-update) - "Show the documentation buffer for the selection. -With a prefix argument TOGGLE-AUTO-UPDATE, toggle the value of -`company-auto-update-doc'. When `company-auto-update-doc' is non-nil, -automatically show the documentation buffer for each selection." - (interactive "P") - (when toggle-auto-update - (setq company-auto-update-doc (not company-auto-update-doc))) - (company--electric-do - (company--show-doc-buffer))) -(put 'company-show-doc-buffer 'company-keep t) - -(defun company-show-location () - "Temporarily display a buffer showing the selected candidate in context." - (interactive) - (let (other-window-scroll-buffer) - (company--electric-do - (let* ((selected (nth company-selection company-candidates)) - (location (company-call-backend 'location selected)) - (pos (or (cdr location) (user-error "No location available"))) - (buffer (or (and (bufferp (car location)) (car location)) - (find-file-noselect (car location) t)))) - (setq other-window-scroll-buffer (get-buffer buffer)) - (with-selected-window (display-buffer buffer t) - (save-restriction - (widen) - (if (bufferp (car location)) - (goto-char pos) - (goto-char (point-min)) - (forward-line (1- pos)))) - (set-window-start nil (point))))))) -(put 'company-show-location 'company-keep t) - -;;; package functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-callback nil) - -(defun company-remove-callback (&optional _ignored) - (remove-hook 'company-completion-finished-hook company-callback t) - (remove-hook 'company-completion-cancelled-hook 'company-remove-callback t) - (remove-hook 'company-completion-finished-hook 'company-remove-callback t)) - -(defun company-begin-backend (backend &optional callback) - "Start a completion at point using BACKEND." - (interactive (let ((val (completing-read "Company backend: " - obarray - 'functionp nil "company-"))) - (when val - (list (intern val))))) - (when (setq company-callback callback) - (add-hook 'company-completion-finished-hook company-callback nil t)) - (add-hook 'company-completion-cancelled-hook 'company-remove-callback nil t) - (add-hook 'company-completion-finished-hook 'company-remove-callback nil t) - (setq company-backend backend) - ;; Return non-nil if active. - (or (company-manual-begin) - (user-error "Cannot complete at point"))) - -(defun company-begin-with (candidates - &optional prefix-length require-match callback) - "Start a completion at point. -CANDIDATES is the list of candidates to use and PREFIX-LENGTH is the length -of the prefix that already is in the buffer before point. -It defaults to 0. - -CALLBACK is a function called with the selected result if the user -successfully completes the input. - -Example: \(company-begin-with \\='\(\"foo\" \"foobar\" \"foobarbaz\"\)\)" - (let ((begin-marker (copy-marker (point) t))) - (company-begin-backend - (lambda (command &optional arg &rest _ignored) - (pcase command - (`prefix - (when (equal (point) (marker-position begin-marker)) - (buffer-substring (- (point) (or prefix-length 0)) (point)))) - (`candidates - (all-completions arg candidates)) - (`require-match - require-match))) - callback))) - -(declare-function find-library-name "find-func") -(declare-function lm-version "lisp-mnt") - -(defun company-version (&optional show-version) - "Get the Company version as string. - -If SHOW-VERSION is non-nil, show the version in the echo area." - (interactive (list t)) - (with-temp-buffer - (require 'find-func) - (insert-file-contents (find-library-name "company")) - (require 'lisp-mnt) - (if show-version - (message "Company version: %s" (lm-version)) - (lm-version)))) - -(defun company-diag () - "Pop a buffer with information about completions at point." - (interactive) - (let* ((bb company-backends) - (mode (symbol-name major-mode)) - backend - (prefix (cl-loop for b in bb - thereis (let ((company-backend b)) - (setq backend b) - (company-call-backend 'prefix)))) - (c-a-p-f completion-at-point-functions) - cc annotations) - (when (or (stringp prefix) (consp prefix)) - (let ((company-backend backend)) - (condition-case nil - (setq cc (company-call-backend 'candidates (company--prefix-str prefix)) - annotations - (mapcar - (lambda (c) (cons c (company-call-backend 'annotation c))) - cc)) - (error (setq annotations 'error))))) - (pop-to-buffer (get-buffer-create "*company-diag*")) - (setq buffer-read-only nil) - (erase-buffer) - (insert (format "Emacs %s (%s) of %s on %s" - emacs-version system-configuration - (format-time-string "%Y-%m-%d" emacs-build-time) - emacs-build-system)) - (insert "\nCompany " (company-version) "\n\n") - (insert "company-backends: " (pp-to-string bb)) - (insert "\n") - (insert "Used backend: " (pp-to-string backend)) - (insert "\n") - (when (if (listp backend) - (memq 'company-capf backend) - (eq backend 'company-capf)) - (insert "Value of c-a-p-f: " - (pp-to-string c-a-p-f))) - (insert "Major mode: " mode) - (insert "\n") - (insert "Prefix: " (pp-to-string prefix)) - (insert "\n") - (insert "Completions:") - (unless cc (insert " none")) - (if (eq annotations 'error) - (insert "(error fetching)") - (save-excursion - (dolist (c annotations) - (insert "\n " (prin1-to-string (car c))) - (when (cdr c) - (insert " " (prin1-to-string (cdr c))))))) - (special-mode))) - -;;; pseudo-tooltip ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company--tooltip-current-width 0) - -(defun company-tooltip--lines-update-offset (selection num-lines limit) - (cl-decf limit 2) - (setq company-tooltip-offset - (max (min selection company-tooltip-offset) - (- selection -1 limit))) - - (when (<= company-tooltip-offset 1) - (cl-incf limit) - (setq company-tooltip-offset 0)) - - (when (>= company-tooltip-offset (- num-lines limit 1)) - (cl-incf limit) - (when (= selection (1- num-lines)) - (cl-decf company-tooltip-offset) - (when (<= company-tooltip-offset 1) - (setq company-tooltip-offset 0) - (cl-incf limit)))) - - limit) - -(defun company-tooltip--simple-update-offset (selection _num-lines limit) - (setq company-tooltip-offset - (if (< selection company-tooltip-offset) - selection - (max company-tooltip-offset - (- selection limit -1))))) - -;;; propertize - -(defun company-round-tab (arg) - (* (/ (+ arg tab-width) tab-width) tab-width)) - -(defun company-plainify (str) - (let ((prefix (get-text-property 0 'line-prefix str))) - (when prefix ; Keep the original value unmodified, for no special reason. - (setq str (concat prefix str)) - (remove-text-properties 0 (length str) '(line-prefix) str))) - (let* ((pieces (split-string str "\t")) - (copy pieces)) - (while (cdr copy) - (setcar copy (company-safe-substring - (car copy) 0 (company-round-tab (string-width (car copy))))) - (pop copy)) - (apply 'concat pieces))) - -(defun company--common-or-matches (value) - (let ((matches (company-call-backend 'match value))) - (when (and matches - company-common - (listp matches) - (= 1 (length matches)) - (= 0 (caar matches)) - (> (length company-common) (cdar matches))) - (setq matches nil)) - (when (integerp matches) - (setq matches `((0 . ,matches)))) - (or matches - (and company-common `((0 . ,(length company-common)))) - nil))) - -(defun company-fill-propertize (value annotation width selected left right) - (let* ((margin (length left)) - (company-common (and company-common (company--clean-string company-common))) - (common (company--common-or-matches value)) - (_ (setq value (company-reformat (company--pre-render value)) - annotation (and annotation (company--pre-render annotation t)))) - (ann-ralign company-tooltip-align-annotations) - (ann-padding (or company-tooltip-annotation-padding 0)) - (ann-truncate (< width - (+ (length value) (length annotation) - ann-padding))) - (ann-start (+ margin - (if ann-ralign - (if ann-truncate - (+ (length value) ann-padding) - (- width (length annotation))) - (+ (length value) ann-padding)))) - (ann-end (min (+ ann-start (length annotation)) (+ margin width))) - (line (concat left - (if (or ann-truncate (not ann-ralign)) - (company-safe-substring - (concat value - (when annotation - (company-space-string ann-padding)) - annotation) - 0 width) - (concat - (company-safe-substring value 0 - (- width (length annotation))) - annotation)) - right))) - (setq width (+ width margin (length right))) - - (font-lock-append-text-property 0 width 'mouse-face - 'company-tooltip-mouse - line) - (when (< ann-start ann-end) - (add-face-text-property ann-start ann-end - (if selected - 'company-tooltip-annotation-selection - 'company-tooltip-annotation) - t line)) - (cl-loop - with width = (- width (length right)) - for (comp-beg . comp-end) in common - for inline-beg = (+ margin comp-beg) - for inline-end = (min (+ margin comp-end) width) - when (< inline-beg width) - do (add-face-text-property inline-beg inline-end - (if selected - 'company-tooltip-common-selection - 'company-tooltip-common) - nil line)) - (when (let ((re (funcall company-search-regexp-function - company-search-string))) - (and (not (string= re "")) - (string-match re value))) - (pcase-dolist (`(,mbeg . ,mend) (company--search-chunks)) - (let ((beg (+ margin mbeg)) - (end (+ margin mend)) - (width (- width (length right)))) - (when (< beg width) - (add-face-text-property beg (min end width) - (if selected - 'company-tooltip-search-selection - 'company-tooltip-search) - nil line))))) - (when selected - (add-face-text-property 0 width 'company-tooltip-selection t line)) - - (when (company-call-backend 'deprecated value) - (add-face-text-property margin - (min - (+ margin (length value)) - (- width (length right))) - 'company-tooltip-deprecated t line)) - - (add-face-text-property 0 width 'company-tooltip t line) - line)) - -(defun company--search-chunks () - (let ((md (match-data t)) - res) - (if (<= (length md) 2) - (push (cons (nth 0 md) (nth 1 md)) res) - (while (setq md (nthcdr 2 md)) - (when (car md) - (push (cons (car md) (cadr md)) res)))) - res)) - -(defun company--pre-render (str &optional annotation-p) - (or (company-call-backend 'pre-render str annotation-p) - (progn - (when (or (text-property-not-all 0 (length str) 'face nil str) - (text-property-not-all 0 (length str) 'mouse-face nil str)) - (setq str (copy-sequence str)) - (remove-text-properties 0 (length str) - '(face nil font-lock-face nil mouse-face nil) - str)) - str))) - -(defun company--clean-string (str) - (replace-regexp-in-string - "\\([^[:graph:] ]\\)\\|\\(\ufeff\\)\\|[[:multibyte:]]" - (lambda (match) - (cond - ((match-beginning 1) - ;; FIXME: Better char for 'non-printable'? - ;; We shouldn't get any of these, but sometimes we might. - ;; The official "replacement character" is not supported by some fonts. - ;;"\ufffd" - "?" - ) - ((match-beginning 2) - ;; Zero-width non-breakable space. - "") - ((> (string-width match) 1) - (concat - (make-string (1- (string-width match)) ?\ufeff) - match)) - (t match))) - str)) - -;;; replace - -(defun company-buffer-lines (beg end) - (goto-char beg) - (let (lines lines-moved) - (while (and (not (eobp)) ; http://debbugs.gnu.org/19553 - (> (setq lines-moved (vertical-motion 1)) 0) - (<= (point) end)) - (let ((bound (min end (point)))) - ;; A visual line can contain several physical lines (e.g. with outline's - ;; folding overlay). Take only the first one. - (push (buffer-substring beg - (save-excursion - (goto-char beg) - (re-search-forward "$" bound 'move) - (point))) - lines)) - ;; One physical line can be displayed as several visual ones as well: - ;; add empty strings to the list, to even the count. - (dotimes (_ (1- lines-moved)) - (push "" lines)) - (setq beg (point))) - (unless (eq beg end) - (push (buffer-substring beg end) lines)) - (nreverse lines))) - -(defun company-modify-line (old new offset) - (concat (company-safe-substring old 0 offset) - new - (company-safe-substring old (+ offset (length new))))) - -(defun company--show-numbers (numbered) - (format " %s" (if (<= numbered 10) - (mod numbered 10) - " "))) -(make-obsolete - 'company--show-numbers - "use `company-quick-access-hint-key' instead, -but adjust the expected values appropriately." - "0.10.0") - -(defsubst company--window-height () - (if (fboundp 'window-screen-lines) - (floor (window-screen-lines)) - (window-body-height))) - -(defun company--window-width () - (let ((ww (window-body-width))) - ;; Account for the line continuation column. - (when (zerop (cadr (window-fringes))) - (cl-decf ww)) - (when (bound-and-true-p display-line-numbers) - (cl-decf ww (+ 2 (line-number-display-width)))) - ;; whitespace-mode with newline-mark - (when (and buffer-display-table - (aref buffer-display-table ?\n)) - (cl-decf ww (1- (length (aref buffer-display-table ?\n))))) - ww)) - -(defun company--face-attribute (face attr) - ;; Like `face-attribute', but accounts for faces that have been remapped to - ;; another face, a list of faces, or a face spec. - (cond ((null face) nil) - ((symbolp face) - (let ((remap (cdr (assq face face-remapping-alist)))) - (if remap - (company--face-attribute - ;; Faces can be remapped to their unremapped selves, but that - ;; would cause us infinite recursion. - (if (listp remap) (remq face remap) remap) - attr) - (face-attribute face attr nil t)))) - ((keywordp (car-safe face)) - (or (plist-get face attr) - (company--face-attribute (plist-get face :inherit) attr))) - ((listp face) - (cl-find-if #'stringp - (mapcar (lambda (f) (company--face-attribute f attr)) - face))))) - -(defun company--replacement-string (lines column-offset old column nl &optional align-top) - (cl-decf column column-offset) - - (when (< column 0) (setq column 0)) - - (when (and align-top company-tooltip-flip-when-above) - (setq lines (reverse lines))) - - (let ((width (length (car lines))) - (remaining-cols (- (+ (company--window-width) (window-hscroll)) - column))) - (when (> width remaining-cols) - (cl-decf column (- width remaining-cols)))) - - (let (new) - (when align-top - ;; untouched lines first - (dotimes (_ (- (length old) (length lines))) - (push (pop old) new))) - ;; length into old lines. - (while old - (push (company-modify-line (pop old) (pop lines) column) - new)) - ;; Append whole new lines. - (while lines - (push (concat (company-space-string column) (pop lines)) - new)) - - ;; XXX: Also see branch 'more-precise-extend'. - (let* ((nl-face `(,@(when (version<= "27" emacs-version) - '(:extend t)) - :inverse-video nil - :background ,(or (company--face-attribute 'default :background) - (face-attribute 'default :background nil t)))) - (str (apply #'concat - (when nl " \n") - (cl-mapcan - ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42552#23 - (lambda (line) (list line (propertize "\n" 'face nl-face))) - (nreverse new))))) - ;; https://debbugs.gnu.org/38563 - (add-face-text-property 0 (length str) 'default t str) - (when nl (put-text-property 0 1 'cursor t str)) - str))) - -(defun company--create-lines (selection limit) - (let ((len company-candidates-length) - (window-width (company--window-width)) - (company-tooltip-annotation-padding - (or company-tooltip-annotation-padding - (if company-tooltip-align-annotations 1 0))) - left-margins - left-margin-size - lines - width - lines-copy - items - previous - remainder - scrollbar-bounds) - - ;; Maybe clear old offset. - (when (< len (+ company-tooltip-offset limit)) - (setq company-tooltip-offset 0)) - - (let ((selection (or selection 0))) - ;; Scroll to offset. - (if (eq company-tooltip-offset-display 'lines) - (setq limit (company-tooltip--lines-update-offset selection len limit)) - (company-tooltip--simple-update-offset selection len limit)) - - (cond - ((eq company-tooltip-offset-display 'scrollbar) - (setq scrollbar-bounds (company--scrollbar-bounds company-tooltip-offset - limit len))) - ((eq company-tooltip-offset-display 'lines) - (when (> company-tooltip-offset 0) - (setq previous (format "...(%d)" company-tooltip-offset))) - (setq remainder (- len limit company-tooltip-offset) - remainder (when (> remainder 0) - (setq remainder (format "...(%d)" remainder))))))) - - (when selection - (cl-decf selection company-tooltip-offset)) - - (setq width (max (length previous) (length remainder)) - lines (nthcdr company-tooltip-offset company-candidates) - len (min limit len) - lines-copy lines) - - (when scrollbar-bounds (cl-decf window-width)) - - (when company-format-margin-function - (let ((lines-copy lines-copy) - res) - (dotimes (i len) - (push (funcall company-format-margin-function - (pop lines-copy) - (equal selection i)) - res)) - (setq left-margins (nreverse res)))) - - ;; XXX: format-function outputting shorter strings than the - ;; default margin is not supported (yet?). - (setq left-margin-size (apply #'max company-tooltip-margin - (mapcar #'length left-margins))) - - (cl-decf window-width company-tooltip-margin) - (cl-decf window-width left-margin-size) - - (dotimes (_ len) - (let* ((value (pop lines-copy)) - (annotation (company-call-backend 'annotation value)) - (left (or (pop left-margins) - (company-space-string left-margin-size)))) - (setq value (company--clean-string value)) - (when annotation - (setq annotation (company--clean-string annotation)) - (when company-tooltip-align-annotations - ;; `lisp-completion-at-point' adds a space. - (setq annotation (string-trim-left annotation)))) - (push (list value annotation left) items) - (setq width (max (+ (length value) - (if annotation - (+ (length annotation) - company-tooltip-annotation-padding) - (length annotation))) - width)))) - - (setq width (min window-width - company-tooltip-maximum-width - (max company-tooltip-minimum-width - (if company-show-quick-access - (+ 2 width) - width)))) - - (when company-tooltip-width-grow-only - (setq width (max company--tooltip-current-width width)) - (setq company--tooltip-current-width width)) - - (let ((items (nreverse items)) - (row (if company-show-quick-access 0 99999)) - new) - (when previous - (push (company--scrollpos-line previous width left-margin-size) new)) - - (dotimes (i len) - (let* ((item (pop items)) - (str (car item)) - (annotation (cadr item)) - (left (nth 2 item)) - (right (company-space-string company-tooltip-margin)) - (width width) - (selected (equal selection i))) - (when company-show-quick-access - (let ((quick-access (gv-ref (if (eq company-show-quick-access 'left) - left right))) - (qa-hint (company-tooltip--format-quick-access-hint - row selected))) - (cl-decf width (string-width qa-hint)) - (setf (gv-deref quick-access) - (concat qa-hint (gv-deref quick-access)))) - (cl-incf row)) - (push (concat - (company-fill-propertize str annotation - width selected - left - right) - (when scrollbar-bounds - (company--scrollbar i scrollbar-bounds))) - new))) - - (when remainder - (push (company--scrollpos-line remainder width left-margin-size) new)) - - (cons - left-margin-size - (nreverse new))))) - -(defun company--scrollbar-bounds (offset limit length) - (when (> length limit) - (let* ((size (ceiling (* limit (float limit)) length)) - (lower (floor (* limit (float offset)) length)) - (upper (+ lower size -1))) - (cons lower upper)))) - -(defun company--scrollbar (i bounds) - (propertize " " 'face - (if (and (>= i (car bounds)) (<= i (cdr bounds))) - 'company-tooltip-scrollbar-thumb - 'company-tooltip-scrollbar-track))) - -(defun company--scrollpos-line (text width fancy-margin-width) - (propertize (concat (company-space-string company-tooltip-margin) - (company-safe-substring text 0 width) - (company-space-string fancy-margin-width)) - 'face 'company-tooltip)) - -(defun company-tooltip--format-quick-access-hint (row selected) - "Format a quick-access hint for outputting on a tooltip's ROW. -Value of SELECTED determines the added face." - (propertize (format "%2s" (funcall company-quick-access-hint-function row)) - 'face - (if selected - 'company-tooltip-quick-access-selection - 'company-tooltip-quick-access))) - -;; show - -(defvar-local company-pseudo-tooltip-overlay nil) - -(defun company--inside-tooltip-p (event-col-row row height) - (let* ((ovl company-pseudo-tooltip-overlay) - (column (overlay-get ovl 'company-column)) - (width (overlay-get ovl 'company-width)) - (evt-col (car event-col-row)) - (evt-row (cdr event-col-row))) - (and (>= evt-col column) - (< evt-col (+ column width)) - (if (> height 0) - (and (> evt-row row) - (<= evt-row (+ row height) )) - (and (< evt-row row) - (>= evt-row (+ row height))))))) - -(defun company--pseudo-tooltip-height () - "Calculate the appropriate tooltip height. -Returns a negative number if the tooltip should be displayed above point." - (let* ((lines (company--row)) - (below (- (company--window-height) 1 lines))) - (if (and (< below (min company-tooltip-minimum company-candidates-length)) - (> lines below)) - (- (max 3 (min company-tooltip-limit lines))) - (max 3 (min company-tooltip-limit below))))) - -(defun company-pseudo-tooltip-show (row column selection) - (company-pseudo-tooltip-hide) - - (let* ((height (company--pseudo-tooltip-height)) - above) - - (when (< height 0) - (setq row (+ row height -1) - above t)) - - ;; This can happen in Emacs versions which allow arbitrary scrolling, - ;; such as Yamamoto's Mac Port. - (unless (pos-visible-in-window-p (window-start)) - (cl-decf row)) - - (let (nl beg end ov args) - (save-excursion - (setq nl (< (move-to-window-line row) row) - beg (point) - end (save-excursion - (move-to-window-line (+ row (abs height))) - (point)) - ov (make-overlay beg end nil t) - args (list (mapcar 'company-plainify - (company-buffer-lines beg end)) - column nl above))) - - (setq company-pseudo-tooltip-overlay ov) - (overlay-put ov 'company-replacement-args args) - - (let* ((lines-and-offset (company--create-lines selection (abs height))) - (lines (cdr lines-and-offset)) - (column-offset (car lines-and-offset))) - (overlay-put ov 'company-display - (apply 'company--replacement-string - lines column-offset args)) - (overlay-put ov 'company-width (string-width (car lines)))) - - (overlay-put ov 'company-column column) - (overlay-put ov 'company-height height)))) - -(defun company-pseudo-tooltip-show-at-point (pos column-offset) - (let* ((col-row (company--col-row pos)) - (col (- (car col-row) column-offset))) - (when (< col 0) (setq col 0)) - (company-pseudo-tooltip-show (1+ (cdr col-row)) col company-selection))) - -(defun company-pseudo-tooltip-edit (selection) - (let* ((height (overlay-get company-pseudo-tooltip-overlay 'company-height)) - (lines-and-offset (company--create-lines selection (abs height))) - (lines (cdr lines-and-offset)) - (column-offset (car lines-and-offset))) - (overlay-put company-pseudo-tooltip-overlay 'company-width - (string-width (car lines))) - (overlay-put company-pseudo-tooltip-overlay 'company-display - (apply 'company--replacement-string - lines column-offset - (overlay-get company-pseudo-tooltip-overlay - 'company-replacement-args))))) - -(defun company-pseudo-tooltip-hide () - (when company-pseudo-tooltip-overlay - (delete-overlay company-pseudo-tooltip-overlay) - (setq company-pseudo-tooltip-overlay nil))) - -(defun company-pseudo-tooltip-hide-temporarily () - (when (overlayp company-pseudo-tooltip-overlay) - (overlay-put company-pseudo-tooltip-overlay 'invisible nil) - (overlay-put company-pseudo-tooltip-overlay 'line-prefix nil) - (overlay-put company-pseudo-tooltip-overlay 'before-string nil) - (overlay-put company-pseudo-tooltip-overlay 'display nil) - (overlay-put company-pseudo-tooltip-overlay 'face nil))) - -(defun company-pseudo-tooltip-unhide () - (when company-pseudo-tooltip-overlay - (let* ((ov company-pseudo-tooltip-overlay) - (disp (overlay-get ov 'company-display))) - ;; Beat outline's folding overlays. - ;; And Flymake (53). And Flycheck (110). - (overlay-put ov 'priority 111) - ;; visual-line-mode - (when (and (memq (char-before (overlay-start ov)) '(?\s ?\t)) - ;; not eob - (not (nth 2 (overlay-get ov 'company-replacement-args)))) - (setq disp (concat "\n" disp))) - ;; No (extra) prefix for the first line. - (overlay-put ov 'line-prefix "") - (overlay-put ov 'before-string disp) - ;; `display' is better than `invisible': - ;; https://debbugs.gnu.org/18285 - ;; https://debbugs.gnu.org/20847 - ;; https://debbugs.gnu.org/42521 - (overlay-put ov 'display "") - (overlay-put ov 'window (selected-window))))) - -(defun company-pseudo-tooltip-guard () - (list - (save-excursion (beginning-of-visual-line)) - (window-width) - (let ((ov company-pseudo-tooltip-overlay) - (overhang (save-excursion (end-of-visual-line) - (- (line-end-position) (point))))) - (when (>= (overlay-get ov 'company-height) 0) - (cons - (buffer-substring-no-properties (point) (overlay-start ov)) - (when (>= overhang 0) overhang)))))) - -(defun company-pseudo-tooltip-frontend (command) - "`company-mode' frontend similar to a tooltip but based on overlays." - (cl-case command - (pre-command (company-pseudo-tooltip-hide-temporarily)) - (unhide - (let ((ov company-pseudo-tooltip-overlay)) - (when (> (overlay-get ov 'company-height) 0) - ;; Sleight of hand: if the current line wraps, we adjust the - ;; start of the overlay so that the popup does not zig-zag, - ;; but don't update the popup's background. This seems just - ;; non-annoying enough to avoid the work required for the latter. - (save-excursion - (vertical-motion 1) - (unless (= (point) (overlay-start ov)) - (move-overlay ov (point) (overlay-end ov)))))) - (company-pseudo-tooltip-unhide)) - (post-command - (unless (when (overlayp company-pseudo-tooltip-overlay) - (let* ((ov company-pseudo-tooltip-overlay) - (old-height (overlay-get ov 'company-height)) - (new-height (company--pseudo-tooltip-height))) - (and - (>= (* old-height new-height) 0) - (>= (abs old-height) (abs new-height)) - (equal (company-pseudo-tooltip-guard) - (overlay-get ov 'company-guard))))) - ;; Redraw needed. - (company-pseudo-tooltip-show-at-point (point) (length company-prefix)) - (overlay-put company-pseudo-tooltip-overlay - 'company-guard (company-pseudo-tooltip-guard))) - (company-pseudo-tooltip-unhide)) - (show (setq company--tooltip-current-width 0)) - (hide (company-pseudo-tooltip-hide) - (setq company-tooltip-offset 0)) - (update (when (overlayp company-pseudo-tooltip-overlay) - (company-pseudo-tooltip-edit company-selection))) - (select-mouse - (let ((event-col-row (company--event-col-row company-mouse-event)) - (ovl-row (company--row)) - (ovl-height (and company-pseudo-tooltip-overlay - (min (overlay-get company-pseudo-tooltip-overlay - 'company-height) - company-candidates-length)))) - (cond ((and ovl-height - (company--inside-tooltip-p event-col-row ovl-row ovl-height)) - (company-set-selection (+ (cdr event-col-row) - (1- company-tooltip-offset) - (if (and (eq company-tooltip-offset-display 'lines) - (not (zerop company-tooltip-offset))) - -1 0) - (- ovl-row) - (if (< ovl-height 0) - (- 1 ovl-height) - 0))) - t)))))) - -(defun company-pseudo-tooltip-unless-just-one-frontend (command) - "`company-pseudo-tooltip-frontend', but not shown for single candidates." - (unless (and (memq command '(post-command unhide)) - (company--show-inline-p)) - (company-pseudo-tooltip-frontend command))) - -(defun company-pseudo-tooltip--ujofwd-on-timer (command) - (when company-candidates - (company-pseudo-tooltip-unless-just-one-frontend-with-delay command))) - -(defun company-pseudo-tooltip-unless-just-one-frontend-with-delay (command) - "`compandy-pseudo-tooltip-frontend', but shown after a delay. -Delay is determined by `company-tooltip-idle-delay'." - (defvar company-preview-overlay) - (when (and (memq command '(pre-command hide)) - company-tooltip-timer) - (cancel-timer company-tooltip-timer) - (setq company-tooltip-timer nil)) - (cl-case command - (post-command - (if (or company-tooltip-timer - (overlayp company-pseudo-tooltip-overlay)) - (if (not (overlayp company-preview-overlay)) - (company-pseudo-tooltip-unless-just-one-frontend command) - (let (company-tooltip-timer) - (company-call-frontends 'pre-command)) - (company-call-frontends 'post-command)) - (setq company-tooltip-timer - (run-with-timer company-tooltip-idle-delay nil - 'company-pseudo-tooltip--ujofwd-on-timer - 'post-command)))) - (unhide - (when (overlayp company-pseudo-tooltip-overlay) - (company-pseudo-tooltip-unless-just-one-frontend command))) - (t - (company-pseudo-tooltip-unless-just-one-frontend command)))) - -;;; overlay ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-preview-overlay nil) - -(defun company-preview-show-at-point (pos completion) - (company-preview-hide) - - (let* ((company-common (and company-common - (string-prefix-p company-prefix company-common) - company-common)) - (common (company--common-or-matches completion))) - (setq completion (copy-sequence (company--pre-render completion))) - (add-face-text-property 0 (length completion) 'company-preview - nil completion) - - (cl-loop for (beg . end) in common - do (add-face-text-property beg end 'company-preview-common - nil completion)) - - ;; Add search string - (and (string-match (funcall company-search-regexp-function - company-search-string) - completion) - (pcase-dolist (`(,mbeg . ,mend) (company--search-chunks)) - (add-face-text-property mbeg mend 'company-preview-search - nil completion))) - - (setq completion (if (string-prefix-p company-prefix completion - (eq (company-call-backend 'ignore-case) - 'keep-prefix)) - (company-strip-prefix completion) - completion)) - - (when (string-prefix-p "\n" completion) - (setq completion (concat (propertize " " 'face 'company-preview) "\n" - (substring completion 1)))) - - (and (equal pos (point)) - (not (equal completion "")) - (add-text-properties 0 1 '(cursor 1) completion)) - - (let* ((beg pos) - (pto company-pseudo-tooltip-overlay) - (ptf-workaround (and - pto - (char-before pos) - (eq pos (overlay-start pto))))) - ;; Try to accommodate for the pseudo-tooltip overlay, - ;; which may start at the same position if it's at eol. - (when ptf-workaround - (cl-decf beg) - (setq completion (concat (buffer-substring beg pos) completion))) - - (setq company-preview-overlay (make-overlay beg pos)) - - (let ((ov company-preview-overlay)) - (overlay-put ov (if ptf-workaround 'display 'after-string) - completion) - (overlay-put ov 'window (selected-window)))))) - -(defun company-preview-hide () - (when company-preview-overlay - (delete-overlay company-preview-overlay) - (setq company-preview-overlay nil))) - -(defun company-preview-frontend (command) - "`company-mode' frontend showing the selection as if it had been inserted." - (pcase command - (`pre-command (company-preview-hide)) - (`unhide - (when company-selection - (let* ((current (nth company-selection company-candidates)) - (company-prefix (if (equal current company-prefix) - ;; Would be more accurate to compare lengths, - ;; but this is shorter. - current - (buffer-substring - (- company-point (length company-prefix)) - (point))))) - (company-preview-show-at-point (point) current)))) - (`post-command - (when company-selection - (company-preview-show-at-point (point) - (nth company-selection company-candidates)))) - (`hide (company-preview-hide)))) - -(defun company-preview-if-just-one-frontend (command) - "`company-preview-frontend', but only shown for single candidates." - (when (or (not (memq command '(post-command unhide))) - (company--show-inline-p)) - (company-preview-frontend command))) - -(defun company--show-inline-p () - (and (not (cdr company-candidates)) - company-common - (not (eq t (compare-strings company-prefix nil nil - (car company-candidates) nil nil - t))) - (or (eq (company-call-backend 'ignore-case) 'keep-prefix) - (string-prefix-p company-prefix company-common)))) - -(defun company-tooltip-visible-p () - "Returns whether the tooltip is visible." - (when (overlayp company-pseudo-tooltip-overlay) - (not (overlay-get company-pseudo-tooltip-overlay 'invisible)))) - -(defun company-preview-common--show-p () - "Returns whether the preview of common can be showed or not" - (and company-common - (or (eq (company-call-backend 'ignore-case) 'keep-prefix) - (string-prefix-p company-prefix company-common)))) - -(defun company-preview-common-frontend (command) - "`company-mode' frontend preview the common part of candidates." - (when (or (not (memq command '(post-command unhide))) - (company-preview-common--show-p)) - (pcase command - (`pre-command (company-preview-hide)) - ((or 'post-command 'unhide) - (company-preview-show-at-point (point) company-common)) - (`hide (company-preview-hide))))) - -;;; echo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar-local company-echo-last-msg nil) - -(defvar company-echo-timer nil) - -(defvar company-echo-delay .01) - -(defcustom company-echo-truncate-lines t - "Whether frontend messages written to the echo area should be truncated." - :type 'boolean - :package-version '(company . "0.9.3")) - -(defun company-echo-show (&optional getter) - (let ((last-msg company-echo-last-msg) - (message-log-max nil) - (message-truncate-lines company-echo-truncate-lines)) - (when getter - (setq company-echo-last-msg (funcall getter))) - ;; Avoid modifying the echo area if we don't have anything to say, and we - ;; didn't put the previous message there (thus there's nothing to clear), - ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=62816#20 - (if (not (member company-echo-last-msg '(nil ""))) - (message "%s" company-echo-last-msg) - (unless (member last-msg '(nil "")) - (message ""))))) - -(defun company-echo-show-soon (&optional getter delay) - (company-echo-cancel) - (setq company-echo-timer (run-with-timer (or delay company-echo-delay) - nil - 'company-echo-show getter))) - -(defun company-echo-cancel (&optional unset) - (when company-echo-timer - (cancel-timer company-echo-timer)) - (when unset - (setq company-echo-timer nil))) - -(defun company-echo-format () - (let ((selection (or company-selection 0))) - (let ((limit (window-body-width (minibuffer-window))) - (len -1) - (candidates (nthcdr selection company-candidates)) - (numbered (if company-show-quick-access selection 99999)) - (qa-keys-len (length company-quick-access-keys)) - comp msg) - - (while candidates - (setq comp (propertize - (company-reformat (company--clean-string (pop candidates))) - 'face - 'company-echo) - len (+ len 1 (length comp))) - (let ((beg 0) - (end (string-width (or company-common "")))) - (when (< numbered qa-keys-len) - (let ((qa-hint - (format "%s: " (funcall - company-quick-access-hint-function - numbered)))) - (setq beg (string-width qa-hint) - end (+ beg end)) - (cl-incf len beg) - (setq comp (propertize (concat qa-hint comp) 'face 'company-echo))) - (cl-incf numbered)) - ;; FIXME: Add support for the `match' backend action, and thus, - ;; non-prefix matches. - (add-text-properties beg end '(face company-echo-common) comp)) - (if (>= len limit) - (setq candidates nil) - (push comp msg))) - - (mapconcat 'identity (nreverse msg) " ")))) - -(defun company-echo-strip-common-format () - (let ((selection (or company-selection 0))) - (let ((limit (window-body-width (minibuffer-window))) - (len (+ (length company-prefix) 2)) - (candidates (nthcdr selection company-candidates)) - (numbered (if company-show-quick-access selection 99999)) - (qa-keys-len (length company-quick-access-keys)) - comp msg) - - (while candidates - (setq comp (company-strip-prefix (pop candidates)) - len (+ len 2 (length comp))) - (when (< numbered qa-keys-len) - (let ((qa-hint (format " (%s)" - (funcall company-quick-access-hint-function - numbered)))) - (setq comp (concat comp qa-hint)) - (cl-incf len (string-width qa-hint))) - (cl-incf numbered)) - (if (>= len limit) - (setq candidates nil) - (push (propertize comp 'face 'company-echo) msg))) - - (concat (propertize company-prefix 'face 'company-echo-common) "{" - (mapconcat 'identity (nreverse msg) ", ") - "}")))) - -(defun company-echo-hide () - (unless (equal company-echo-last-msg "") - (setq company-echo-last-msg "") - (company-echo-show))) - -(defun company-echo-frontend (command) - "`company-mode' frontend showing the candidates in the echo area." - (pcase command - (`post-command (company-echo-show-soon 'company-echo-format 0)) - (`hide (company-echo-hide)))) - -(defun company-echo-strip-common-frontend (command) - "`company-mode' frontend showing the candidates in the echo area." - (pcase command - (`post-command (company-echo-show-soon 'company-echo-strip-common-format 0)) - (`hide (company-echo-hide)))) - -(defun company-echo-metadata-frontend (command) - "`company-mode' frontend showing the documentation in the echo area." - (pcase command - (`post-command (company-echo-show-soon 'company-fetch-metadata)) - (`unhide (company-echo-show)) - (`hide (company-echo-hide)))) - -(provide 'company) -;;; company.el ends here diff --git a/elpa/company-0.10.2/company.info b/elpa/company-0.10.2/company.info @@ -1,1707 +0,0 @@ -This is docv3QUJv.info, produced by makeinfo version 6.8 from -company.texi. - -This user manual is for Company version 0.10.0 (16 April 2023). - -Copyright © 2021-2023 Free Software Foundation, Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.3 or any later version published by the Free Software - Foundation. -INFO-DIR-SECTION Emacs misc features -START-INFO-DIR-ENTRY -* Company: (company). A modular text completion framework. -END-INFO-DIR-ENTRY - - -File: docv3QUJv.info, Node: Top, Next: Overview, Up: (dir) - -Company -******* - -Company is a modular text completion framework for GNU Emacs. - -The goal of this document is to lay out the foundational knowledge of -the package, so that the readers of the manual could competently start -adapting Company to their needs and preferences. - -This user manual is for Company version 0.10.0 (16 April 2023). - -Copyright © 2021-2023 Free Software Foundation, Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.3 or any later version published by the Free Software - Foundation. - -* Menu: - -* Overview:: Terminology and Structure -* Getting Started:: Quick Start Guide -* Customization:: User Options -* Frontends:: Frontends Usage Instructions -* Backends:: Backends Usage Instructions -* Troubleshooting:: When Something Goes Wrong -* Index:: - -— The Detailed Node Listing — - -Overview - -* Terminology:: -* Structure:: - -Getting Started - -* Installation:: -* Initial Setup:: -* Usage Basics:: -* Commands:: - -Customization - -* Customization Interface:: -* Configuration File:: - -Frontends - -* Tooltip Frontends:: -* Preview Frontends:: -* Echo Frontends:: -* Candidates Search:: -* Filter Candidates:: -* Quick Access a Candidate:: - -Backends - -* Backends Usage Basics:: -* Grouped Backends:: -* Package Backends:: -* Candidates Post-Processing:: - - - -File: docv3QUJv.info, Node: Overview, Next: Getting Started, Prev: Top, Up: Top - -1 Overview -********** - -“Company” is a modular text completion framework for GNU Emacs. - -In other words, it is a package for retrieving, manipulating, and -displaying text completion candidates. It aims to assist developers, -writers, and scientists during code and text writing. - -* Menu: - -* Terminology:: -* Structure:: - - -File: docv3QUJv.info, Node: Terminology, Next: Structure, Up: Overview - -1.1 Terminology -=============== - -“Completion” is an act of intelligibly guessing possible variants of -words based on already typed characters. To “complete” a word means to -insert a correctly guessed variant into the buffer. - -Consequently, the “candidates” are the aforementioned guessed variants -of words. Each of the candidates has the potential to be chosen for -successful completion. And each of the candidates contains the -initially typed characters: either only at the beginning (so-called -“prefix matches”), or also inside (“non-prefix matches”) of a candidate -(1). - -The package’s name “Company” is based on the combination of the two -words: ‘Complete’ and ‘Anything’. These words reflect the package’s -commitment to handling completion candidates and its extensible nature -allowing it to cover a wide range of usage scenarios. - - ---------- Footnotes ---------- - - (1) A good starting point to learn about types of matches is to play -with the Emacs’s user option ‘completion-styles’. For illustrations on -how Company visualizes the matches, *note Frontends::. - - -File: docv3QUJv.info, Node: Structure, Prev: Terminology, Up: Overview - -1.2 Structure -============= - -The Company is easily extensible because its significant building blocks -are pluggable modules: backends (*note Backends::) and frontends (*note -Frontends::). - -The “backends” are responsible for retrieving completion candidates; -which are then outputted by the “frontends”. For an easy and quick -initial setup, Company is supplied with the preconfigured sets of the -backends and frontends. The default behavior of the modules can be -adjusted per particular needs, goals, and preferences. It is also -typical to utilize backends from a variety of third-party libraries -(https://github.com/company-mode/company-mode/wiki/Third-Party-Packages), -developed to be pluggable with Company. - -But Company consists not only of the backends and frontends. - -A core of the package plays the role of a controller, connecting the -modules, making them work together; and exposing configurations and -commands for a user to operate with. For more details, *note -Customization:: and *note Commands::. - -Also, Company is bundled with an alternative workflow configuration -“company-tng” — defining ‘company-tng-frontend’, ‘company-tng-mode’, and -‘company-tng-map’ — that allows performing completion with just <TAB>. -To enable this configuration, add the following line to the Emacs -initialization file (*note (emacs)Init File::): - - (add-hook 'after-init-hook 'company-tng-mode) - - -File: docv3QUJv.info, Node: Getting Started, Next: Customization, Prev: Overview, Up: Top - -2 Getting Started -***************** - -This chapter provides basic instructions for Company setup and usage. - -* Menu: - -* Installation:: -* Initial Setup:: -* Usage Basics:: -* Commands:: - - -File: docv3QUJv.info, Node: Installation, Next: Initial Setup, Up: Getting Started - -2.1 Installation -================ - -Company package is distributed via commonly used package archives in a -form of both stable and development releases. To install Company, type -‘M-x package-install <RET> company <RET>’. - -For more details on Emacs package archives, *note (emacs)Packages::. - - -File: docv3QUJv.info, Node: Initial Setup, Next: Usage Basics, Prev: Installation, Up: Getting Started - -2.2 Initial Setup -================= - -The package Company provides a minor mode “company-mode”. - -To activate the _company-mode_, execute the command ‘M-x company-mode’ -that toggles the mode on and off. When it is switched on, the mode line -(*note (emacs)Mode line::) should indicate its presence with an -indicator ‘company’. - -After _company-mode_ had been enabled, the package auto-starts -suggesting completion candidates. The candidates are retrieved and -shown according to the typed characters and the default (until a user -specifies otherwise) configurations. - -To have Company always enabled for the following sessions, add the line -‘(global-company-mode)’ to the Emacs configuration file (*note -(emacs)Init File::). - - -File: docv3QUJv.info, Node: Usage Basics, Next: Commands, Prev: Initial Setup, Up: Getting Started - -2.3 Usage Basics -================ - -By default — having _company-mode_ enabled (*note Initial Setup::) — a -tooltip with completion candidates is shown when a user types in a few -characters. - -To initiate completion manually, use the command ‘M-x company-complete’. - -To select next or previous of the shown completion candidates, use -respectively key bindings ‘C-n’ and ‘C-p’, then do one of the following: - - • Hit <RET> to choose a selected candidate for completion. - - • Hit <TAB> to complete with the “common part”: characters present at - the beginning of all the candidates. - - • Hit ‘C-g’ to stop activity of Company. - - -File: docv3QUJv.info, Node: Commands, Prev: Usage Basics, Up: Getting Started - -2.4 Commands -============ - -Under the hood, mentioned in the previous section keys are bound to the -commands of the out-of-the-box Company. - -‘C-n’ -‘M-n’ - Select the next candidate (‘company-select-next-or-abort’, - ‘company-select-next’). - -‘C-p’ -‘M-p’ - Select the previous candidate (‘company-select-previous-or-abort’, - ‘company-select-previous’). - -‘RET’ -‘<return>’ - Insert the selected candidate (‘company-complete-selection’). - -‘TAB’ -‘<tab>’ - Insert the common part of all the candidates - (‘company-complete-common’). - -‘C-g’ -‘<ESC ESC ESC>’ - Cancel _company-mode_ activity (‘company-abort’). - -‘C-h’ -‘<F1>’ - Display a buffer with the documentation for the selected candidate - (‘company-show-doc-buffer’). With a prefix argument (‘C-u C-h’, - ‘C-u <F1>’), this command toggles between temporary showing the - documentation and keeping the documentation buffer up-to-date - whenever the selection changes. - -‘C-w’ - Display a buffer with the definition of the selected candidate - (‘company-show-location’). - -The full list of the default key bindings is stored in the variables -‘company-active-map’ and ‘company-search-map’ (1). - -Moreover, Company is bundled with a number of convenience commands that -do not have default key bindings defined. The following examples -illustrate how to assign key bindings to such commands. - - (global-set-key (kbd "<tab>") #'company-indent-or-complete-common) - - (with-eval-after-load 'company - (define-key company-active-map (kbd "M-/") #'company-complete)) - - (with-eval-after-load 'company - (define-key company-active-map - (kbd "TAB") - #'company-complete-common-or-cycle) - (define-key company-active-map - (kbd "<backtab>") - (lambda () - (interactive) - (company-complete-common-or-cycle -1)))) - -In the same manner, an additional key can be assigned to a command or a -command can be unbound from a key. For instance: - - (with-eval-after-load 'company - (define-key company-active-map (kbd "M-.") #'company-show-location) - (define-key company-active-map (kbd "RET") nil)) - - ---------- Footnotes ---------- - - (1) For a more user-friendly output of the pre-defined key bindings, -utilize ‘M-x describe-keymap <RET> company-active-map’ or -‘C-h f <RET> company-mode’. - - -File: docv3QUJv.info, Node: Customization, Next: Frontends, Prev: Getting Started, Up: Top - -3 Customization -*************** - -Emacs provides two equally acceptable ways for user preferences -configuration: via customization interface (for more details, *note -(emacs)Easy Customization::) and a configuration file (*note (emacs)Init -File::). Naturally, Company can be configured by both of these -approaches. - -* Menu: - -* Customization Interface:: -* Configuration File:: - - -File: docv3QUJv.info, Node: Customization Interface, Next: Configuration File, Up: Customization - -3.1 Customization Interface -=========================== - -In order to employ the customization interface, run -‘M-x customize-group <RET> company’. - -This interface outputs all the options available for user customization, -so you may find it beneficial to review this list even if you are going -to configure Company with the configuration file. - -For instructions on how to change the settings, *note (emacs)Changing a -Variable::. - - -File: docv3QUJv.info, Node: Configuration File, Prev: Customization Interface, Up: Customization - -3.2 Configuration File -====================== - -Company is a customization-rich package. This section lists some of the -core settings that influence the overall behavior of the _company-mode_. - - -- User Option: company-minimum-prefix-length - This is one of the values (together with ‘company-idle-delay’), - based on which Company auto-stars looking up completion candidates. - This option configures how many characters have to be typed in by a - user before candidates start to be collected and displayed. An - often choice nowadays is to configure this option to a lower number - than the default value of ‘3’. - - -- User Option: company-idle-delay - This is the second of the options that configure Company’s - auto-start behavior (together with - ‘company-minimum-prefix-length’). The value of this option defines - how fast Company is going to react to the typed input, such that - setting ‘company-idle-delay’ to ‘0’ makes Company react - immediately, ‘nil’ disables auto-starting, and a larger value - postpones completion auto-start for that number of seconds. For an - even fancier setup, set this option value to a predicate function, - as shown in the following example: - - (setq company-idle-delay - (lambda () (if (company-in-string-or-comment) nil 0.3))) - - -- User Option: company-global-modes - This option allows to specify in which major modes _company-mode_ - can be enabled by ‘(global-company-mode)’. *Note Initial Setup::. - The default value of ‘t’ enables Company in all major modes. - Setting ‘company-global-modes’ to ‘nil’ equal in action to toggling - off _global-company-mode_. Providing a list of major modes results - in having _company-mode_ enabled in the listed modes only. For the - opposite result, provide a list of major modes with ‘not’ being the - first element of the list, as shown in the following example: - - (setq company-global-modes '(not erc-mode message-mode eshell-mode)) - - -- User Option: company-selection-wrap-around - Enable this option to loop (cycle) the candidates’ selection: after - selecting the last candidate on the list, a command to select the - next candidate does so with the first candidate. By default, this - option is disabled, which means the selection of the next candidate - stops on the last item. The selection of the previous candidate is - influenced by this option similarly. - - -- User Option: company-require-match - To allow typing in characters that don’t match the candidates, set - the value of this option to ‘nil’. For an opposite behavior (that - is, to disallow non-matching input), set it to ‘t’. By default, - Company is configured to require a matching input only if a user - manually enables completion or selects a candidate; by having the - option configured to call the function ‘company-explicit-action-p’. - - -- User Option: company-lighter-base - This user options allows to configure a string indicator of the - enabled _company-mode_ in the mode line. The default value is - ‘company’. - - -- User Option: company-insertion-on-trigger - One more pair of the user options may instruct Company to complete - with the selected candidate by typing one of the - ‘company-insertion-triggers’. The user option - ‘company-insertion-on-trigger’ can be enabled or disabled by - setting its value to one of: ‘nil’, ‘t’, or a predicate function - name. *note Predicate: (eintr)Wrong Type of Argument. - - -- User Option: company-insertion-triggers - This option has an effect only when ‘company-insertion-on-trigger’ - is enabled. The value can be one of: a string of characters, a - list of syntax description characters (*note (elisp)Syntax Class - Table::), or a predicate function. By default, this user option is - set to the list of the syntax characters: ‘(?\ ?\) ?.)’, which - translates to the whitespaces, close parenthesis, and punctuation. - It is safe to configure the value to a character that can - potentially be part of a valid completion; in this case, Company - does not treat such characters as triggers. - -Hooks ------ - -Company exposes the following life-cycle hooks: - - -- User Option: company-completion-started-hook - - -- User Option: company-completion-cancelled-hook - - -- User Option: company-completion-finished-hook - - -- User Option: company-after-completion-hook - - -File: docv3QUJv.info, Node: Frontends, Next: Backends, Prev: Customization, Up: Top - -4 Frontends -*********** - -Company is packaged with several frontends and provides a predefined set -of enabled frontends. A list of the enabled frontends can be changed by -configuring the user option ‘company-frontends’. - -Each frontend is simply a function that receives a command and acts -accordingly to it: outputs candidates, hides its output, refreshes -displayed data, and so on. - -All of the Company frontends can be categorized by the type of the -output into the three groups: “tooltip-”, “preview-”, and “echo-” -frontends. We overview these groups in the first sections of this -chapter. The sections that follow are dedicated to the ways the -displayed candidates can be searched, filtered, and quick-accessed. - -* Menu: - -* Tooltip Frontends:: -* Preview Frontends:: -* Echo Frontends:: -* Candidates Search:: -* Filter Candidates:: -* Quick Access a Candidate:: - - -File: docv3QUJv.info, Node: Tooltip Frontends, Next: Preview Frontends, Up: Frontends - -4.1 Tooltip Frontends -===================== - -This group of frontends displays completion candidates in an overlayed -tooltip (aka pop-up). Company provides three _tooltip frontends_, -listed below. - - -- Function: company-pseudo-tooltip-unless-just-one-frontend - This is one of the default frontends. It starts displaying a - tooltip only if more than one completion candidate is available, - which nicely combines — and it is done so by default — with - ‘company-preview-if-just-one-frontend’, *note Preview Frontends::. - - -- Function: company-pseudo-tooltip-frontend - This frontend outputs a tooltip for any number of completion - candidates. - - -- Function: company-pseudo-tooltip-unless-just-one-frontend-with-delay - This is a peculiar frontend, that displays a tooltip only if more - than one candidate is available, and only after a delay. The delay - can be configured with the user option - ‘company-tooltip-idle-delay’. A typical use case for plugging in - this frontend would be displaying a tooltip only on a manual - request (when needed), as shown in the following example: - - (setq company-idle-delay 0 - company-tooltip-idle-delay 10 - company-require-match nil - company-frontends - '(company-pseudo-tooltip-unless-just-one-frontend-with-delay - company-preview-frontend - company-echo-metadata-frontend) - company-backends '(company-capf)) - - (global-set-key (kbd "<tab>") - (lambda () - (interactive) - (let ((company-tooltip-idle-delay 0.0)) - (company-complete) - (and company-candidates - (company-call-frontends 'post-command))))) - -User Options ------------- - -To change the _tooltip frontends_ configuration, adjust the following -user options. - - -- User Option: company-tooltip-align-annotations - An “annotation” is a string that carries additional information - about a candidate; such as a data type, function arguments, or - whatever a backend appoints to be a valuable piece of information - about a candidate. By default, the annotations are shown right - beside the candidates. Setting the option value to ‘t’ aligns - annotations to the right side of the tooltip. - - (setq company-tooltip-align-annotations t) - - - - -- User Option: company-tooltip-annotation-padding - Adds left padding to the candidates’ annotations. It is disabled - by default. If ‘company-tooltip-align-annotations’ is enabled, - ‘company-tooltip-annotation-padding’ defines the minimum spacing - between a candidate and annotation, with the default value of 1. - - (setq company-tooltip-annotation-padding 1) - - -- User Option: company-tooltip-limit - Controls the maximum number of the candidates shown simultaneously - in the tooltip (the default value is ‘10’). When the number of the - available candidates is larger than this option’s value, Company - paginates the results. - - (setq company-tooltip-limit 4) - - - - -- User Option: company-tooltip-offset-display - Use this option to choose in which way to output paginated results. - The default value is ‘scrollbar’. Another supported value is - ‘lines’; choose it to show the quantity of the candidates not - displayed by the current tooltip page. - - (setq company-tooltip-offset-display 'lines) - - - - -- User Option: company-tooltip-minimum - This user option acts only when a tooltip is shown close to the - bottom of a window. It guarantees visibility of this number of - completion candidates below point. When the number of lines - between point and the bottom of a window is less than - ‘company-tooltip-minimum’ value, the tooltip is displayed above - point. - - (setq company-tooltip-minimum 4) - - - - - - - -- User Option: company-tooltip-flip-when-above - This is one of the fancy features Company has to suggest. When - this setting is enabled, no matter if a tooltip is shown above or - below point, the candidates are always listed starting near point. - (Putting it differently, the candidates are mirrored horizontally - if a tooltip changes its position, instead of being commonly listed - top-to-bottom.) - - (setq company-tooltip-flip-when-above t) - - - - -- User Option: company-tooltip-minimum-width - Sets the minimum width of a tooltip, excluding the margins and the - scroll bar. Changing this value especially makes sense if a user - navigates between tooltip pages. Keeping this value at the default - ‘0’ allows Company to always adapt the width of the tooltip to the - longest shown candidate. Enlarging ‘company-tooltip-minimum-width’ - prevents possible significant shifts in the width of the tooltip - when navigating to the next/previous tooltip page. (For an - alternate solution, see ‘company-tooltip-width-grow-only’.) - - -- User Option: company-tooltip-width-grow-only - This is another way to restrict auto-adaptation of the tooltip - width (another is by adjusting ‘company-tooltip-minimum-width’ - value) when navigating between the tooltip pages. - - -- User Option: company-tooltip-maximum-width - This user option controls the maximum width of the tooltip inner - area. By default, its value is pseudo-limitless, potentially - permitting the output of extremely long candidates. But if long - lines become an issue, set this option to a smaller number, such as - ‘60’ or ‘70’. - - -- User Option: company-tooltip-margin - Controls the width of the “margin” on the sides of the tooltip - inner area. If ‘company-format-margin-function’ is set, - ‘company-tooltip-margin’ defines only the right margin. - - (setq company-tooltip-margin 3) - - - -Candidates Icons ----------------- - -An “icon” is an image or a text that represents a candidate’s kind; it -is displayed in front of a candidate. The term “kind” here stands for a -high-level category a candidate fits into. (Such as ‘array’, -‘function’, ‘file’, ‘string’, ‘color’, etc. For an extended list of the -possible _kinds_, see the user option ‘company-text-icons-mapping’ or -the variable ‘company-vscode-icons-mapping’.) - - -- User Option: company-format-margin-function - Allows setting a function to format the left margin of a tooltip - inner area; namely, to output candidate’s _icons_. The predefined - formatting functions are listed below. A user may also set this - option to a custom function. To disable left margin formatting, - set the value of the option to ‘nil’ (this way control over the - size of the left margin returns to the user option - ‘company-tooltip-margin’). - - -- Function: company-vscode-dark-icons-margin - -- Function: company-vscode-light-icons-margin - These functions utilize VSCode dark and light theme icon sets (1). - The related two user options are ‘company-icon-size’ and - ‘company-icon-margin’. - - - - -- Function: company-text-icons-margin - This function produces letters and symbols formatted according to - the ‘company-text-icons-format’. The rest of the user options - affecting this function behavior are listed below. - - - - -- Function: company-dot-icons-margin - This function produces a colored Unicode symbol of a circle - formatted according to the ‘company-dot-icons-format’. Other user - options that affect the resulting output are listed below. - - - -The following user options influence appearance of the _text_ and _dot_ -_icons_. - - -- User Option: company-text-icons-mapping - Lists candidates’ _kinds_ with their corresponding _icons_ - configurations. - - -- User Option: company-text-face-extra-attributes - A list of face attributes to be applied to the _icons_. - - (setq company-text-face-extra-attributes - '(:weight bold :slant italic)) - - - - -- User Option: company-text-icons-add-background - If this option is enabled, when an _icon_ doesn’t have a background - configured by ‘company-text-icons-mapping’, then a generated - background is applied. - - (setq company-text-icons-add-background t) - - - - -- Function: company-detect-icons-margin - This is the default margin formatting function, that applies one of - the ‘company-vscode-*-icons-margin’ functions if ‘vscode’ icons set - is supported; otherwise applies a ‘company-text-icons-margin’ - function. - -Faces ------ - -Out-of-the-box Company defines and configures distinguished faces (*note -(emacs)Faces::) for light and dark themes. Moreover, some of the -built-in and third-party themes fine-tune Company to fit their palettes. -That is why there’s often no real need to make such adjustments on a -user side. However, this chapter presents some hints on where to start -customizing Company interface. - -Namely, the look of a tooltip is controlled by the ‘company-tooltip*’ -named faces. - -The following example hints how a user may approach tooltip faces -customization: - - (custom-set-faces - '(company-tooltip - ((t (:background "ivory" :foreground "MistyRose3")))) - '(company-tooltip-selection - ((t (:background "LemonChiffon1" :foreground "MistyRose4")))) - '(company-tooltip-common ((t (:weight bold :foreground "pink1")))) - '(company-scrollbar-fg ((t (:background "ivory3")))) - '(company-scrollbar-bg ((t (:background "ivory2")))) - '(company-tooltip-annotation ((t (:foreground "MistyRose2"))))) - - - - ---------- Footnotes ---------- - - (1) SVG images support has to be enabled in Emacs for these icons set -to be used. The supported images types can be checked with ‘C-h v -image-types’. Before compiling Emacs, make sure ‘librsvg’ is installed -on your system. - - -File: docv3QUJv.info, Node: Preview Frontends, Next: Echo Frontends, Prev: Tooltip Frontends, Up: Frontends - -4.2 Preview Frontends -===================== - -Frontends in this group output a completion candidate or a common part -of the candidates temporarily inline, as if a word had already been -completed (1). - - -- Function: company-preview-if-just-one-frontend - This is one of the frontends enabled by default. This frontend - outputs a preview if only one completion candidate is available; it - is a good suit to be combined with - ‘company-pseudo-tooltip-unless-just-one-frontend’, *note Tooltip - Frontends::. - - -- Function: company-preview-frontend - This frontend outputs the first of the available completion - candidates inline for a preview. - - -- Function: company-preview-common-frontend - As the name of this frontend suggests, it outputs for a preview - only a common part of the candidates. - -The look of the preview is controlled by the following faces: -‘company-preview’, ‘company-preview-common’, and -‘company-preview-search’. - - - - - - - ---------- Footnotes ---------- - - (1) The candidates retrieved according to ‘non-prefix’ matches (*note -Terminology::) may be shown in full after point. - - -File: docv3QUJv.info, Node: Echo Frontends, Next: Candidates Search, Prev: Preview Frontends, Up: Frontends - -4.3 Echo Frontends -================== - -The frontends listed in this section display information in the Emacs’s -echo area, *note (emacs)Echo Area::. - - -- Function: company-echo-metadata-frontend - This frontend is a part of the predefined frontends set. Its - responsibility is to output a short documentation string for a - completion candidate in the echo area. - - - - -The last pair of the built-in frontends isn’t that commonly used and not -as full-featured as the previously reviewed _tooltip-_ and _preview-_ -frontends, but still, feel free to play with them and have some fun! - - -- Function: company-echo-frontend - This frontend outputs all the available completion candidates in - the echo area. - - - - -- Function: company-echo-strip-common-frontend - It acts similarly to the previous frontend but outputs a common - part of the candidates once for all of them. - - - - -- User Option: company-echo-truncate-lines - This is the only _echo frontends_ targeted setting. When enabled, - the output is truncated to fit the echo area. This setting is set - to ‘t’ by default. - -To apply visual changes to the output of these frontends, configure the -faces ‘company-echo’ and ‘company-echo-common’. - - -File: docv3QUJv.info, Node: Candidates Search, Next: Filter Candidates, Prev: Echo Frontends, Up: Frontends - -4.4 Candidates Search -===================== - -By default, when _company-mode_ is in action, a key binding ‘C-s’ starts -looking for matches to additionally typed characters among the displayed -candidates. When a search is initiated, an indicator -‘Search: CHARACTERS’ is shown in the Emacs’s mode line. - -To quit the search mode, hit ‘C-g’. - - -- User Option: company-search-regexp-function - The value of this user option must be a function that interprets - the search input. By default it is set to the function - ‘regexp-quote’, with looks for an exact match. Company defines - several more functions suitable for this option. They are listed - below. - - -- Function: company-search-words-regexp - Searches for words separated with spaces in the given order. - - -- Function: company-search-words-in-any-order-regexp - Searches for words separated with spaces in any order. - - -- Function: company-search-flex-regexp - Searches for characters in the given order, with anything in - between. - -Search matches are distinguished by the ‘company-tooltip-search’ and -‘company-tooltip-search-selection’ faces. - - - - -File: docv3QUJv.info, Node: Filter Candidates, Next: Quick Access a Candidate, Prev: Candidates Search, Up: Frontends - -4.5 Filter Candidates -===================== - -Candidates filtering is started by typing the default key binding -‘C-M-s’. Filtering acts on a par with the search (*note Candidates -Search::), indicating its activation by the text ‘Filter: CHARACTERS’ in -the mode line and influencing the displayed candidates. The difference -is that the filtering, as its name suggests, keeps displaying only the -matching candidates (in addition to distinguishing the matches with a -face). - -To quit the filtering, hit ‘C-g’. To toggle between search and filter -states, use key binding ‘C-o’. - - - - -File: docv3QUJv.info, Node: Quick Access a Candidate, Prev: Filter Candidates, Up: Frontends - -4.6 Quick Access a Candidate -============================ - -Company provides a way to choose a candidate for completion without -having to navigate to that candidate: by hitting one of the quick-access -keys. By default, quick-access key bindings utilize a modifier <META> -and one of the digits, such that pressing ‘M-1’ completes with the first -candidate on the list and ‘M-0’ with the tenth candidate. - -If ‘company-show-quick-access’ is enabled, _tooltip-_ and _echo-_ -frontends show quick-access hints. - - (setq company-show-quick-access 'left) - - - - - - - - - -To customize the key bindings, either do it via Customization Interface -(*note Customization Interface::) or use the following approach: - - (custom-set-variables - '(company-quick-access-keys '("a" "o" "e" "u" "i")) - '(company-quick-access-modifier 'super)) - -A modifier should be one of ‘meta’, ‘super’, ‘hyper’, ‘ control’. - -The following example applies a bit of customization and demonstrates -how to change quick-access hints faces. - - (setq company-show-quick-access t) - - (custom-set-faces - '(company-tooltip-quick-access ((t (:foreground "pink1")))) - '(company-tooltip-quick-access-selection - ((t (:foreground "pink1" :slant italic))))) - - - - -File: docv3QUJv.info, Node: Backends, Next: Troubleshooting, Prev: Frontends, Up: Top - -5 Backends -********** - -We can metaphorically say that each backend is like an engine. (The -reality is even better since backends are just functions.) Fueling such -an engine with a command causes the production of material for Company -to move further on. Typically, moving on means outputting that material -to a user via one or several configured frontends, *note Frontends::. - -Just like Company provides a preconfigured list of the enabled -frontends, it also defines a list of the backends to rely on by default. -This list is stored in the user option ‘company-backends’. The -docstring of this variable has been a source of valuable information for -years. That’s why we’re going to stick to a tradition and suggest -reading the output of ‘C-h v company-backends’ for insightful details -about backends. Nevertheless, the fundamental concepts are described in -this user manual too. - -* Menu: - -* Backends Usage Basics:: -* Grouped Backends:: -* Package Backends:: -* Candidates Post-Processing:: - - -File: docv3QUJv.info, Node: Backends Usage Basics, Next: Grouped Backends, Up: Backends - -5.1 Backends Usage Basics -========================= - -One of the significant concepts to understand about Company is that the -package relies on one backend at a time (1). The backends are invoked -one by one, in the sequential order of the items on the -‘company-backends’ list. - -The name of the currently active backend is shown in the mode line and -in the output of the command ‘M-x company-diag’. - -In most cases (mainly to exclude false-positive results), the next -backend is not invoked automatically. For the purpose of invoking the -next backend, use the command ‘company-other-backend’: either by calling -it with ‘M-x’ or by binding the command to the keys of your choice, such -as: - - (global-set-key (kbd "C-c C-/") #'company-other-backend) - -It is also possible to specifically start a backend with the command -‘M-x company-begin-backend’ or by calling a backend by its name, for -instance: ‘M-x company-capf’. As usual for Emacs, such backends calls -can be assigned to key bindings, for example: - - (global-set-key (kbd "C-c y") 'company-yasnippet) - - ---------- Footnotes ---------- - - (1) The grouped backends act as one complex backend. *Note Grouped -Backends::. - - -File: docv3QUJv.info, Node: Grouped Backends, Next: Package Backends, Prev: Backends Usage Basics, Up: Backends - -5.2 Grouped Backends -==================== - -In many cases, it can be desirable to receive candidates from several -backends simultaneously. This can be achieved by configuring “grouped -backends”: a sub-list of backends in the ‘company-backends’ list, that -is handled specifically by Company. - -The most important part of this handling is the merge of the completion -candidates from the grouped backends. (But only from the backends that -return the same _prefix_ value, see ‘C-h v company-backends’ for more -details.) - -To keep the candidates organized in accordance with the grouped backends -order, add the keyword ‘:separate’ to the list of the grouped backends. -The following example illustrates this. - - (defun my-text-mode-hook () - (setq-local company-backends - '((company-dabbrev company-ispell :separate) - company-files))) - - (add-hook 'text-mode-hook #'my-text-mode-hook) - -Another keyword ‘:with’ helps to make sure the results from major/minor -mode agnostic backends (such as _company-yasnippet_, -_company-dabbrev-code_) are returned without preventing results from -context-aware backends (such as _company-capf_ or _company-clang_). For -this feature to work, put backends dependent on a mode at the beginning -of the grouped backends list, then put a keyword ‘:with’, and only then -put context agnostic backend(s), as shown in the following concise -example: - - (setq company-backends '((company-capf :with company-yasnippet))) - - -File: docv3QUJv.info, Node: Package Backends, Next: Candidates Post-Processing, Prev: Grouped Backends, Up: Backends - -5.3 Package Backends -==================== - -The following sections give a short overview of the commonly used -backends bundled with Company. Each section is devoted to one of the -roughly outlined groups of the backends. - -Some of the backends expose user options for customization; a few of -these options are introduced below. For those who would like to fetch -the full list of a backend’s user options, we suggest doing one of the -following: - - • Execute command ‘M-x customize-group <RET> <backend-name>’. - - • Open the source file of the backend and run - ‘M-x occur <RET> ^(defcustom’. - - − Optionally, search for the matches with - ‘M-x isearch <RET> (defcustom’. - -* Menu: - -* Code Completion:: -* Text Completion:: -* File Name Completion:: -* Template Expansion:: - - -File: docv3QUJv.info, Node: Code Completion, Next: Text Completion, Up: Package Backends - -5.3.1 Code Completion ---------------------- - - -- Function: company-capf - In the Emacs’s world, the current tendency is to have the - completion logic provided by ‘completion-at-point-functions’ (CAPF) - implementations. [Among the other things, this is what the popular - packages that support language server protocol (LSP) also rely on.] - - Since _company-capf_ works as a bridge to the standard CAPF - facility, it is probably the most often used and recommended - backend nowadays, including for Emacs Lisp coding. - - Just to illustrate, the following minimal backends setup - - (setq company-backends '((company-capf company-dabbrev-code))) - - might cover a large number of basic use cases, especially so in - major modes that have CAPF support implemented. - - For more details on CAPF, *note (elisp)Completion in Buffers::. - - -- Function: company-dabbrev-code - This backend works similarly to the built-in Emacs package - _dabbrev_, searching for completion candidates inside the contents - of the open buffer(s). Internally, its based on the backend - _company-dabbrev_ (*note Text Completion::). - - -- Function: company-keywords - This backend provides completions for many of the widely spread - programming languages _keywords_: words bearing specific meaning in - a language. - - -- Function: company-clang - As the name suggests, use this backend to get completions from - _Clang_ compiler; that is, for the languages in the _C_ language - family: _C_, _C++_, _Objective-C_. - - -- Function: company-semantic - This backend relies on a built-in Emacs package that provides - language-aware editing commands based on source code parsers, *note - (emacs)Semantic::. Having enabled _semantic-mode_ makes it to be - used by the CAPF mechanism (*note (emacs)Symbol Completion::), - hence a user may consider enabling _company-capf_ backend instead. - - -- Function: company-etags - This backend works on top of a built-in Emacs package _etags_, - *note (emacs)Tags Tables::. Similarly to aforementioned _Semantic_ - usage, tags-based completions now are a part of the Emacs’ CAPF - facility, therefore a user may consider switching to _company-capf_ - backend. - - -File: docv3QUJv.info, Node: Text Completion, Next: File Name Completion, Prev: Code Completion, Up: Package Backends - -5.3.2 Text Completion ---------------------- - - -- Function: company-dabbrev - This backend works similarly to the built-in Emacs package - _dabbrev_, searching for completion candidates inside the contents - of the open buffer(s). It is one of the often used backends, and - it has several interesting options for configuration. Let’s review - a few of them. - - -- User Option: company-dabbrev-minimum-length - This option sets the minimum length of a completion candidate - to collect from the text. The default value of ‘4’ is - intended to prevent potential performance issues. But in many - scenarios, it may be acceptable to lower this value. Note - that this option also affects the behavior of the - _company-dabbrev-code_ backend. - - (setq company-dabbrev-minimum-length 2) - - -- User Option: company-dabbrev-other-buffers - By default, _company-dabbrev_ collects completion candidates - from all not ignored buffers (see more on that below). This - behavior can be changed to collecting candidates from the - current buffer only (by setting the value to ‘nil’) or from - the buffers with the same major mode: - - (setq company-dabbrev-other-buffers t) - - -- User Option: company-dabbrev-ignore-buffers - The value of this option should be a regexp or a predicate - function that can be used to match a buffer name. The matched - buffers are omitted from the search for completion candidates. - - The last two options described here relate to handling uppercase - and lowercase letters in completion candidates. The illustrative - examples given below can be reproduced in the ‘*scratch*’ buffer, - with the word ‘Enjoy’ typed in, and with this initial setup: - - (setq-local company-backends '(company-dabbrev) - company-dabbrev-other-buffers nil - company-dabbrev-ignore-case nil - company-dabbrev-downcase nil) - - -- User Option: company-dabbrev-ignore-case - This user option controls whether the case is ignored when - collecting completion candidates. When the option is set to - ‘nil’, ‘Enjoy’ is suggested as a completion candidate for the - typed ‘Enj’ letters, but not for ‘enj’. When the option is - set to ‘t’, ‘Enjoy’ is suggested as a candidate for both ‘Enj’ - and ‘enj’ input; note that ‘enj’ prefix is “overwritten” by - completing with the ‘Enjoy’ candidate. The third, default, - type of behavior solves this issue, keeping the case of the - typed prefix (and still collecting candidates - case-insensitively): - - (setq company-dabbrev-ignore-case 'keep-prefix) - - Now we can type ‘enj’, complete it with the suggested ‘Enjoy’, - and _enjoy_ the result. - - -- User Option: company-dabbrev-downcase - This user option controls whether completion candidates are - down-cased before their display. When the option is set to - ‘nil’, no transformation is performed; in the environment - described above, typing ‘Enj’ results in the candidate ‘Enjoy’ - being suggested. When the option is set to ‘t’, the - down-cased candidate ‘enjoy’ is suggested. By default, this - option is set to ‘case-replace’, meaning taking a value of the - Emacs’s variable ‘case-replace’ (‘t’ is the current default). - - - -- Function: company-ispell - This backend returns completion candidates collected by _Ispell_, a - built-in Emacs package that performs spell-checking. *Note - Checking and Correcting Spelling: (emacs)Spelling. Note that - _Ispell_ uses only one dictionary at a time (combining several - dictionaries into one file is an accepted practice). By default, - _company-ispell_ suggests candidates from a dictionary specified by - the Emacs’s setting ‘ispell-complete-word-dict’. - - -- User Option: company-ispell-dictionary - Optionally, set a file path for _company-ispell_ to use - another dictionary. - - -File: docv3QUJv.info, Node: File Name Completion, Next: Template Expansion, Prev: Text Completion, Up: Package Backends - -5.3.3 File Name Completion --------------------------- - - -- Function: company-files - This backend can be used to retrieve completion candidates for the - absolute and relative paths in the directory structure of an - operating system. The behavior of the _company-files_ backend can - be adjusted with the two user options. - - -- User Option: company-files-exclusions - It may be desirable to exclude directories or files from the - list of suggested completion candidates. For example, - someone’s setup might look this way: - - (setq company-files-exclusions '(".git/" ".DS_Store")) - - -- User Option: company-files-chop-trailing-slash - This setting is enabled by default, which results in stripping - off a trailing slash from an inserted directory name. On - typing a trailing slash, the process of completion gets - started again, from inside the just inserted directory. - - Setting ‘company-files-chop-trailing-slash’ to ‘nil’ makes - directory names to be inserted as is, with a trailing slash. - In this case, the completion process can be continued, for - example, either by explicitly calling _company-files_ backend - (*note Backends Usage Basics::) or by starting typing a name - of a file/directory known to be located under the inserted - directory. - - -File: docv3QUJv.info, Node: Template Expansion, Prev: File Name Completion, Up: Package Backends - -5.3.4 Template Expansion ------------------------- - - -- Function: company-abbrev - This is a completion backend for a built-in word abbreviation mode - (*note (emacs)Abbrevs::), that allows completing abbreviations with - their expansions. - - -- Function: company-tempo - A backend for users of Tempo - (https://www.lysator.liu.se/~davidk/elisp/), one more built-in - Emacs package for creating and inserting (expanding) templates. - - -- Function: company-yasnippet - Used as a completion backend for the popular third-party template - system YASnippet (https://github.com/joaotavora/yasnippet). - - -File: docv3QUJv.info, Node: Candidates Post-Processing, Prev: Package Backends, Up: Backends - -5.4 Candidates Post-Processing -============================== - -A list of completion candidates, supplied by a backend, can be -additionally manipulated (reorganized, reduced, sorted, etc) before its -output. This is done by adding a processing function name to the user -option ‘company-transformers’ list, for example: - - (setq company-transformers '(delete-consecutive-dups - company-sort-by-occurrence)) - -Company is bundled with several such transformer functions. They are -listed below. - - -- Function: company-sort-by-occurrence - Sorts candidates using ‘company-occurrence-weight-function’ - algorithm. - - -- User Option: company-occurrence-weight-function - Can be set to one of ‘company-occurrence-prefer-closest-above’ - (default) or ‘company-occurrence-prefer-any-closest’. This user - option defines the behavior of the ‘company-sort-by-occurrence’ - transformer function. - - -- Function: company-sort-by-backend-importance - Sorts candidates as two priority groups, differentiated by the - keyword ‘:with’ (*note Grouped Backends::). Backends positioned in - the backends list before the keyword ‘:with’ are treated as more - important. - - -- Function: company-sort-prefer-same-case-prefix - Gives preference to the candidates that match the prefix - case-insensitively. - - -File: docv3QUJv.info, Node: Troubleshooting, Next: Index, Prev: Backends, Up: Top - -6 Troubleshooting -***************** - -If something goes wrong, the first thing we recommend doing is to -execute command ‘M-x company-diag’ and thoroughly study its output. - -This command outputs important details about the internal workings of -Company at the moment of the ‘company-diag’ command execution, including -a responsible backend and a list of completion candidates provided by -it. - -Based on the value of the ‘Used backend’ in the output of the command -‘M-x company-diag’, these possible actions may follow: - - • If the used backend does not belong to the Company package, report - the issue to the corresponding third-party package maintainer(s). - - • If the used backend is ‘company-capf’, then take a look at the line - starting with ‘Value of c-a-p-f:’. The issue could have been - caused by a function listed there. To identify to which package it - belongs, type ‘M-x find-function <RET> <function-name> <RET>’. - -If the aforementioned steps didn’t help to find the cause of the issue, -then file a bug report to -the Company Issue Tracker (https://github.com/company-mode/company-mode/issues), -attaching the following information: - - 1. Output of the ‘M-x company-diag’. - - 2. The exact error message: you can find it in the ‘*Messages*’ - buffer. - - 3. The steps to reproduce the behavior. Ideally, if you can, starting - with a bare Emacs session: ‘emacs -Q’. - - 4. The backtrace of the error, which you can get by running the - command: ‘M-x toggle-debug-on-error’ before reproducing the error. - - -File: docv3QUJv.info, Node: Index, Prev: Troubleshooting, Up: Top - -Index -***** - -* Menu: - -* Key Index:: -* Variable Index:: -* Function Index:: -* Concept Index:: - - -File: docv3QUJv.info, Node: Key Index, Next: Variable Index, Up: Index - -Key Index -========= - - -* Menu: - -* C-g: Usage Basics. (line 20) -* C-g <1>: Commands. (line 30) -* C-g <2>: Candidates Search. (line 11) -* C-g <3>: Filter Candidates. (line 14) -* C-h: Commands. (line 34) -* C-M-s: Filter Candidates. (line 6) -* C-n: Usage Basics. (line 12) -* C-n <1>: Commands. (line 11) -* C-o: Filter Candidates. (line 14) -* C-p: Usage Basics. (line 12) -* C-p <1>: Commands. (line 16) -* C-s: Candidates Search. (line 6) -* C-w: Commands. (line 41) -* M-<digit>: Quick Access a Candidate. - (line 6) -* RET: Usage Basics. (line 15) -* RET <1>: Commands. (line 21) -* TAB: Usage Basics. (line 17) -* TAB <1>: Commands. (line 25) - - -File: docv3QUJv.info, Node: Variable Index, Next: Function Index, Prev: Key Index, Up: Index - -Variable Index -============== - - -* Menu: - -* company-after-completion-hook: Configuration File. (line 94) -* company-backends: Backends. (line 12) -* company-backends <1>: Backends Usage Basics. - (line 6) -* company-backends <2>: Grouped Backends. (line 6) -* company-completion-cancelled-hook: Configuration File. (line 90) -* company-completion-finished-hook: Configuration File. (line 92) -* company-completion-started-hook: Configuration File. (line 88) -* company-dabbrev-downcase: Text Completion. (line 64) -* company-dabbrev-ignore-buffers: Text Completion. (line 32) -* company-dabbrev-ignore-case: Text Completion. (line 47) -* company-dabbrev-minimum-length: Text Completion. (line 13) -* company-dabbrev-other-buffers: Text Completion. (line 23) -* company-dot-icons-format: Tooltip Frontends. (line 184) -* company-echo-truncate-lines: Echo Frontends. (line 33) -* company-files-chop-trailing-slash: File Name Completion. - (line 19) -* company-files-exclusions: File Name Completion. - (line 12) -* company-format-margin-function: Tooltip Frontends. (line 159) -* company-frontends: Frontends. (line 6) -* company-global-modes: Configuration File. (line 31) -* company-icon-margin: Tooltip Frontends. (line 170) -* company-icon-size: Tooltip Frontends. (line 170) -* company-idle-delay: Configuration File. (line 17) -* company-insertion-on-trigger: Configuration File. (line 64) -* company-insertion-triggers: Configuration File. (line 72) -* company-ispell-dictionary: Text Completion. (line 84) -* company-lighter-base: Configuration File. (line 59) -* company-minimum-prefix-length: Configuration File. (line 9) -* company-mode: Initial Setup. (line 6) -* company-occurrence-weight-function: Candidates Post-Processing. - (line 21) -* company-require-match: Configuration File. (line 51) -* company-search-regexp-function: Candidates Search. (line 13) -* company-selection-wrap-around: Configuration File. (line 43) -* company-show-quick-access: Quick Access a Candidate. - (line 12) -* company-text-face-extra-attributes: Tooltip Frontends. (line 197) -* company-text-icons-add-background: Tooltip Frontends. (line 205) -* company-text-icons-format: Tooltip Frontends. (line 177) -* company-text-icons-mapping: Tooltip Frontends. (line 193) -* company-tooltip-align-annotations: Tooltip Frontends. (line 51) -* company-tooltip-annotation-padding: Tooltip Frontends. (line 63) -* company-tooltip-flip-when-above: Tooltip Frontends. (line 106) -* company-tooltip-idle-delay: Tooltip Frontends. (line 21) -* company-tooltip-limit: Tooltip Frontends. (line 71) -* company-tooltip-margin: Tooltip Frontends. (line 140) -* company-tooltip-maximum-width: Tooltip Frontends. (line 133) -* company-tooltip-minimum: Tooltip Frontends. (line 91) -* company-tooltip-minimum-width: Tooltip Frontends. (line 118) -* company-tooltip-offset-display: Tooltip Frontends. (line 81) -* company-tooltip-width-grow-only: Tooltip Frontends. (line 128) -* company-transformers: Candidates Post-Processing. - (line 6) - - -File: docv3QUJv.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Index - -Function Index -============== - - -* Menu: - -* company-abbrev: Template Expansion. (line 6) -* company-abort: Commands. (line 30) -* company-begin-backend: Backends Usage Basics. - (line 22) -* company-capf: Code Completion. (line 6) -* company-clang: Code Completion. (line 36) -* company-complete: Usage Basics. (line 10) -* company-complete-common: Commands. (line 25) -* company-complete-selection: Commands. (line 21) -* company-dabbrev: Text Completion. (line 6) -* company-dabbrev-code: Code Completion. (line 25) -* company-detect-icons-margin: Tooltip Frontends. (line 214) -* company-diag: Backends Usage Basics. - (line 11) -* company-diag <1>: Troubleshooting. (line 6) -* company-dot-icons-margin: Tooltip Frontends. (line 183) -* company-echo-frontend: Echo Frontends. (line 21) -* company-echo-metadata-frontend: Echo Frontends. (line 9) -* company-echo-strip-common-frontend: Echo Frontends. (line 27) -* company-etags: Code Completion. (line 48) -* company-files: File Name Completion. - (line 6) -* company-ispell: Text Completion. (line 75) -* company-keywords: Code Completion. (line 31) -* company-mode: Initial Setup. (line 6) -* company-other-backend: Backends Usage Basics. - (line 14) -* company-preview-common-frontend: Preview Frontends. (line 21) -* company-preview-frontend: Preview Frontends. (line 17) -* company-preview-if-just-one-frontend: Preview Frontends. (line 10) -* company-pseudo-tooltip-frontend: Tooltip Frontends. (line 16) -* company-pseudo-tooltip-unless-just-one-frontend: Tooltip Frontends. - (line 10) -* company-pseudo-tooltip-unless-just-one-frontend-with-delay: Tooltip Frontends. - (line 20) -* company-search-flex-regexp: Candidates Search. (line 26) -* company-search-words-in-any-order-regexp: Candidates Search. - (line 23) -* company-search-words-regexp: Candidates Search. (line 20) -* company-select-next: Commands. (line 11) -* company-select-next-or-abort: Commands. (line 11) -* company-select-previous: Commands. (line 16) -* company-select-previous-or-abort: Commands. (line 16) -* company-semantic: Code Completion. (line 41) -* company-show-doc-buffer: Commands. (line 34) -* company-show-location: Commands. (line 41) -* company-sort-by-backend-importance: Candidates Post-Processing. - (line 27) -* company-sort-by-occurrence: Candidates Post-Processing. - (line 17) -* company-sort-prefer-same-case-prefix: Candidates Post-Processing. - (line 33) -* company-tempo: Template Expansion. (line 11) -* company-text-icons-margin: Tooltip Frontends. (line 176) -* company-tng-frontend: Structure. (line 26) -* company-tng-mode: Structure. (line 26) -* company-vscode-dark-icons-margin: Tooltip Frontends. (line 168) -* company-vscode-light-icons-margin: Tooltip Frontends. (line 169) -* company-yasnippet: Template Expansion. (line 16) -* global-company-mode: Initial Setup. (line 18) - - -File: docv3QUJv.info, Node: Concept Index, Prev: Function Index, Up: Index - -Concept Index -============= - - -* Menu: - -* abbrev: Template Expansion. (line 6) -* abort: Usage Basics. (line 20) -* abort <1>: Commands. (line 30) -* activate: Initial Setup. (line 8) -* active backend: Backends Usage Basics. - (line 11) -* active backend <1>: Troubleshooting. (line 14) -* annotation: Tooltip Frontends. (line 52) -* auto-start: Initial Setup. (line 13) -* backend: Structure. (line 6) -* backend <1>: Structure. (line 10) -* backend <2>: Backends Usage Basics. - (line 11) -* backend <3>: Backends Usage Basics. - (line 14) -* backend <4>: Troubleshooting. (line 14) -* backends: Backends. (line 6) -* backends <1>: Backends Usage Basics. - (line 6) -* backends <2>: Grouped Backends. (line 6) -* backends <3>: Package Backends. (line 6) -* basics: Usage Basics. (line 6) -* bug: Troubleshooting. (line 6) -* bug <1>: Troubleshooting. (line 25) -* bundled backends: Package Backends. (line 6) -* cancel: Usage Basics. (line 20) -* cancel <1>: Commands. (line 30) -* candidate: Terminology. (line 10) -* candidate <1>: Usage Basics. (line 12) -* candidate <2>: Usage Basics. (line 15) -* candidate <3>: Preview Frontends. (line 6) -* color: Tooltip Frontends. (line 223) -* color <1>: Quick Access a Candidate. - (line 34) -* common part: Usage Basics. (line 17) -* common part <1>: Commands. (line 25) -* common part <2>: Preview Frontends. (line 6) -* company-echo: Echo Frontends. (line 6) -* company-preview: Preview Frontends. (line 6) -* company-tng: Structure. (line 26) -* company-tooltip: Tooltip Frontends. (line 223) -* company-tooltip-search: Candidates Search. (line 6) -* complete: Terminology. (line 6) -* complete <1>: Usage Basics. (line 12) -* complete <2>: Usage Basics. (line 15) -* complete <3>: Usage Basics. (line 17) -* complete <4>: Commands. (line 21) -* complete <5>: Preview Frontends. (line 6) -* completion: Terminology. (line 6) -* completion <1>: Usage Basics. (line 12) -* completion <2>: Usage Basics. (line 15) -* completion <3>: Usage Basics. (line 17) -* configure: Customization. (line 6) -* configure <1>: Customization Interface. - (line 6) -* configure <2>: Configuration File. (line 6) -* configure <3>: Tooltip Frontends. (line 48) -* configure <4>: Tooltip Frontends. (line 223) -* configure <5>: Preview Frontends. (line 25) -* configure <6>: Echo Frontends. (line 38) -* configure <7>: Candidates Search. (line 30) -* configure <8>: Quick Access a Candidate. - (line 25) -* configure <9>: Quick Access a Candidate. - (line 34) -* custom: Customization. (line 6) -* custom <1>: Customization Interface. - (line 6) -* custom <2>: Configuration File. (line 6) -* custom <3>: Tooltip Frontends. (line 48) -* custom <4>: Tooltip Frontends. (line 223) -* custom <5>: Preview Frontends. (line 25) -* custom <6>: Echo Frontends. (line 38) -* custom <7>: Candidates Search. (line 30) -* custom <8>: Quick Access a Candidate. - (line 25) -* custom <9>: Quick Access a Candidate. - (line 34) -* definition: Commands. (line 41) -* distribution: Installation. (line 6) -* doc: Commands. (line 34) -* duplicate: Candidates Post-Processing. - (line 6) -* echo: Echo Frontends. (line 6) -* enable: Initial Setup. (line 8) -* error: Troubleshooting. (line 6) -* error <1>: Troubleshooting. (line 25) -* expansion: Template Expansion. (line 6) -* extensible: Structure. (line 6) -* face: Tooltip Frontends. (line 223) -* face <1>: Preview Frontends. (line 6) -* face <2>: Preview Frontends. (line 25) -* face <3>: Echo Frontends. (line 6) -* face <4>: Echo Frontends. (line 38) -* face <5>: Candidates Search. (line 6) -* face <6>: Candidates Search. (line 30) -* face <7>: Filter Candidates. (line 6) -* face <8>: Quick Access a Candidate. - (line 34) -* filter: Filter Candidates. (line 6) -* finish: Usage Basics. (line 20) -* finish <1>: Commands. (line 30) -* font: Tooltip Frontends. (line 223) -* font <1>: Quick Access a Candidate. - (line 34) -* frontend: Structure. (line 6) -* frontend <1>: Structure. (line 10) -* frontends: Frontends. (line 6) -* grouped backends: Grouped Backends. (line 6) -* icon: Tooltip Frontends. (line 152) -* install: Installation. (line 6) -* interface: Tooltip Frontends. (line 48) -* interface <1>: Tooltip Frontends. (line 223) -* interface <2>: Preview Frontends. (line 25) -* interface <3>: Echo Frontends. (line 38) -* interface <4>: Candidates Search. (line 30) -* interface <5>: Quick Access a Candidate. - (line 34) -* intro: Initial Setup. (line 6) -* issue: Troubleshooting. (line 6) -* issue tracker: Troubleshooting. (line 25) -* kind: Tooltip Frontends. (line 152) -* location: Commands. (line 41) -* manual: Initial Setup. (line 8) -* manual <1>: Usage Basics. (line 10) -* margin: Tooltip Frontends. (line 141) -* margin <1>: Tooltip Frontends. (line 160) -* minor-mode: Initial Setup. (line 6) -* module: Structure. (line 6) -* module <1>: Structure. (line 10) -* navigate: Usage Basics. (line 12) -* next backend: Backends Usage Basics. - (line 14) -* non-prefix matches: Terminology. (line 10) -* package: Installation. (line 6) -* package backends: Package Backends. (line 6) -* pluggable: Structure. (line 6) -* pop-up: Tooltip Frontends. (line 6) -* prefix matches: Terminology. (line 10) -* preview: Preview Frontends. (line 6) -* quick start: Initial Setup. (line 6) -* quick-access: Quick Access a Candidate. - (line 6) -* quit: Usage Basics. (line 20) -* quit <1>: Commands. (line 30) -* search: Candidates Search. (line 6) -* select: Usage Basics. (line 12) -* select <1>: Commands. (line 11) -* select <2>: Commands. (line 16) -* snippet: Template Expansion. (line 6) -* sort: Candidates Post-Processing. - (line 6) -* stop: Usage Basics. (line 20) -* stop <1>: Commands. (line 30) -* TAB: Structure. (line 26) -* Tab and Go: Structure. (line 26) -* template: Template Expansion. (line 6) -* third-party: Structure. (line 10) -* third-party <1>: Troubleshooting. (line 17) -* tooltip: Tooltip Frontends. (line 6) -* troubleshoot: Troubleshooting. (line 6) -* usage: Usage Basics. (line 6) - - - -Tag Table: -Node: Top565 -Node: Overview1986 -Node: Terminology2396 -Ref: Terminology-Footnote-13385 -Node: Structure3591 -Node: Getting Started5089 -Node: Installation5369 -Node: Initial Setup5754 -Node: Usage Basics6602 -Node: Commands7367 -Ref: Commands-Footnote-19804 -Node: Customization9971 -Node: Customization Interface10445 -Node: Configuration File10980 -Node: Frontends15648 -Node: Tooltip Frontends16619 -Ref: Tooltip Frontends-Footnote-127388 -Node: Preview Frontends27625 -Ref: Preview Frontends-Footnote-128883 -Node: Echo Frontends29010 -Node: Candidates Search30545 -Node: Filter Candidates31881 -Node: Quick Access a Candidate32663 -Node: Backends34283 -Node: Backends Usage Basics35383 -Ref: Backends Usage Basics-Footnote-136600 -Node: Grouped Backends36684 -Node: Package Backends38315 -Node: Code Completion39246 -Node: Text Completion41617 -Node: File Name Completion46053 -Node: Template Expansion47603 -Node: Candidates Post-Processing48324 -Node: Troubleshooting49803 -Node: Index51478 -Node: Key Index51643 -Node: Variable Index53144 -Node: Function Index57269 -Node: Concept Index61752 - -End Tag Table - - -Local Variables: -coding: utf-8 -End: diff --git a/elpa/company-0.10.2/dir b/elpa/company-0.10.2/dir @@ -1,18 +0,0 @@ -This is the file .../info/dir, which contains the -topmost node of the Info hierarchy, called (dir)Top. -The first time you invoke Info you start off looking at this node. - -File: dir, Node: Top This is the top of the INFO tree - - This (the Directory node) gives a menu of major topics. - Typing "q" exits, "H" lists all Info commands, "d" returns here, - "h" gives a primer for first-timers, - "mEmacs<Return>" visits the Emacs manual, etc. - - In Emacs, you can click mouse button 2 on a menu item or cross reference - to select it. - -* Menu: - -Emacs misc features -* Company: (company). A modular text completion framework. diff --git a/elpa/company-0.10.2/icons/LICENSE b/elpa/company-0.10.2/icons/LICENSE @@ -1,395 +0,0 @@ -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/elpa/company-0.10.2/icons/attribution.md b/elpa/company-0.10.2/icons/attribution.md @@ -1,5 +0,0 @@ -The icons in this directory have been made by "Microsoft and any contributors", -see the [development repository](https://github.com/microsoft/vscode-icons/). - -They are distributed under Creative Commons Attribution 4.0 International Public -License, see the LICENSE file in this directory. diff --git a/elpa/company-0.10.2/icons/vscode-dark/folder.svg b/elpa/company-0.10.2/icons/vscode-dark/folder.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M14.5 3H7.70996L6.85999 2.15002L6.51001 2H1.51001L1.01001 2.5V6.5V13.5L1.51001 14H14.51L15.01 13.5V9V3.5L14.5 3ZM13.99 11.49V13H1.98999V11.49V7.48999V7H6.47998L6.82996 6.84998L7.68994 5.98999H14V7.48999L13.99 11.49ZM13.99 5H7.48999L7.14001 5.15002L6.28003 6.01001H2V3.01001H6.29004L7.14001 3.85999L7.5 4.01001H14L13.99 5Z" fill="#C5C5C5"/> -</svg> -\ No newline at end of file diff --git a/elpa/company-0.10.2/icons/vscode-dark/references.svg b/elpa/company-0.10.2/icons/vscode-dark/references.svg @@ -1,3 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11.1052 4.5613L7.67505 7.98827L6.54072 6.86834L8.61098 4.78848H3.81131C3.17483 4.78848 2.56442 5.04132 2.11436 5.49138C1.6643 5.94144 1.41147 6.55184 1.41147 7.18832C1.41147 7.8248 1.6643 8.43521 2.11436 8.88527C2.56442 9.33532 3.17483 9.58816 3.81131 9.58816H4.70085V11.1881H3.8209C2.7921 11.142 1.8207 10.7009 1.10896 9.95661C0.397222 9.21231 0 8.22216 0 7.19232C0 6.16249 0.397222 5.17234 1.10896 4.42803C1.8207 3.68373 2.7921 3.24263 3.8209 3.19659H8.62058L6.54072 1.13112L7.67505 0L11.1052 3.43177V4.5613ZM16.6201 24H7.0207L6.22075 23.2V10.4121L7.0207 9.61215H16.6201L17.42 10.4121V23.2L16.6201 24ZM7.82064 22.4001H15.8201V11.212H7.82064V22.4001ZM13.4203 1.6015H23.0196L23.8196 2.40145V15.1878L23.0196 15.9877H19.0199V14.3878H22.2197V3.20139H14.2202V7.98828H12.6203V2.40145L13.4203 1.6015ZM14.2202 12.7879H9.42053V14.3878H14.2202V12.7879ZM9.42053 15.9877H14.2202V17.5876H9.42053V15.9877ZM14.2202 19.1875H9.42053V20.7874H14.2202V19.1875ZM15.8201 4.78848H20.6198V6.38838H15.8201V4.78848ZM20.6198 11.188H19.0199V12.7879H20.6198V11.188ZM17.2824 8.01228V7.98828H20.6198V9.58817H18.8583L17.2824 8.01228Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-array.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-array.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2L1 2.5V13.5L1.5 14H4V13H2V3H4V2H1.5ZM14.5 14L15 13.5L15 2.5L14.5 2H12V3L14 3L14 13H12V14H14.5Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-boolean.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-boolean.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1 3.5L1.5 3H14.5L15 3.5L15 12.5L14.5 13H1.5L1 12.5V3.5ZM14 4H8L8 7.49297L7.89793 7.49285L7.5 7.49225V7.49237L3.92614 7.48807L6.01638 5.39784L5.30927 4.69073L2.35356 7.64645L2.35356 8.35355L5.30927 11.3093L6.01638 10.6022L3.90228 8.48807L7.8976 8.49285L8 8.493V7.50702L11.9073 7.51222L9.79289 5.39784L10.5 4.69073L13.4557 7.64645V8.35355L10.5 11.3093L9.79289 10.6022L11.8828 8.51222L8 8.50702V12H14V4Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-class.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-class.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M11.34 9.70998H12.05L14.72 7.04005V6.32997L13.38 5.00001H12.68L10.86 6.81007H5.86V5.56007L7.71999 3.70997V3L5.71998 1H5.00001L1 5.00001V5.70997L3 7.70998H3.71003L4.84998 6.56007V12.35L5.34998 12.85H10V13.37L11.33 14.71H12.04L14.7101 12.0401V11.33L13.37 10H12.67L10.81 11.85H5.81001V7.84999H10V8.32997L11.34 9.70998ZM13.0301 6.06007L13.66 6.68995L11.66 8.68996L11.0301 8.06007L13.0301 6.06007ZM13.0301 11.0601L13.66 11.69L11.66 13.69L11.0301 13.0601L13.0301 11.0601ZM3.34998 6.65004L2.06 5.34998L5.34998 2.06006L6.65004 3.34998L3.34998 6.65004Z" fill="#EE9D28"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-color.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-color.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8 1.00305C6.14348 1.00305 4.36299 1.74059 3.05023 3.05334C1.73748 4.3661 1 6.14654 1 8.00305V8.43311C1.09 9.94311 2.91 10.2231 4 9.13306C4.35648 8.81625 4.82054 8.64759 5.29724 8.66162C5.77395 8.67565 6.22729 8.87127 6.56451 9.2085C6.90174 9.54572 7.09736 9.99912 7.11139 10.4758C7.12542 10.9525 6.95682 11.4166 6.64001 11.7731C5.54001 12.9331 5.85 14.843 7.44 14.973H8.03998C9.89649 14.973 11.677 14.2356 12.9897 12.9229C14.3025 11.6101 15.04 9.82954 15.04 7.97302C15.04 6.11651 14.3025 4.33607 12.9897 3.02332C11.677 1.71056 9.89649 0.973022 8.03998 0.973022L8 1.00305ZM8 14.0031H7.47998C7.34751 13.9989 7.22047 13.9495 7.12 13.863C7.04052 13.7807 6.98815 13.6761 6.96997 13.5631C6.9381 13.3682 6.95328 13.1684 7.01416 12.9806C7.07504 12.7927 7.17989 12.6222 7.32001 12.483C7.84048 11.9474 8.13165 11.2299 8.13165 10.483C8.13165 9.73615 7.84048 9.0187 7.32001 8.48303C7.05348 8.21635 6.73699 8.00481 6.38867 7.86047C6.04036 7.71614 5.66702 7.64185 5.28998 7.64185C4.91294 7.64185 4.5396 7.71614 4.19128 7.86047C3.84297 8.00481 3.52654 8.21635 3.26001 8.48303C3.15068 8.61081 3.01089 8.709 2.85358 8.76843C2.69626 8.82786 2.52649 8.84657 2.35999 8.823C2.27593 8.80694 2.19903 8.76498 2.14001 8.703C2.07131 8.6224 2.03556 8.5189 2.03998 8.41309V8.04309C2.03998 6.8564 2.39192 5.69629 3.05121 4.70959C3.7105 3.7229 4.64754 2.95388 5.7439 2.49976C6.84025 2.04563 8.04669 1.92681 9.21057 2.15833C10.3745 2.38984 11.4435 2.9613 12.2827 3.80042C13.1218 4.63953 13.6932 5.70867 13.9247 6.87256C14.1562 8.03644 14.0374 9.24275 13.5833 10.3391C13.1291 11.4355 12.3601 12.3726 11.3734 13.0319C10.3867 13.6911 9.22667 14.0431 8.03998 14.0431L8 14.0031ZM9 3.99683C9 4.54911 8.55228 4.99683 8 4.99683C7.44771 4.99683 7 4.54911 7 3.99683C7 3.44454 7.44771 2.99683 8 2.99683C8.55228 2.99683 9 3.44454 9 3.99683ZM12 11.0037C12 11.5559 11.5523 12.0037 11 12.0037C10.4477 12.0037 10 11.5559 10 11.0037C10 10.4514 10.4477 10.0037 11 10.0037C11.5523 10.0037 12 10.4514 12 11.0037ZM5 6.00415C5.55229 6.00415 6 5.55644 6 5.00415C6 4.45187 5.55229 4.00415 5 4.00415C4.44772 4.00415 4 4.45187 4 5.00415C4 5.55644 4.44772 6.00415 5 6.00415ZM12 5.00415C12 5.55644 11.5523 6.00415 11 6.00415C10.4477 6.00415 10 5.55644 10 5.00415C10 4.45187 10.4477 4.00415 11 4.00415C11.5523 4.00415 12 4.45187 12 5.00415ZM13.0001 7.99939C13.0001 8.55167 12.5524 8.99939 12.0001 8.99939C11.4478 8.99939 11.0001 8.55167 11.0001 7.99939C11.0001 7.4471 11.4478 6.99939 12.0001 6.99939C12.5524 6.99939 13.0001 7.4471 13.0001 7.99939Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-constant.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-constant.svg @@ -1,4 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4 6H12V7H4V6ZM12 9H4V10H12V9Z" fill="#C5C5C5"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1 4L2 3H14L15 4V12L14 13H2L1 12V4ZM2 4V12H14V4H2Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-enumerator-member.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-enumerator-member.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7 3L8 2H14L15 3V8L14 9H10V8H14V3H8V6H7V3ZM9 9V8L8 7H7H2L1 8V13L2 14H8L9 13V9ZM8 8V9V13H2V8H7H8ZM9.41421 7L9 6.58579V6H13V7H9.41421ZM9 4H13V5H9V4ZM7 10H3V11H7V10Z" fill="#75BEFF"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-enumerator.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-enumerator.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M14 2H8L7 3V6H8V3H14V8H10V9H14L15 8V3L14 2ZM9 6H13V7H9.41L9 6.59V6ZM7 7H2L1 8V13L2 14H8L9 13V8L8 7H7ZM8 13H2V8H8V9V13ZM3 9H7V10H3V9ZM3 11H7V12H3V11ZM9 4H13V5H9V4Z" fill="#EE9D28"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-event.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-event.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7.41354 1.55996L8.31152 1H11.6056L12.424 2.57465L10.2356 6H12.0174L12.7363 7.69512L5.61943 15L4.01675 13.837L6.11943 10H4.89798L4 8.55996L7.41354 1.55996ZM7.78033 9L4.90054 14.3049L12.0174 7H8.31152L11.6056 2H8.31152L4.89798 9H7.78033Z" fill="#EE9D28"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-field.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-field.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M14.45 4.5L9.44995 2H8.55005L1.55005 5.5L1 6.39001V10.89L1.55005 11.79L6.55005 14.29H7.44995L14.45 10.79L15 9.89001V5.39001L14.45 4.5ZM6.44995 13.14L1.94995 10.89V7.17004L6.44995 9.17004V13.14ZM6.94995 8.33997L2.29004 6.22998L8.94995 2.89001L13.62 5.22998L6.94995 8.33997ZM13.95 9.89001L7.44995 13.14V9.20996L13.95 6.20996V9.89001Z" fill="#75BEFF"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-file.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-file.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M13.85 4.44L10.57 1.14L10.22 1H2.5L2 1.5V14.5L2.5 15H13.5L14 14.5V4.8L13.85 4.44ZM13 5H10V2L13 5ZM3 14V2H9V5.5L9.5 6H13V14H3Z" fill="#C5C5C5"/> -</svg> -\ No newline at end of file diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-interface.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-interface.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M11.4965 4C10.655 3.9989 9.84136 4.30189 9.20557 4.85315C8.56977 5.40442 8.15465 6.16684 8.0365 7H4.9364C4.8147 6.52867 4.52533 6.11794 4.12244 5.84473C3.71955 5.57152 3.23083 5.45466 2.74792 5.51599C2.26502 5.57733 1.82106 5.81261 1.49927 6.17786C1.17747 6.54311 1 7.01322 1 7.5C1 7.98679 1.17747 8.45689 1.49927 8.82215C1.82106 9.1874 2.26502 9.42267 2.74792 9.48401C3.23083 9.54535 3.71955 9.42848 4.12244 9.15528C4.52533 8.88207 4.8147 8.47133 4.9364 8H8.0365C8.13236 8.66418 8.41717 9.28683 8.85693 9.7937C9.2967 10.3006 9.87284 10.6703 10.5168 10.8589C11.1609 11.0475 11.8455 11.047 12.4893 10.8574C13.133 10.6679 13.7087 10.2973 14.1477 9.7898C14.5867 9.28227 14.8706 8.65919 14.9655 7.99488C15.0603 7.33056 14.9621 6.65298 14.6827 6.04285C14.4034 5.43272 13.9545 4.91578 13.3895 4.55359C12.8246 4.19141 12.1675 3.99922 11.4965 4V4ZM11.4965 10C11.002 10 10.5187 9.85332 10.1075 9.57862C9.69642 9.30391 9.37599 8.91348 9.18677 8.45667C8.99755 7.99985 8.94809 7.49728 9.04456 7.01233C9.14102 6.52738 9.37901 6.08181 9.72864 5.73218C10.0783 5.38255 10.5238 5.14456 11.0088 5.0481C11.4937 4.95164 11.9963 5.00109 12.4531 5.19031C12.9099 5.37953 13.3004 5.69996 13.5751 6.11109C13.8498 6.52221 13.9965 7.00555 13.9965 7.5C13.9965 8.16304 13.7331 8.79898 13.2643 9.26783C12.7954 9.73667 12.1595 10 11.4965 10V10Z" fill="#75BEFF"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-key.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-key.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7.22289 10.933C7.54863 11.1254 7.92163 11.2231 8.29989 11.215C8.63777 11.2218 8.97254 11.1492 9.27721 11.003C9.58188 10.8567 9.84792 10.6409 10.0539 10.373C10.5091 9.76519 10.7402 9.01867 10.7079 8.25998C10.7412 7.58622 10.5374 6.9221 10.1319 6.38298C9.93575 6.14161 9.68577 5.94957 9.402 5.82228C9.11824 5.69498 8.80858 5.63597 8.49789 5.64997C8.07522 5.64699 7.65994 5.76085 7.29789 5.97898C7.18304 6.04807 7.0749 6.12775 6.97489 6.21698V3.47498H5.98389V11.1H6.97889V10.756C7.05516 10.8217 7.13677 10.8809 7.22289 10.933ZM7.84981 6.70006C8.03598 6.62105 8.23807 6.58677 8.43989 6.59998C8.61257 6.59452 8.78404 6.63054 8.93994 6.70501C9.09583 6.77948 9.23161 6.89023 9.33589 7.02798C9.59253 7.39053 9.7184 7.82951 9.69289 8.27297C9.71972 8.79748 9.57969 9.31701 9.29289 9.75698C9.18822 9.91527 9.04546 10.0447 8.87773 10.1335C8.70999 10.2223 8.52264 10.2675 8.33289 10.265C8.14934 10.2732 7.9663 10.24 7.79734 10.1678C7.62838 10.0956 7.47784 9.98628 7.35689 9.84797C7.10152 9.55957 6.96501 9.18506 6.97489 8.79998V8.19998C6.96299 7.78332 7.10263 7.3765 7.36789 7.05498C7.49858 6.90064 7.66364 6.77908 7.84981 6.70006ZM3.28902 5.67499C2.97011 5.67933 2.65388 5.734 2.35202 5.83699C2.06417 5.92293 1.79347 6.05828 1.55202 6.23699L1.45202 6.31399V7.51399L1.87502 7.15499C2.24579 6.80478 2.73133 6.60146 3.24102 6.58299C3.36593 6.57164 3.4917 6.59147 3.60706 6.64068C3.72243 6.6899 3.82377 6.76697 3.90202 6.86499C4.0522 7.0971 4.13239 7.36754 4.13302 7.64399L2.90002 7.82499C2.39435 7.87781 1.91525 8.07772 1.52202 8.39999C1.36697 8.55181 1.24339 8.73271 1.15835 8.93235C1.07331 9.13199 1.02848 9.34644 1.02644 9.56343C1.0244 9.78042 1.06517 9.99568 1.14644 10.1969C1.2277 10.3981 1.34786 10.5813 1.50002 10.736C1.6687 10.8904 1.86622 11.01 2.08125 11.0879C2.29627 11.1659 2.52456 11.2005 2.75302 11.19C3.147 11.1931 3.53278 11.0774 3.86002 10.858C3.96153 10.7897 4.0572 10.7131 4.14602 10.629V11.073H5.08702V7.71499C5.12137 7.17422 4.9543 6.63988 4.61802 6.21499C4.44979 6.03285 4.24348 5.89003 4.01378 5.7967C3.78407 5.70336 3.53661 5.66181 3.28902 5.67499ZM4.14602 8.71599C4.16564 9.13435 4.02592 9.54459 3.75502 9.864C3.63689 10.0005 3.48998 10.1092 3.32486 10.1821C3.15973 10.2551 2.98049 10.2906 2.80002 10.286C2.69049 10.2945 2.58035 10.2812 2.47599 10.2469C2.37163 10.2125 2.27511 10.1579 2.19202 10.086C2.06079 9.93455 1.98856 9.74088 1.98856 9.54049C1.98856 9.34011 2.06079 9.14644 2.19202 8.99499C2.47322 8.82131 2.79233 8.71837 3.12202 8.69499L4.14202 8.54699L4.14602 8.71599ZM12.4588 11.0325C12.766 11.1638 13.0983 11.2261 13.4322 11.215C13.927 11.227 14.4153 11.1006 14.8422 10.85L14.9652 10.775L14.9782 10.768V9.61504L14.5322 9.93504C14.216 10.1592 13.8356 10.2747 13.4482 10.264C13.2497 10.2719 13.052 10.2342 12.8703 10.1538C12.6886 10.0733 12.5278 9.95232 12.4002 9.80004C12.1144 9.42453 11.9725 8.95911 12.0002 8.48804C11.9737 7.98732 12.1352 7.49475 12.4532 7.10704C12.5934 6.94105 12.7695 6.80914 12.9682 6.7213C13.167 6.63346 13.3831 6.592 13.6002 6.60004C13.9439 6.59844 14.2808 6.69525 14.5712 6.87904L15.0002 7.14404V5.97004L14.8312 5.89704C14.4626 5.73432 14.0641 5.6502 13.6612 5.65004C13.2999 5.63991 12.9406 5.70762 12.6078 5.84859C12.2749 5.98956 11.9763 6.20048 11.7322 6.46704C11.2261 7.02683 10.9581 7.76186 10.9852 8.51604C10.9567 9.22346 11.1955 9.91569 11.6542 10.455C11.8769 10.704 12.1516 10.9012 12.4588 11.0325Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-keyword.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-keyword.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M15 4H10V3H15V4ZM14 7H12V8H14V7ZM10 7H1V8H10V7ZM12 13H1V14H12V13ZM7 10H1V11H7V10ZM15 10H10V11H15V10ZM8 2V5H1V2H8ZM7 3H2V4H7V3Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-method.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-method.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M13.51 4L8.51001 1H7.51001L2.51001 4L2.02002 4.85999V10.86L2.51001 11.71L7.51001 14.71H8.51001L13.51 11.71L14 10.86V4.85999L13.51 4ZM7.51001 13.5601L3.01001 10.86V5.69995L7.51001 8.15002V13.5601ZM3.27002 4.69995L8.01001 1.85999L12.75 4.69995L8.01001 7.29004L3.27002 4.69995ZM13.01 10.86L8.51001 13.5601V8.15002L13.01 5.69995V10.86Z" fill="#B180D7"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-misc.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-misc.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2H12V6C12.3415 6.03511 12.6774 6.11234 13 6.22998V1H3V9.47998L4 7.72998V2ZM6.14001 10L5 8L4 9.75L3.29004 11L1 15H9L6.70996 11L6.14001 10ZM2.71997 14L4.43994 11L5 10L5.56006 11L7.28003 14H2.71997ZM9.55552 7.58984C10.1311 7.20526 10.8077 7 11.5 7C12.4282 7 13.3185 7.36877 13.9748 8.02515C14.6312 8.68152 15 9.57174 15 10.5C15 11.1922 14.7947 11.8689 14.4101 12.4445C14.0256 13.02 13.4789 13.4686 12.8393 13.7335C12.1998 13.9984 11.4961 14.0678 10.8171 13.9327C10.1382 13.7977 9.51461 13.4643 9.02513 12.9749C8.53564 12.4854 8.20229 11.8618 8.06724 11.1829C7.93219 10.5039 8.00155 9.80019 8.26646 9.16064C8.53137 8.5211 8.97995 7.97443 9.55552 7.58984ZM10.1111 12.5786C10.5222 12.8533 11.0055 13 11.5 13C12.163 13 12.799 12.7367 13.2678 12.2678C13.7366 11.799 14 11.163 14 10.5C14 10.0055 13.8533 9.52221 13.5786 9.11108C13.3039 8.69996 12.9135 8.37953 12.4566 8.19031C11.9998 8.00109 11.4973 7.95163 11.0123 8.0481C10.5274 8.14456 10.0818 8.38255 9.73216 8.73218C9.38253 9.08181 9.14454 9.52738 9.04808 10.0123C8.95161 10.4973 9.00107 10.9998 9.19029 11.4567C9.37951 11.9135 9.69994 12.3039 10.1111 12.5786Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-namespace.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-namespace.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2.98361V2.97184V2H5.91083C5.59743 2 5.29407 2.06161 5.00128 2.18473C4.70818 2.30798 4.44942 2.48474 4.22578 2.71498C4.00311 2.94422 3.83792 3.19498 3.73282 3.46766L3.73233 3.46898C3.63382 3.7352 3.56814 4.01201 3.53533 4.29917L3.53519 4.30053C3.50678 4.5805 3.4987 4.86844 3.51084 5.16428C3.52272 5.45379 3.52866 5.74329 3.52866 6.03279C3.52866 6.23556 3.48974 6.42594 3.412 6.60507L3.4116 6.60601C3.33687 6.78296 3.23423 6.93866 3.10317 7.07359C2.97644 7.20405 2.82466 7.31055 2.64672 7.3925C2.4706 7.46954 2.28497 7.5082 2.08917 7.5082H2V7.6V8.4V8.4918H2.08917C2.28465 8.4918 2.47001 8.53238 2.64601 8.61334L2.64742 8.61396C2.82457 8.69157 2.97577 8.79762 3.10221 8.93161L3.10412 8.93352C3.23428 9.0637 3.33659 9.21871 3.41129 9.39942L3.41201 9.40108C3.48986 9.58047 3.52866 9.76883 3.52866 9.96721C3.52866 10.2567 3.52272 10.5462 3.51084 10.8357C3.4987 11.1316 3.50677 11.4215 3.53516 11.7055L3.53535 11.7072C3.56819 11.9903 3.63387 12.265 3.73232 12.531L3.73283 12.5323C3.83793 12.805 4.00311 13.0558 4.22578 13.285C4.44942 13.5153 4.70818 13.692 5.00128 13.8153C5.29407 13.9384 5.59743 14 5.91083 14H6V13.2V13.0164H5.91083C5.71095 13.0164 5.52346 12.9777 5.34763 12.9008C5.17396 12.8191 5.02194 12.7126 4.89086 12.5818C4.76386 12.4469 4.66104 12.2911 4.58223 12.1137C4.50838 11.9346 4.47134 11.744 4.47134 11.541C4.47134 11.3127 4.4753 11.0885 4.48321 10.8686C4.49125 10.6411 4.49127 10.4195 4.48324 10.2039C4.47914 9.98246 4.46084 9.76883 4.42823 9.56312C4.39513 9.35024 4.33921 9.14757 4.26039 8.95536C4.18091 8.76157 4.07258 8.57746 3.93616 8.40298C3.82345 8.25881 3.68538 8.12462 3.52283 8C3.68538 7.87538 3.82345 7.74119 3.93616 7.59702C4.07258 7.42254 4.18091 7.23843 4.26039 7.04464C4.33913 6.85263 4.39513 6.65175 4.42826 6.44285C4.46082 6.2333 4.47914 6.01973 4.48324 5.80219C4.49127 5.58262 4.49125 5.36105 4.48321 5.13749C4.4753 4.9134 4.47134 4.68725 4.47134 4.45902C4.47134 4.26019 4.50833 4.07152 4.58238 3.89205C4.66135 3.71034 4.76421 3.55475 4.89086 3.42437C5.02193 3.28942 5.17461 3.18275 5.34802 3.10513C5.5238 3.02427 5.71113 2.98361 5.91083 2.98361H6ZM10 13.0164V13.0282V14H10.0892C10.4026 14 10.7059 13.9384 10.9987 13.8153C11.2918 13.692 11.5506 13.5153 11.7742 13.285C11.9969 13.0558 12.1621 12.805 12.2672 12.5323L12.2677 12.531C12.3662 12.2648 12.4319 11.988 12.4647 11.7008L12.4648 11.6995C12.4932 11.4195 12.5013 11.1316 12.4892 10.8357C12.4773 10.5462 12.4713 10.2567 12.4713 9.96721C12.4713 9.76444 12.5103 9.57406 12.588 9.39493L12.5884 9.39399C12.6631 9.21704 12.7658 9.06134 12.8968 8.92642C13.0236 8.79595 13.1753 8.68945 13.3533 8.6075C13.5294 8.53046 13.715 8.4918 13.9108 8.4918H14V8.4V7.6V7.5082H13.9108C13.7153 7.5082 13.53 7.46762 13.354 7.38666L13.3526 7.38604C13.1754 7.30844 13.0242 7.20238 12.8978 7.06839L12.8959 7.06648C12.7657 6.9363 12.6634 6.78129 12.5887 6.60058L12.588 6.59892C12.5101 6.41953 12.4713 6.23117 12.4713 6.03279C12.4713 5.74329 12.4773 5.45379 12.4892 5.16428C12.5013 4.86842 12.4932 4.57848 12.4648 4.29454L12.4646 4.29285C12.4318 4.00971 12.3661 3.73502 12.2677 3.46897L12.2672 3.46766C12.1621 3.19499 11.9969 2.94422 11.7742 2.71498C11.5506 2.48474 11.2918 2.30798 10.9987 2.18473C10.7059 2.06161 10.4026 2 10.0892 2H10V2.8V2.98361H10.0892C10.2891 2.98361 10.4765 3.0223 10.6524 3.09917C10.826 3.18092 10.9781 3.28736 11.1091 3.41823C11.2361 3.55305 11.339 3.70889 11.4178 3.88628C11.4916 4.0654 11.5287 4.25596 11.5287 4.45902C11.5287 4.68727 11.5247 4.91145 11.5168 5.13142C11.5088 5.35894 11.5087 5.58049 11.5168 5.79605C11.5209 6.01754 11.5392 6.23117 11.5718 6.43688C11.6049 6.64976 11.6608 6.85243 11.7396 7.04464C11.8191 7.23843 11.9274 7.42254 12.0638 7.59702C12.1765 7.74119 12.3146 7.87538 12.4772 8C12.3146 8.12462 12.1765 8.25881 12.0638 8.40298C11.9274 8.57746 11.8191 8.76157 11.7396 8.95536C11.6609 9.14737 11.6049 9.34825 11.5717 9.55715C11.5392 9.7667 11.5209 9.98027 11.5168 10.1978C11.5087 10.4174 11.5087 10.6389 11.5168 10.8625C11.5247 11.0866 11.5287 11.3128 11.5287 11.541C11.5287 11.7398 11.4917 11.9285 11.4176 12.1079C11.3386 12.2897 11.2358 12.4452 11.1091 12.5756C10.9781 12.7106 10.8254 12.8173 10.652 12.8949C10.4762 12.9757 10.2889 13.0164 10.0892 13.0164H10Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-numeric.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-numeric.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11 1V5H15V6H11L11 10H15V11H11V15H10V11H6V15H5L5 11H1V10H5L5 6H1V5H5L5 1H6V5H10V1H11ZM6 6L6 10H10L10 6H6Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-operator.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-operator.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.87289 1.10023C3.20768 1.23579 3.47545 1.498 3.61802 1.82988C3.69032 1.99959 3.72675 2.18242 3.72502 2.36688C3.72617 2.54999 3.68975 2.7314 3.61802 2.89988C3.51299 3.14567 3.33782 3.35503 3.11442 3.50177C2.89102 3.64851 2.6293 3.72612 2.36202 3.72488C2.17924 3.72592 1.99818 3.68951 1.83002 3.61788C1.58298 3.51406 1.37227 3.33932 1.22453 3.11575C1.0768 2.89219 0.998666 2.62984 1.00002 2.36188C0.99913 2.17921 1.03519 1.99825 1.10602 1.82988C1.24337 1.50314 1.50328 1.24323 1.83002 1.10588C2.16332 0.966692 2.53809 0.964661 2.87289 1.10023ZM2.57502 2.86488C2.7054 2.80913 2.80927 2.70526 2.86502 2.57488C2.8929 2.50838 2.90718 2.43698 2.90702 2.36488C2.90813 2.2654 2.88215 2.1675 2.83185 2.08167C2.78156 1.99584 2.70884 1.92531 2.62151 1.87767C2.53418 1.83002 2.43553 1.80705 2.33614 1.81121C2.23674 1.81537 2.14035 1.8465 2.05731 1.90128C1.97426 1.95606 1.9077 2.03241 1.86475 2.12215C1.8218 2.21188 1.80409 2.31161 1.81352 2.41065C1.82294 2.50968 1.85915 2.60428 1.91825 2.6843C1.97736 2.76433 2.05713 2.82675 2.14902 2.86488C2.28549 2.92089 2.43854 2.92089 2.57502 2.86488ZM6.42995 1.1095L1.10967 6.42977L1.79557 7.11567L7.11584 1.7954L6.42995 1.1095ZM11.5 8.99999H12.5V11.5H15V12.5H12.5V15H11.5V12.5H9V11.5H11.5V8.99999ZM5.76777 9.52509L6.47487 10.2322L4.70711 12L6.47487 13.7677L5.76777 14.4748L4 12.7071L2.23223 14.4748L1.52513 13.7677L3.29289 12L1.52513 10.2322L2.23223 9.52509L4 11.2929L5.76777 9.52509ZM7.11802 5.32988C7.01442 5.08268 6.83973 4.87183 6.61612 4.72406C6.3925 4.57629 6.13004 4.49826 5.86202 4.49988C5.67935 4.49899 5.49839 4.53505 5.33002 4.60588C5.00328 4.74323 4.74337 5.00314 4.60602 5.32988C4.53588 5.49478 4.49897 5.67191 4.49741 5.8511C4.49586 6.0303 4.52967 6.20804 4.59693 6.37414C4.66419 6.54024 4.76356 6.69143 4.88936 6.81906C5.01516 6.94669 5.1649 7.04823 5.33002 7.11788C5.49867 7.18848 5.67968 7.22484 5.86252 7.22484C6.04535 7.22484 6.22636 7.18848 6.39502 7.11788C6.64201 7.01388 6.8527 6.83913 7.00058 6.61563C7.14845 6.39213 7.22689 6.12987 7.22602 5.86188C7.22655 5.67905 7.1898 5.49803 7.11802 5.32988ZM6.36502 6.07488C6.33766 6.13937 6.29829 6.19808 6.24902 6.24788C6.19908 6.29724 6.14042 6.33691 6.07602 6.36488C6.00854 6.39297 5.93611 6.40725 5.86302 6.40688C5.78991 6.40744 5.71744 6.39315 5.65002 6.36488C5.58541 6.33729 5.52668 6.29757 5.47702 6.24788C5.42691 6.19856 5.38713 6.13975 5.36002 6.07488C5.30401 5.9384 5.30401 5.78536 5.36002 5.64888C5.41536 5.51846 5.51941 5.41477 5.65002 5.35988C5.71737 5.33126 5.78984 5.31663 5.86302 5.31688C5.93618 5.31685 6.0086 5.33147 6.07602 5.35988C6.14037 5.38749 6.19904 5.42682 6.24902 5.47588C6.29786 5.52603 6.33717 5.58465 6.36502 5.64888C6.3934 5.7163 6.40802 5.78872 6.40802 5.86188C6.40802 5.93503 6.3934 6.00745 6.36502 6.07488ZM14 3H10V4H14V3Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-parameter.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-parameter.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11 6H10V5.5C10 5.22386 9.77616 5 9.50001 5H8.47902V10.5C8.47902 10.7761 8.70288 11 8.97902 11H9.47902V12H6.47902V11H6.97902C7.25516 11 7.47902 10.7761 7.47902 10.5V5H6.50001C6.22387 5 6.00001 5.22386 6.00001 5.5V6H5.00001V4H11V6ZM13.9142 8.0481L12.4519 6.58581L13.159 5.87871L14.9749 7.69454V8.40165L13.2071 10.1694L12.5 9.46231L13.9142 8.0481ZM3.5481 9.4623L2.08581 8.00002L3.50002 6.58581L2.79291 5.8787L1.02515 7.64647V8.35357L2.841 10.1694L3.5481 9.4623Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-property.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-property.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M2.80723 14.9754C2.57119 14.9721 2.33826 14.9211 2.12247 14.8254C1.90667 14.7297 1.71248 14.5913 1.55158 14.4186C1.2385 14.1334 1.04433 13.7408 1.00775 13.3189C0.966225 12.8828 1.09269 12.4473 1.36133 12.1013C2.56779 10.8289 4.9473 8.4494 6.67811 6.75479C6.30983 5.75887 6.32704 4.66127 6.72637 3.67739C7.05474 2.85876 7.63869 2.16805 8.39129 1.70807C8.9817 1.31706 9.66031 1.07944 10.3657 1.01673C11.0711 0.954022 11.7809 1.06819 12.4311 1.34892L13.0482 1.6162L10.1824 4.56738L11.4371 5.82582L14.3809 2.94887L14.6482 3.56788C14.8735 4.08976 14.993 4.65119 14.9997 5.21961C15.0064 5.78802 14.9002 6.35211 14.6872 6.87915C14.476 7.40029 14.1623 7.87368 13.7647 8.27122C13.5394 8.49169 13.2904 8.68653 13.0222 8.85218C12.4673 9.22275 11.8324 9.45636 11.1697 9.5338C10.5069 9.61124 9.83521 9.5303 9.20982 9.29764C8.11194 10.4113 5.37142 13.1704 3.89119 14.5522C3.59426 14.8219 3.20832 14.9726 2.80723 14.9754ZM10.7448 1.92802C10.087 1.92637 9.44359 2.12018 8.89614 2.48485C8.68265 2.6152 8.48437 2.76897 8.30498 2.9433C7.82789 3.42423 7.50926 4.03953 7.39182 4.70669C7.27438 5.37385 7.36374 6.06098 7.64792 6.67591L7.78342 6.97288L7.55048 7.20025C5.81224 8.89672 3.28146 11.4201 2.06479 12.7045C1.95646 12.8658 1.91012 13.0608 1.93435 13.2535C1.95857 13.4463 2.05171 13.6238 2.19657 13.7532C2.28005 13.8462 2.38177 13.9211 2.49541 13.9731C2.59557 14.0184 2.70383 14.043 2.81373 14.0455C2.98064 14.0413 3.14044 13.977 3.26383 13.8646C4.83687 12.3964 7.87622 9.32641 8.76807 8.42435L8.9973 8.19326L9.29242 8.32783C9.80617 8.56732 10.3731 8.66985 10.9382 8.62545C11.5033 8.58106 12.0473 8.39125 12.5174 8.07447C12.7313 7.9426 12.9296 7.78694 13.1085 7.61045C13.4183 7.30153 13.6631 6.93374 13.8286 6.52874C13.994 6.12375 14.0767 5.68974 14.0719 5.25228C14.0719 5.03662 14.0505 4.82148 14.0078 4.61007L11.4306 7.12508L8.87944 4.57759L11.3944 1.98834C11.1804 1.94674 10.9628 1.92653 10.7448 1.92802Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-ruler.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-ruler.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4 1L3 2V14L4 15H12L13 14V2L12 1H4ZM4 3V2H12V14H4V13H6V12H4V10H8V9H4V7H6V6H4V4H8V3H4Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-snippet.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-snippet.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.5 1L2 1.5V13H3V2H14V13H15V1.5L14.5 1H2.5ZM2 15V14H3V15H2ZM5 14.0001H4V15.0001H5V14.0001ZM6 14.0001H7V15.0001H6V14.0001ZM9 14.0001H8V15.0001H9V14.0001ZM10 14.0001H11V15.0001H10V14.0001ZM15 15.0001V14.0001H14V15.0001H15ZM12 14.0001H13V15.0001H12V14.0001Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-string.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-string.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2L1 3V12L2 13H14L15 12V3L14 2H2ZM2 12V3H14V12H2ZM5.3556 8.93017H6V7.22067C6 6.40689 5.68534 6 5.05603 6C4.92098 6 4.77083 6.02421 4.6056 6.07263C4.44181 6.12104 4.3125 6.17691 4.21767 6.24022V6.90503C4.45474 6.70205 4.70474 6.60056 4.96767 6.60056C5.22917 6.60056 5.35991 6.75698 5.35991 7.06983L4.76078 7.17318C4.25359 7.25885 4 7.57914 4 8.13408C4 8.39665 4.06106 8.60708 4.18319 8.76536C4.30675 8.92179 4.47557 9 4.68966 9C4.97989 9 5.19899 8.83985 5.34698 8.51955H5.3556V8.93017ZM5.35991 7.57542V7.76816C5.35991 7.9432 5.31968 8.08845 5.23922 8.20391C5.15876 8.3175 5.0546 8.3743 4.92672 8.3743C4.83477 8.3743 4.76149 8.34264 4.7069 8.27933C4.65374 8.21415 4.62716 8.13128 4.62716 8.03073C4.62716 7.80912 4.73779 7.6797 4.95905 7.64246L5.35991 7.57542ZM7.60094 8.62622H7.59343V8.93511H7V5H7.59343V6.67683H7.60094C7.74742 6.36708 7.95587 6.2122 8.22629 6.2122C8.47418 6.2122 8.6651 6.32987 8.79906 6.56522C8.93302 6.80056 9 7.12243 9 7.53082C9 7.97383 8.92175 8.32944 8.76526 8.59766C8.60876 8.86589 8.39969 9 8.13803 9C7.90141 9 7.72238 8.87541 7.60094 8.62622ZM7.58404 7.50487V7.77742C7.58404 7.94873 7.61972 8.09063 7.69108 8.20311C7.76244 8.3156 7.85383 8.37184 7.96526 8.37184C8.10047 8.37184 8.20501 8.30002 8.27887 8.15639C8.35399 8.01103 8.39155 7.80597 8.39155 7.54121C8.39155 7.32144 8.35712 7.15012 8.28826 7.02726C8.22066 6.90266 8.12363 6.84036 7.99718 6.84036C7.87825 6.84036 7.77934 6.9018 7.70047 7.02466C7.62285 7.14752 7.58404 7.30759 7.58404 7.50487ZM11.2616 9C11.5834 9 11.8295 8.94227 12 8.82682V8.11732C11.82 8.25512 11.636 8.32402 11.448 8.32402C11.2362 8.32402 11.0697 8.25233 10.9486 8.10894C10.8276 7.96369 10.767 7.76443 10.767 7.51117C10.767 7.25047 10.8299 7.04656 10.9558 6.89944C11.0832 6.75047 11.2553 6.67598 11.4719 6.67598C11.6663 6.67598 11.8423 6.74488 12 6.88268V6.13408C11.871 6.04469 11.6623 6 11.374 6C10.9566 6 10.6229 6.1406 10.3728 6.42179C10.1243 6.70112 10 7.0838 10 7.56983C10 7.99069 10.1163 8.33426 10.3489 8.60056C10.5814 8.86685 10.8857 9 11.2616 9Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-structure.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-structure.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2L1 3V6L2 7H14L15 6V3L14 2H2ZM2 3H3H13H14V4V5V6H13H3H2V5V4V3ZM1 10L2 9H5L6 10V13L5 14H2L1 13V10ZM3 10H2V11V12V13H3H4H5V12V11V10H4H3ZM10 10L11 9H14L15 10V13L14 14H11L10 13V10ZM12 10H11V11V12V13H12H13H14V12V11V10H13H12Z" fill="#C5C5C5"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-dark/symbol-variable.svg b/elpa/company-0.10.2/icons/vscode-dark/symbol-variable.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2 5H4V4H1.5L1 4.5V12.5L1.5 13H4V12H2V5ZM14.5 4H12V5H14V12H12V13H14.5L15 12.5V4.5L14.5 4ZM11.76 6.56995L12 7V9.51001L11.7 9.95996L7.19995 11.96H6.73999L4.23999 10.46L4 10.03V7.53003L4.30005 7.06995L8.80005 5.06995H9.26001L11.76 6.56995ZM5 9.70996L6.5 10.61V9.28003L5 8.38V9.70996ZM5.57996 7.56006L7.03003 8.43005L10.42 6.93005L8.96997 6.06006L5.57996 7.56006ZM7.53003 10.73L11.03 9.17004V7.77002L7.53003 9.31995V10.73Z" fill="#75BEFF"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/folder.svg b/elpa/company-0.10.2/icons/vscode-light/folder.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M14.5002 3H7.71021L6.86023 2.15002L6.51025 2H1.51025L1.01025 2.5V6.5V13.5L1.51025 14H14.5103L15.0103 13.5V9V3.5L14.5002 3ZM13.9902 11.49V13H1.99023V11.49V7.48999V7H6.48022L6.8302 6.84998L7.69019 5.98999H14.0002V7.48999L13.9902 11.49ZM13.9902 5H7.49023L7.14026 5.15002L6.28027 6.01001H2.00024V3.01001H6.29028L7.14026 3.85999L7.50024 4.01001H14.0002L13.9902 5Z" fill="#424242"/> -</svg> -\ No newline at end of file diff --git a/elpa/company-0.10.2/icons/vscode-light/references.svg b/elpa/company-0.10.2/icons/vscode-light/references.svg @@ -1,10 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0)"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11.1055 4.5613L7.67529 7.98827L6.54097 6.86834L8.61123 4.78848H3.81155C3.17507 4.78848 2.56466 5.04132 2.11461 5.49138C1.66455 5.94144 1.41171 6.55184 1.41171 7.18832C1.41171 7.8248 1.66455 8.43521 2.11461 8.88527C2.56466 9.33532 3.17507 9.58816 3.81155 9.58816H4.70109V11.1881H3.82115C2.79234 11.142 1.82094 10.7009 1.1092 9.95661C0.397467 9.21231 0.000244141 8.22216 0.000244141 7.19232C0.000244141 6.16249 0.397467 5.17234 1.1092 4.42803C1.82094 3.68373 2.79234 3.24263 3.82115 3.19659H8.62083L6.54097 1.13112L7.67529 0L11.1055 3.43177V4.5613ZM16.6203 24H7.02094L6.22099 23.2V10.4121L7.02094 9.61215H16.6203L17.4202 10.4121V23.2L16.6203 24ZM7.82089 22.4001H15.8204V11.212H7.82089V22.4001ZM13.4205 1.6015H23.0199L23.8198 2.40145V15.1878L23.0199 15.9877H19.0201V14.3878H22.2199V3.20139H14.2205V7.98828H12.6206V2.40145L13.4205 1.6015ZM14.2205 12.7879H9.42078V14.3878H14.2205V12.7879ZM9.42078 15.9877H14.2205V17.5876H9.42078V15.9877ZM14.2205 19.1875H9.42078V20.7874H14.2205V19.1875ZM15.8203 4.78848H20.62V6.38838H15.8203V4.78848ZM20.62 11.188H19.0201V12.7879H20.62V11.188ZM17.2827 8.01228V7.98828H20.62V9.58817H18.8585L17.2827 8.01228Z" fill="#424242"/> -</g> -<defs> -<clipPath id="clip0"> -<rect width="24" height="24" fill="white" transform="translate(0.000244141)"/> -</clipPath> -</defs> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-array.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-array.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1.50024 2L1.00024 2.5V13.5L1.50024 14H4.00024V13H2.00024V3H4.00024V2H1.50024ZM14.5002 14L15.0002 13.5L15.0002 2.5L14.5002 2H12.0002V3L14.0002 3L14.0002 13H12.0002V14H14.5002Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-boolean.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-boolean.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1.00024 3.5L1.50024 3H14.5002L15.0002 3.5L15.0002 12.5L14.5002 13H1.50024L1.00024 12.5V3.5ZM14.0002 4H8.00024L8.00024 7.49297L7.89818 7.49285L7.50024 7.49225V7.49237L3.92639 7.48807L6.01662 5.39784L5.30951 4.69073L2.3538 7.64645L2.3538 8.35355L5.30951 11.3093L6.01662 10.6022L3.90253 8.48807L7.89785 8.49285L8.00024 8.493V7.50702L11.9075 7.51222L9.79313 5.39784L10.5002 4.69073L13.456 7.64645V8.35355L10.5002 11.3093L9.79313 10.6022L11.8831 8.51222L8.00024 8.50702V12H14.0002V4Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-class.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-class.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M11.3403 9.70998H12.0503L14.7202 7.04005V6.32997L13.3803 5.00001H12.6803L10.8603 6.81007H5.86024V5.56007L7.72023 3.70997V3L5.72022 1H5.00025L1.00024 5.00001V5.70997L3.00025 7.70998H3.71027L4.85023 6.56007V12.35L5.35023 12.85H10.0003V13.37L11.3303 14.71H12.0402L14.7103 12.0401V11.33L13.3703 10H12.6703L10.8103 11.85H5.81025V7.84999H10.0003V8.32997L11.3403 9.70998ZM13.0303 6.06007L13.6602 6.68995L11.6602 8.68996L11.0303 8.06007L13.0303 6.06007ZM13.0303 11.0601L13.6602 11.69L11.6602 13.69L11.0303 13.0601L13.0303 11.0601ZM3.35022 6.65004L2.06024 5.34998L5.35023 2.06006L6.65028 3.34998L3.35022 6.65004Z" fill="#D67E00"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-color.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-color.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00024 1.00305C6.14373 1.00305 4.36323 1.74059 3.05048 3.05334C1.73772 4.3661 1.00024 6.14654 1.00024 8.00305V8.43311C1.09024 9.94311 2.91024 10.2231 4.00024 9.13306C4.35673 8.81625 4.82078 8.64759 5.29749 8.66162C5.77419 8.67565 6.22753 8.87127 6.56476 9.2085C6.90199 9.54572 7.0976 9.99912 7.11163 10.4758C7.12567 10.9525 6.95707 11.4166 6.64026 11.7731C5.54026 12.9331 5.85025 14.843 7.44025 14.973H8.04022C9.89674 14.973 11.6772 14.2356 12.99 12.9229C14.3027 11.6101 15.0402 9.82954 15.0402 7.97302C15.0402 6.11651 14.3027 4.33607 12.99 3.02332C11.6772 1.71056 9.89674 0.973022 8.04022 0.973022L8.00024 1.00305ZM8.00024 14.0031H7.48022C7.34775 13.9989 7.22072 13.9495 7.12024 13.863C7.04076 13.7807 6.98839 13.6761 6.97021 13.5631C6.93834 13.3682 6.95353 13.1684 7.0144 12.9806C7.07528 12.7927 7.18013 12.6222 7.32025 12.483C7.84072 11.9474 8.1319 11.2299 8.1319 10.483C8.1319 9.73615 7.84072 9.0187 7.32025 8.48303C7.05373 8.21635 6.73723 8.00481 6.38892 7.86047C6.0406 7.71614 5.66726 7.64185 5.29022 7.64185C4.91318 7.64185 4.53984 7.71614 4.19153 7.86047C3.84321 8.00481 3.52678 8.21635 3.26025 8.48303C3.15093 8.61081 3.01113 8.709 2.85382 8.76843C2.69651 8.82786 2.52673 8.84657 2.36023 8.823C2.27617 8.80694 2.19927 8.76498 2.14026 8.703C2.07155 8.6224 2.0358 8.5189 2.04022 8.41309V8.04309C2.04022 6.8564 2.39216 5.69629 3.05145 4.70959C3.71074 3.7229 4.64778 2.95388 5.74414 2.49976C6.8405 2.04563 8.04693 1.92681 9.21082 2.15833C10.3747 2.38984 11.4438 2.9613 12.2829 3.80042C13.122 4.63953 13.6934 5.70867 13.9249 6.87256C14.1564 8.03644 14.0376 9.24275 13.5835 10.3391C13.1294 11.4355 12.3604 12.3726 11.3737 13.0319C10.387 13.6911 9.22691 14.0431 8.04022 14.0431L8.00024 14.0031ZM9.00024 3.99683C9.00024 4.54911 8.55253 4.99683 8.00024 4.99683C7.44796 4.99683 7.00024 4.54911 7.00024 3.99683C7.00024 3.44454 7.44796 2.99683 8.00024 2.99683C8.55253 2.99683 9.00024 3.44454 9.00024 3.99683ZM12.0002 11.0037C12.0002 11.5559 11.5525 12.0037 11.0002 12.0037C10.448 12.0037 10.0002 11.5559 10.0002 11.0037C10.0002 10.4514 10.448 10.0037 11.0002 10.0037C11.5525 10.0037 12.0002 10.4514 12.0002 11.0037ZM5.00024 6.00415C5.55253 6.00415 6.00024 5.55644 6.00024 5.00415C6.00024 4.45187 5.55253 4.00415 5.00024 4.00415C4.44796 4.00415 4.00024 4.45187 4.00024 5.00415C4.00024 5.55644 4.44796 6.00415 5.00024 6.00415ZM12.0002 5.00415C12.0002 5.55644 11.5525 6.00415 11.0002 6.00415C10.448 6.00415 10.0002 5.55644 10.0002 5.00415C10.0002 4.45187 10.448 4.00415 11.0002 4.00415C11.5525 4.00415 12.0002 4.45187 12.0002 5.00415ZM13.0003 7.99939C13.0003 8.55167 12.5526 8.99939 12.0003 8.99939C11.448 8.99939 11.0003 8.55167 11.0003 7.99939C11.0003 7.4471 11.448 6.99939 12.0003 6.99939C12.5526 6.99939 13.0003 7.4471 13.0003 7.99939Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-constant.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-constant.svg @@ -1,4 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4.00024 6H12.0002V7H4.00024V6ZM12.0002 9H4.00024V10H12.0002V9Z" fill="#424242"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1.00024 4L2.00024 3H14.0002L15.0002 4V12L14.0002 13H2.00024L1.00024 12V4ZM2.00024 4V12H14.0002V4H2.00024Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-enumerator-member.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-enumerator-member.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7.00024 3L8.00024 2H14.0002L15.0002 3V8L14.0002 9H10.0002V8H14.0002V3H8.00024V6H7.00024V3ZM9.00024 9V8L8.00024 7H7.00024H2.00024L1.00024 8V13L2.00024 14H8.00024L9.00024 13V9ZM8.00024 8V9V13H2.00024V8H7.00024H8.00024ZM9.41446 7L9.00024 6.58579V6H13.0002V7H9.41446ZM9.00024 4H13.0002V5H9.00024V4ZM7.00024 10H3.00024V11H7.00024V10Z" fill="#007ACC"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-enumerator.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-enumerator.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0002 2H8.00024L7.00024 3V6H8.00024V3H14.0002V8H10.0002V9H14.0002L15.0002 8V3L14.0002 2ZM9.00024 6H13.0002V7H9.41024L9.00024 6.59V6ZM7.00024 7H2.00024L1.00024 8V13L2.00024 14H8.00024L9.00024 13V8L8.00024 7H7.00024ZM8.00024 13H2.00024V8H8.00024V9V13ZM3.00024 9H7.00024V10H3.00024V9ZM3.00024 11H7.00024V12H3.00024V11ZM9.00024 4H13.0002V5H9.00024V4Z" fill="#D67E00"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-event.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-event.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7.41379 1.55996L8.31177 1H11.6059L12.4243 2.57465L10.2358 6H12.0176L12.7365 7.69512L5.61967 15L4.01699 13.837L6.11967 10H4.89822L4.00024 8.55996L7.41379 1.55996ZM7.78058 9L4.90078 14.3049L12.0176 7H8.31177L11.6059 2H8.31177L4.89822 9H7.78058Z" fill="#D67E00"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-field.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-field.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M14.4502 4.5L9.4502 2H8.55029L1.55029 5.5L1.00024 6.39001V10.89L1.55029 11.79L6.55029 14.29H7.4502L14.4502 10.79L15.0002 9.89001V5.39001L14.4502 4.5ZM6.4502 13.14L1.9502 10.89V7.17004L6.4502 9.17004V13.14ZM6.9502 8.33997L2.29028 6.22998L8.9502 2.89001L13.6202 5.22998L6.9502 8.33997ZM13.9502 9.89001L7.4502 13.14V9.20996L13.9502 6.20996V9.89001Z" fill="#007ACC"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-file.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-file.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M13.8502 4.44L10.5702 1.14L10.2202 1H2.50024L2.00024 1.5V14.5L2.50024 15H13.5002L14.0002 14.5V4.8L13.8502 4.44ZM13.0002 5H10.0002V2L13.0002 5ZM3.00024 14V2H9.00024V5.5L9.50024 6H13.0002V14H3.00024Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-interface.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-interface.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M11.4967 4C10.6552 3.9989 9.8416 4.30189 9.20581 4.85315C8.57002 5.40442 8.15489 6.16684 8.03674 7H4.93665C4.81495 6.52867 4.52557 6.11794 4.12268 5.84473C3.71979 5.57152 3.23108 5.45466 2.74817 5.51599C2.26526 5.57733 1.82131 5.81261 1.49951 6.17786C1.17772 6.54311 1.00024 7.01322 1.00024 7.5C1.00024 7.98679 1.17772 8.45689 1.49951 8.82215C1.82131 9.1874 2.26526 9.42267 2.74817 9.48401C3.23108 9.54535 3.71979 9.42848 4.12268 9.15528C4.52557 8.88207 4.81495 8.47133 4.93665 8H8.03674C8.13261 8.66418 8.41741 9.28683 8.85718 9.7937C9.29695 10.3006 9.87308 10.6703 10.5171 10.8589C11.1611 11.0475 11.8458 11.047 12.4895 10.8574C13.1332 10.6679 13.7089 10.2973 14.1479 9.7898C14.587 9.28227 14.8708 8.65919 14.9657 7.99488C15.0606 7.33056 14.9624 6.65298 14.683 6.04285C14.4036 5.43272 13.9547 4.91578 13.3898 4.55359C12.8248 4.19141 12.1678 3.99922 11.4967 4V4ZM11.4967 10C11.0023 10 10.5189 9.85332 10.1078 9.57862C9.69667 9.30391 9.37623 8.91348 9.18701 8.45667C8.99779 7.99985 8.94834 7.49728 9.0448 7.01233C9.14126 6.52738 9.37925 6.08181 9.72888 5.73218C10.0785 5.38255 10.5241 5.14456 11.009 5.0481C11.494 4.95164 11.9966 5.00109 12.4534 5.19031C12.9102 5.37953 13.3006 5.69996 13.5753 6.11109C13.85 6.52221 13.9967 7.00555 13.9967 7.5C13.9967 8.16304 13.7334 8.79898 13.2645 9.26783C12.7957 9.73667 12.1597 10 11.4967 10V10Z" fill="#007ACC"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-key.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-key.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M7.22313 10.933C7.54888 11.1254 7.92188 11.2231 8.30013 11.215C8.63802 11.2218 8.97279 11.1492 9.27746 11.003C9.58213 10.8567 9.84817 10.6409 10.0541 10.373C10.5094 9.76519 10.7404 9.01867 10.7081 8.25998C10.7414 7.58622 10.5376 6.9221 10.1321 6.38298C9.93599 6.14161 9.68601 5.94957 9.40225 5.82228C9.11848 5.69498 8.80883 5.63597 8.49813 5.64997C8.07546 5.64699 7.66018 5.76085 7.29813 5.97898C7.18328 6.04807 7.07515 6.12775 6.97513 6.21698V3.47498H5.98413V11.1H6.97913V10.756C7.0554 10.8217 7.13702 10.8809 7.22313 10.933ZM7.85005 6.70006C8.03622 6.62105 8.23832 6.58677 8.44013 6.59998C8.61281 6.59452 8.78429 6.63054 8.94018 6.70501C9.09608 6.77948 9.23185 6.89023 9.33613 7.02798C9.59277 7.39053 9.71865 7.82951 9.69313 8.27297C9.71996 8.79748 9.57993 9.31701 9.29313 9.75698C9.18846 9.91527 9.04571 10.0447 8.87797 10.1335C8.71023 10.2223 8.52289 10.2675 8.33313 10.265C8.14958 10.2732 7.96654 10.24 7.79758 10.1678C7.62862 10.0956 7.47809 9.98628 7.35713 9.84797C7.10176 9.55957 6.96525 9.18506 6.97513 8.79998V8.19998C6.96324 7.78332 7.10287 7.3765 7.36813 7.05498C7.49883 6.90064 7.66388 6.77908 7.85005 6.70006ZM3.28926 5.67499C2.97035 5.67933 2.65412 5.734 2.35226 5.83699C2.06442 5.92293 1.79372 6.05828 1.55226 6.23699L1.45226 6.31399V7.51399L1.87526 7.15499C2.24603 6.80478 2.73158 6.60146 3.24126 6.58299C3.36617 6.57164 3.49194 6.59147 3.60731 6.64068C3.72267 6.6899 3.82402 6.76697 3.90226 6.86499C4.05245 7.0971 4.13264 7.36754 4.13326 7.64399L2.90026 7.82499C2.39459 7.87781 1.9155 8.07772 1.52226 8.39999C1.36721 8.55181 1.24363 8.73271 1.15859 8.93235C1.07355 9.13199 1.02873 9.34644 1.02668 9.56343C1.02464 9.78042 1.06542 9.99568 1.14668 10.1969C1.22795 10.3981 1.3481 10.5813 1.50026 10.736C1.66895 10.8904 1.86647 11.01 2.08149 11.0879C2.29651 11.1659 2.5248 11.2005 2.75326 11.19C3.14725 11.1931 3.53302 11.0774 3.86026 10.858C3.96178 10.7897 4.05744 10.7131 4.14626 10.629V11.073H5.08726V7.71499C5.12161 7.17422 4.95454 6.63988 4.61826 6.21499C4.45004 6.03285 4.24373 5.89003 4.01402 5.7967C3.78431 5.70336 3.53686 5.66181 3.28926 5.67499ZM4.14626 8.71599C4.16588 9.13435 4.02616 9.54459 3.75526 9.864C3.63714 10.0005 3.49023 10.1092 3.3251 10.1821C3.15998 10.2551 2.98073 10.2906 2.80026 10.286C2.69073 10.2945 2.5806 10.2812 2.47624 10.2469C2.37187 10.2125 2.27536 10.1579 2.19226 10.086C2.06104 9.93455 1.9888 9.74088 1.9888 9.54049C1.9888 9.34011 2.06104 9.14644 2.19226 8.99499C2.47347 8.82131 2.79258 8.71837 3.12226 8.69499L4.14226 8.54699L4.14626 8.71599ZM12.459 11.0325C12.7663 11.1638 13.0985 11.2261 13.4324 11.215C13.9273 11.227 14.4156 11.1006 14.8424 10.85L14.9654 10.775L14.9784 10.768V9.61504L14.5324 9.93504C14.2163 10.1592 13.8359 10.2747 13.4484 10.264C13.2499 10.2719 13.0522 10.2342 12.8705 10.1538C12.6889 10.0733 12.5281 9.95232 12.4004 9.80004C12.1146 9.42453 11.9728 8.95911 12.0004 8.48804C11.9739 7.98732 12.1355 7.49475 12.4534 7.10704C12.5936 6.94105 12.7698 6.80914 12.9685 6.7213C13.1672 6.63346 13.3833 6.592 13.6004 6.60004C13.9441 6.59844 14.281 6.69525 14.5714 6.87904L15.0004 7.14404V5.97004L14.8314 5.89704C14.4628 5.73432 14.0644 5.6502 13.6614 5.65004C13.3001 5.63991 12.9409 5.70762 12.608 5.84859C12.2752 5.98956 11.9766 6.20048 11.7324 6.46704C11.2263 7.02683 10.9584 7.76186 10.9854 8.51604C10.9569 9.22346 11.1958 9.91569 11.6544 10.455C11.8772 10.704 12.1518 10.9012 12.459 11.0325Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-keyword.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-keyword.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M15.0002 4H10.0002V3H15.0002V4ZM14.0002 7H12.0002V8H14.0002V7ZM10.0002 7H1.00024V8H10.0002V7ZM12.0002 13H1.00024V14H12.0002V13ZM7.00024 10H1.00024V11H7.00024V10ZM15.0002 10H10.0002V11H15.0002V10ZM8.00024 2V5H1.00024V2H8.00024ZM7.00024 3H2.00024V4H7.00024V3Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-method.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-method.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M13.5103 4L8.51025 1H7.51025L2.51025 4L2.02026 4.85999V10.86L2.51025 11.71L7.51025 14.71H8.51025L13.5103 11.71L14.0002 10.86V4.85999L13.5103 4ZM7.51025 13.5601L3.01025 10.86V5.69995L7.51025 8.15002V13.5601ZM3.27026 4.69995L8.01025 1.85999L12.7502 4.69995L8.01025 7.29004L3.27026 4.69995ZM13.0103 10.86L8.51025 13.5601V8.15002L13.0103 5.69995V10.86Z" fill="#652D90"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-misc.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-misc.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4.00024 2H12.0002V6C12.3418 6.03511 12.6777 6.11234 13.0002 6.22998V1H3.00024V9.47998L4.00024 7.72998V2ZM6.14026 10L5.00024 8L4.00024 9.75L3.29028 11L1.00024 15H9.00024L6.71021 11L6.14026 10ZM2.72021 14L4.44019 11L5.00024 10L5.5603 11L7.28027 14H2.72021ZM9.55577 7.58984C10.1313 7.20526 10.808 7 11.5002 7C12.4285 7 13.3187 7.36877 13.9751 8.02515C14.6315 8.68152 15.0002 9.57174 15.0002 10.5C15.0002 11.1922 14.795 11.8689 14.4104 12.4445C14.0258 13.02 13.4791 13.4686 12.8396 13.7335C12.2 13.9984 11.4963 14.0678 10.8174 13.9327C10.1384 13.7977 9.51485 13.4643 9.02537 12.9749C8.53589 12.4854 8.20253 11.8618 8.06748 11.1829C7.93244 10.5039 8.0018 9.80019 8.2667 9.16064C8.53161 8.5211 8.98019 7.97443 9.55577 7.58984ZM10.1113 12.5786C10.5224 12.8533 11.0058 13 11.5002 13C12.1633 13 12.7992 12.7367 13.268 12.2678C13.7369 11.799 14.0002 11.163 14.0002 10.5C14.0002 10.0055 13.8535 9.52221 13.5788 9.11108C13.3041 8.69996 12.9137 8.37953 12.4569 8.19031C12.0001 8.00109 11.4975 7.95163 11.0126 8.0481C10.5276 8.14456 10.082 8.38255 9.7324 8.73218C9.38277 9.08181 9.14478 9.52738 9.04832 10.0123C8.95186 10.4973 9.00131 10.9998 9.19053 11.4567C9.37975 11.9135 9.70018 12.3039 10.1113 12.5786Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-namespace.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-namespace.svg @@ -1,10 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0)"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M6.00024 2.98361V2.97184V2H5.91107C5.59767 2 5.29431 2.06161 5.00152 2.18473C4.70842 2.30798 4.44967 2.48474 4.22602 2.71498C4.00336 2.94422 3.83816 3.19498 3.73306 3.46766L3.73257 3.46898C3.63406 3.7352 3.56839 4.01201 3.53557 4.29917L3.53543 4.30053C3.50702 4.5805 3.49894 4.86844 3.51108 5.16428C3.52297 5.45379 3.52891 5.74329 3.52891 6.03279C3.52891 6.23556 3.48999 6.42594 3.41225 6.60507L3.41185 6.60601C3.33712 6.78296 3.23447 6.93866 3.10341 7.07359C2.97669 7.20405 2.8249 7.31055 2.64696 7.3925C2.47084 7.46954 2.28522 7.5082 2.08942 7.5082H2.00024V7.6V8.4V8.4918H2.08942C2.2849 8.4918 2.47026 8.53238 2.64625 8.61334L2.64766 8.61396C2.82482 8.69157 2.97602 8.79762 3.10245 8.93161L3.10436 8.93352C3.23452 9.0637 3.33684 9.21871 3.41153 9.39942L3.41225 9.40108C3.49011 9.58047 3.52891 9.76883 3.52891 9.96721C3.52891 10.2567 3.52297 10.5462 3.51108 10.8357C3.49894 11.1316 3.50701 11.4215 3.5354 11.7055L3.5356 11.7072C3.56844 11.9903 3.63412 12.265 3.73256 12.531L3.73307 12.5323C3.83817 12.805 4.00336 13.0558 4.22602 13.285C4.44967 13.5153 4.70842 13.692 5.00152 13.8153C5.29431 13.9384 5.59767 14 5.91107 14H6.00024V13.2V13.0164H5.91107C5.71119 13.0164 5.52371 12.9777 5.34787 12.9008C5.17421 12.8191 5.02218 12.7126 4.89111 12.5818C4.76411 12.4469 4.66128 12.2911 4.58247 12.1137C4.50862 11.9346 4.47158 11.744 4.47158 11.541C4.47158 11.3127 4.47554 11.0885 4.48346 10.8686C4.49149 10.6411 4.49151 10.4195 4.48349 10.2039C4.47938 9.98246 4.46109 9.76883 4.42847 9.56312C4.39537 9.35024 4.33946 9.14757 4.26063 8.95536C4.18115 8.76157 4.07282 8.57746 3.9364 8.40298C3.8237 8.25881 3.68563 8.12462 3.52307 8C3.68563 7.87538 3.8237 7.74119 3.9364 7.59702C4.07282 7.42254 4.18115 7.23843 4.26063 7.04464C4.33938 6.85263 4.39537 6.65175 4.4285 6.44285C4.46107 6.2333 4.47938 6.01973 4.48349 5.80219C4.49151 5.58262 4.4915 5.36105 4.48345 5.13749C4.47554 4.9134 4.47158 4.68725 4.47158 4.45902C4.47158 4.26019 4.50857 4.07152 4.58263 3.89205C4.6616 3.71034 4.76445 3.55475 4.8911 3.42437C5.02218 3.28942 5.17485 3.18275 5.34826 3.10513C5.52404 3.02427 5.71138 2.98361 5.91107 2.98361H6.00024ZM10.0002 13.0164V13.0282V14H10.0894C10.4028 14 10.7062 13.9384 10.999 13.8153C11.2921 13.692 11.5508 13.5153 11.7745 13.285C11.9971 13.0558 12.1623 12.805 12.2674 12.5323L12.2679 12.531C12.3664 12.2648 12.4321 11.988 12.4649 11.7008L12.4651 11.6995C12.4935 11.4195 12.5015 11.1316 12.4894 10.8357C12.4775 10.5462 12.4716 10.2567 12.4716 9.96721C12.4716 9.76444 12.5105 9.57406 12.5882 9.39493L12.5886 9.39399C12.6634 9.21704 12.766 9.06134 12.8971 8.92642C13.0238 8.79595 13.1756 8.68945 13.3535 8.6075C13.5296 8.53046 13.7153 8.4918 13.9111 8.4918H14.0002V8.4V7.6V7.5082H13.9111C13.7156 7.5082 13.5302 7.46762 13.3542 7.38666L13.3528 7.38604C13.1757 7.30844 13.0245 7.20238 12.898 7.06839L12.8961 7.06648C12.766 6.9363 12.6637 6.78129 12.589 6.60058L12.5882 6.59892C12.5104 6.41953 12.4716 6.23117 12.4716 6.03279C12.4716 5.74329 12.4775 5.45379 12.4894 5.16428C12.5015 4.86842 12.4935 4.57848 12.4651 4.29454L12.4649 4.29285C12.4321 4.00971 12.3664 3.73502 12.2679 3.46897L12.2674 3.46766C12.1623 3.19499 11.9971 2.94422 11.7745 2.71498C11.5508 2.48474 11.2921 2.30798 10.999 2.18473C10.7062 2.06161 10.4028 2 10.0894 2H10.0002V2.8V2.98361H10.0894C10.2893 2.98361 10.4768 3.0223 10.6526 3.09917C10.8263 3.18092 10.9783 3.28736 11.1094 3.41823C11.2364 3.55305 11.3392 3.70889 11.418 3.88628C11.4919 4.0654 11.5289 4.25596 11.5289 4.45902C11.5289 4.68727 11.5249 4.91145 11.517 5.13142C11.509 5.35894 11.509 5.58049 11.517 5.79605C11.5211 6.01754 11.5394 6.23117 11.572 6.43688C11.6051 6.64976 11.661 6.85243 11.7399 7.04464C11.8193 7.23843 11.9277 7.42254 12.0641 7.59702C12.1768 7.74119 12.3149 7.87538 12.4774 8C12.3149 8.12462 12.1768 8.25881 12.0641 8.40298C11.9277 8.57746 11.8193 8.76157 11.7399 8.95536C11.6611 9.14737 11.6051 9.34825 11.572 9.55715C11.5394 9.7667 11.5211 9.98027 11.517 10.1978C11.509 10.4174 11.509 10.6389 11.517 10.8625C11.5249 11.0866 11.5289 11.3128 11.5289 11.541C11.5289 11.7398 11.4919 11.9285 11.4179 12.1079C11.3389 12.2897 11.236 12.4452 11.1094 12.5756C10.9783 12.7106 10.8256 12.8173 10.6522 12.8949C10.4764 12.9757 10.2891 13.0164 10.0894 13.0164H10.0002Z" fill="#424242"/> -</g> -<defs> -<clipPath id="clip0"> -<rect width="16" height="16" fill="white" transform="translate(0.000244141)"/> -</clipPath> -</defs> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-numeric.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-numeric.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11.0002 1V5H15.0002V6H11.0002L11.0002 10H15.0002V11H11.0002V15H10.0002V11H6.00024V15H5.00024L5.00024 11H1.00024V10H5.00024L5.00024 6H1.00024V5H5.00024L5.00024 1H6.00024V5H10.0002V1H11.0002ZM6.00024 6L6.00024 10H10.0002L10.0002 6H6.00024Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-operator.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-operator.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.87313 1.10023C3.20793 1.23579 3.4757 1.498 3.61826 1.82988C3.69056 1.99959 3.72699 2.18242 3.72526 2.36688C3.72642 2.54999 3.69 2.7314 3.61826 2.89988C3.51324 3.14567 3.33807 3.35503 3.11466 3.50177C2.89126 3.64851 2.62955 3.72612 2.36226 3.72488C2.17948 3.72592 1.99842 3.68951 1.83026 3.61788C1.58322 3.51406 1.37252 3.33932 1.22478 3.11575C1.07704 2.89219 0.99891 2.62984 1.00026 2.36188C0.999374 2.17921 1.03543 1.99825 1.10626 1.82988C1.24362 1.50314 1.50353 1.24323 1.83026 1.10588C2.16357 0.966692 2.53834 0.964661 2.87313 1.10023ZM2.57526 2.86488C2.70564 2.80913 2.80951 2.70526 2.86526 2.57488C2.89314 2.50838 2.90742 2.43698 2.90726 2.36488C2.90838 2.2654 2.88239 2.1675 2.8321 2.08167C2.7818 1.99584 2.70909 1.92531 2.62176 1.87767C2.53443 1.83002 2.43577 1.80705 2.33638 1.81121C2.23698 1.81537 2.1406 1.8465 2.05755 1.90128C1.97451 1.95606 1.90794 2.03241 1.865 2.12215C1.82205 2.21188 1.80434 2.31161 1.81376 2.41065C1.82319 2.50968 1.85939 2.60428 1.9185 2.6843C1.9776 2.76433 2.05738 2.82675 2.14926 2.86488C2.28574 2.92089 2.43878 2.92089 2.57526 2.86488ZM6.43019 1.1095L1.10992 6.42977L1.79581 7.11567L7.11608 1.7954L6.43019 1.1095ZM11.5002 8.99999H12.5002V11.5H15.0002V12.5H12.5002V15H11.5002V12.5H9.00024V11.5H11.5002V8.99999ZM5.76801 9.52509L6.47512 10.2322L4.70735 12L6.47512 13.7677L5.76801 14.4748L4.00024 12.7071L2.23248 14.4748L1.52537 13.7677L3.29314 12L1.52537 10.2322L2.23248 9.52509L4.00024 11.2929L5.76801 9.52509ZM7.11826 5.32988C7.01466 5.08268 6.83997 4.87183 6.61636 4.72406C6.39275 4.57629 6.13028 4.49826 5.86226 4.49988C5.6796 4.49899 5.49864 4.53505 5.33026 4.60588C5.00353 4.74323 4.74362 5.00314 4.60626 5.32988C4.53612 5.49478 4.49922 5.67191 4.49766 5.8511C4.4961 6.0303 4.52992 6.20804 4.59718 6.37414C4.66443 6.54024 4.76381 6.69143 4.88961 6.81906C5.0154 6.94669 5.16515 7.04823 5.33026 7.11788C5.49892 7.18848 5.67993 7.22484 5.86276 7.22484C6.0456 7.22484 6.22661 7.18848 6.39526 7.11788C6.64225 7.01388 6.85295 6.83913 7.00082 6.61563C7.1487 6.39213 7.22713 6.12987 7.22626 5.86188C7.22679 5.67905 7.19005 5.49803 7.11826 5.32988ZM6.36526 6.07488C6.3379 6.13937 6.29854 6.19808 6.24926 6.24788C6.19932 6.29724 6.14066 6.33691 6.07626 6.36488C6.00878 6.39297 5.93635 6.40725 5.86326 6.40688C5.79015 6.40744 5.71769 6.39315 5.65026 6.36488C5.58565 6.33729 5.52693 6.29757 5.47726 6.24788C5.42715 6.19856 5.38738 6.13975 5.36026 6.07488C5.30425 5.9384 5.30425 5.78536 5.36026 5.64888C5.41561 5.51846 5.51965 5.41477 5.65026 5.35988C5.71761 5.33126 5.79008 5.31663 5.86326 5.31688C5.93642 5.31685 6.00884 5.33147 6.07626 5.35988C6.14062 5.38749 6.19928 5.42682 6.24926 5.47588C6.2981 5.52603 6.33741 5.58465 6.36526 5.64888C6.39364 5.7163 6.40827 5.78872 6.40827 5.86188C6.40827 5.93503 6.39364 6.00745 6.36526 6.07488ZM14.0002 3H10.0002V4H14.0002V3Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-parameter.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-parameter.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M11.0003 6H10.0003V5.5C10.0003 5.22386 9.7764 5 9.50026 5H8.47926V10.5C8.47926 10.7761 8.70312 11 8.97926 11H9.47926V12H6.47926V11H6.97926C7.2554 11 7.47926 10.7761 7.47926 10.5V5H6.50026C6.22412 5 6.00026 5.22386 6.00026 5.5V6H5.00026V4H11.0003V6ZM13.9145 8.0481L12.4522 6.58581L13.1593 5.87871L14.9751 7.69454V8.40165L13.2074 10.1694L12.5003 9.46231L13.9145 8.0481ZM3.54835 9.4623L2.08605 8.00002L3.50026 6.58581L2.79316 5.8787L1.02539 7.64647V8.35357L2.84124 10.1694L3.54835 9.4623Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-property.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-property.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M2.80747 14.9754C2.57144 14.9721 2.33851 14.9211 2.12271 14.8254C1.90692 14.7297 1.71273 14.5913 1.55183 14.4186C1.23875 14.1334 1.04458 13.7408 1.00799 13.3189C0.966469 12.8828 1.09293 12.4473 1.36158 12.1013C2.56804 10.8289 4.94755 8.4494 6.67836 6.75479C6.31007 5.75887 6.32729 4.66127 6.72661 3.67739C7.05499 2.85876 7.63893 2.16805 8.39153 1.70807C8.98195 1.31706 9.66055 1.07944 10.3659 1.01673C11.0713 0.954022 11.7812 1.06819 12.4313 1.34892L13.0485 1.6162L10.1827 4.56738L11.4374 5.82582L14.3811 2.94887L14.6484 3.56788C14.8738 4.08976 14.9933 4.65119 14.9999 5.21961C15.0066 5.78802 14.9004 6.35211 14.6874 6.87915C14.4763 7.40029 14.1626 7.87368 13.7649 8.27122C13.5396 8.49169 13.2907 8.68653 13.0225 8.85218C12.4676 9.22275 11.8327 9.45636 11.1699 9.5338C10.5071 9.61124 9.83546 9.5303 9.21007 9.29764C8.11219 10.4113 5.37167 13.1704 3.89143 14.5522C3.5945 14.8219 3.20856 14.9726 2.80747 14.9754ZM10.7451 1.92802C10.0873 1.92637 9.44383 2.12018 8.89639 2.48485C8.68289 2.6152 8.48461 2.76897 8.30522 2.9433C7.82813 3.42423 7.5095 4.03953 7.39206 4.70669C7.27462 5.37385 7.36398 6.06098 7.64816 6.67591L7.78366 6.97288L7.55072 7.20025C5.81249 8.89672 3.28171 11.4201 2.06504 12.7045C1.9567 12.8658 1.91037 13.0608 1.93459 13.2535C1.95881 13.4463 2.05195 13.6238 2.19682 13.7532C2.28029 13.8462 2.38201 13.9211 2.49565 13.9731C2.59581 14.0184 2.70408 14.043 2.81397 14.0455C2.98089 14.0413 3.14068 13.977 3.26407 13.8646C4.83711 12.3964 7.87646 9.32641 8.76832 8.42435L8.99754 8.19326L9.29266 8.32783C9.80642 8.56732 10.3734 8.66985 10.9385 8.62545C11.5036 8.58106 12.0476 8.39125 12.5176 8.07447C12.7316 7.9426 12.9299 7.78694 13.1088 7.61045C13.4186 7.30153 13.6634 6.93374 13.8288 6.52874C13.9943 6.12375 14.077 5.68974 14.0721 5.25228C14.0722 5.03662 14.0507 4.82148 14.0081 4.61007L11.4309 7.12508L8.87968 4.57759L11.3947 1.98834C11.1807 1.94674 10.9631 1.92653 10.7451 1.92802Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-ruler.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-ruler.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M4.00024 1L3.00024 2V14L4.00024 15H12.0002L13.0002 14V2L12.0002 1H4.00024ZM4.00024 3V2H12.0002V14H4.00024V13H6.00024V12H4.00024V10H8.00024V9H4.00024V7H6.00024V6H4.00024V4H8.00024V3H4.00024Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-snippet.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-snippet.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.50024 1L2.00024 1.5V13H3.00024V2H14.0002V13H15.0002V1.5L14.5002 1H2.50024ZM2.00024 15V14H3.00024V15H2.00024ZM5.00024 14.0001H4.00024V15.0001H5.00024V14.0001ZM6.00024 14.0001H7.00024V15.0001H6.00024V14.0001ZM9.00024 14.0001H8.00024V15.0001H9.00024V14.0001ZM10.0002 14.0001H11.0002V15.0001H10.0002V14.0001ZM15.0002 15.0001V14.0001H14.0002V15.0001H15.0002ZM12.0002 14.0001H13.0002V15.0001H12.0002V14.0001Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-string.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-string.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.00024 2L1.00024 3V12L2.00024 13H14.0002L15.0002 12V3L14.0002 2H2.00024ZM2.00024 12V3H14.0002V12H2.00024ZM5.35585 8.93017H6.00024V7.22067C6.00024 6.40689 5.68559 6 5.05628 6C4.92122 6 4.77108 6.02421 4.60585 6.07263C4.44205 6.12104 4.31274 6.17691 4.21792 6.24022V6.90503C4.45499 6.70205 4.70499 6.60056 4.96792 6.60056C5.22941 6.60056 5.36016 6.75698 5.36016 7.06983L4.76102 7.17318C4.25384 7.25885 4.00024 7.57914 4.00024 8.13408C4.00024 8.39665 4.06131 8.60708 4.18343 8.76536C4.307 8.92179 4.47582 9 4.6899 9C4.98013 9 5.19924 8.83985 5.34723 8.51955H5.35585V8.93017ZM5.36016 7.57542V7.76816C5.36016 7.9432 5.31993 8.08845 5.23947 8.20391C5.15901 8.3175 5.05484 8.3743 4.92697 8.3743C4.83501 8.3743 4.76174 8.34264 4.70714 8.27933C4.65398 8.21415 4.6274 8.13128 4.6274 8.03073C4.6274 7.80912 4.73803 7.6797 4.9593 7.64246L5.36016 7.57542ZM7.60118 8.62622H7.59367V8.93511H7.00024V5H7.59367V6.67683H7.60118C7.74766 6.36708 7.95611 6.2122 8.22653 6.2122C8.47442 6.2122 8.66535 6.32987 8.7993 6.56522C8.93326 6.80056 9.00024 7.12243 9.00024 7.53082C9.00024 7.97383 8.922 8.32944 8.7655 8.59766C8.60901 8.86589 8.39993 9 8.13827 9C7.90165 9 7.72262 8.87541 7.60118 8.62622ZM7.58428 7.50487V7.77742C7.58428 7.94873 7.61996 8.09063 7.69132 8.20311C7.76269 8.3156 7.85408 8.37184 7.9655 8.37184C8.10071 8.37184 8.20525 8.30002 8.27912 8.15639C8.35423 8.01103 8.39179 7.80597 8.39179 7.54121C8.39179 7.32144 8.35736 7.15012 8.28851 7.02726C8.2209 6.90266 8.12387 6.84036 7.99743 6.84036C7.87849 6.84036 7.77959 6.9018 7.70071 7.02466C7.62309 7.14752 7.58428 7.30759 7.58428 7.50487ZM11.2619 9C11.5837 9 11.8298 8.94227 12.0002 8.82682V8.11732C11.8202 8.25512 11.6362 8.32402 11.4483 8.32402C11.2364 8.32402 11.0699 8.25233 10.9489 8.10894C10.8278 7.96369 10.7673 7.76443 10.7673 7.51117C10.7673 7.25047 10.8302 7.04656 10.956 6.89944C11.0835 6.75047 11.2555 6.67598 11.4722 6.67598C11.6665 6.67598 11.8425 6.74488 12.0002 6.88268V6.13408C11.8712 6.04469 11.6625 6 11.3742 6C10.9568 6 10.6231 6.1406 10.373 6.42179C10.1245 6.70112 10.0002 7.0838 10.0002 7.56983C10.0002 7.99069 10.1165 8.33426 10.3491 8.60056C10.5817 8.86685 10.8859 9 11.2619 9Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-structure.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-structure.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.00024 2L1.00024 3V6L2.00024 7H14.0002L15.0002 6V3L14.0002 2H2.00024ZM2.00024 3H3.00024H13.0002H14.0002V4V5V6H13.0002H3.00024H2.00024V5V4V3ZM1.00024 10L2.00024 9H5.00024L6.00024 10V13L5.00024 14H2.00024L1.00024 13V10ZM3.00024 10H2.00024V11V12V13H3.00024H4.00024H5.00024V12V11V10H4.00024H3.00024ZM10.0002 10L11.0002 9H14.0002L15.0002 10V13L14.0002 14H11.0002L10.0002 13V10ZM12.0002 10H11.0002V11V12V13H12.0002H13.0002H14.0002V12V11V10H13.0002H12.0002Z" fill="#424242"/> -</svg> diff --git a/elpa/company-0.10.2/icons/vscode-light/symbol-variable.svg b/elpa/company-0.10.2/icons/vscode-light/symbol-variable.svg @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M2.00024 5H4.00024V4H1.50024L1.00024 4.5V12.5L1.50024 13H4.00024V12H2.00024V5ZM14.5002 4H12.0002V5H14.0002V12H12.0002V13H14.5002L15.0002 12.5V4.5L14.5002 4ZM11.7603 6.56995L12.0002 7V9.51001L11.7002 9.95996L7.2002 11.96H6.74023L4.24023 10.46L4.00024 10.03V7.53003L4.30029 7.06995L8.80029 5.06995H9.26025L11.7603 6.56995ZM5.00024 9.70996L6.50024 10.61V9.28003L5.00024 8.38V9.70996ZM5.5802 7.56006L7.03027 8.43005L10.4203 6.93005L8.97021 6.06006L5.5802 7.56006ZM7.53027 10.73L11.0303 9.17004V7.77002L7.53027 9.31995V10.73Z" fill="#007ACC"/> -</svg> diff --git a/elpa/company-0.10.2/images/large/README b/elpa/company-0.10.2/images/large/README @@ -1,6 +0,0 @@ -This directory contains images for the HTML version of the User Manual. - -COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES - -Copyright (C) 2021 Free Software Foundation, Inc. -License: GNU General Public License version 3 or later (see LICENSE) diff --git a/elpa/company-0.10.2/images/large/echo-meta.png b/elpa/company-0.10.2/images/large/echo-meta.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/echo-qa.png b/elpa/company-0.10.2/images/large/echo-qa.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/echo-strip-qa.png b/elpa/company-0.10.2/images/large/echo-strip-qa.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/echo-strip.png b/elpa/company-0.10.2/images/large/echo-strip.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/echo.png b/elpa/company-0.10.2/images/large/echo.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/preview-dark.png b/elpa/company-0.10.2/images/large/preview-dark.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/preview-light.png b/elpa/company-0.10.2/images/large/preview-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-annotations.png b/elpa/company-0.10.2/images/large/tooltip-annotations.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-faces-light.png b/elpa/company-0.10.2/images/large/tooltip-faces-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-filter.png b/elpa/company-0.10.2/images/large/tooltip-filter.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-flip.png b/elpa/company-0.10.2/images/large/tooltip-flip.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-icon-bg.png b/elpa/company-0.10.2/images/large/tooltip-icon-bg.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-icon-face.png b/elpa/company-0.10.2/images/large/tooltip-icon-face.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-icons-dot.png b/elpa/company-0.10.2/images/large/tooltip-icons-dot.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-icons-text.png b/elpa/company-0.10.2/images/large/tooltip-icons-text.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-icons-vscode.png b/elpa/company-0.10.2/images/large/tooltip-icons-vscode.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-limit.png b/elpa/company-0.10.2/images/large/tooltip-limit.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-margin.png b/elpa/company-0.10.2/images/large/tooltip-margin.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-minimum-above.png b/elpa/company-0.10.2/images/large/tooltip-minimum-above.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-minimum-below.png b/elpa/company-0.10.2/images/large/tooltip-minimum-below.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-offset-display.png b/elpa/company-0.10.2/images/large/tooltip-offset-display.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-qa-faces-light.png b/elpa/company-0.10.2/images/large/tooltip-qa-faces-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-quick-access.png b/elpa/company-0.10.2/images/large/tooltip-quick-access.png Binary files differ. diff --git a/elpa/company-0.10.2/images/large/tooltip-search.png b/elpa/company-0.10.2/images/large/tooltip-search.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/README b/elpa/company-0.10.2/images/small/README @@ -1,6 +0,0 @@ -This directory contains images for the Info version of the User Manual. - -COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES - -Copyright (C) 2021 Free Software Foundation, Inc. -License: GNU General Public License version 3 or later (see LICENSE) diff --git a/elpa/company-0.10.2/images/small/echo-meta.png b/elpa/company-0.10.2/images/small/echo-meta.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/echo-qa.png b/elpa/company-0.10.2/images/small/echo-qa.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/echo-strip-qa.png b/elpa/company-0.10.2/images/small/echo-strip-qa.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/echo-strip.png b/elpa/company-0.10.2/images/small/echo-strip.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/echo.png b/elpa/company-0.10.2/images/small/echo.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/preview-dark.png b/elpa/company-0.10.2/images/small/preview-dark.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/preview-light.png b/elpa/company-0.10.2/images/small/preview-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-annotations.png b/elpa/company-0.10.2/images/small/tooltip-annotations.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-faces-light.png b/elpa/company-0.10.2/images/small/tooltip-faces-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-filter.png b/elpa/company-0.10.2/images/small/tooltip-filter.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-flip.png b/elpa/company-0.10.2/images/small/tooltip-flip.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-icon-bg.png b/elpa/company-0.10.2/images/small/tooltip-icon-bg.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-icon-face.png b/elpa/company-0.10.2/images/small/tooltip-icon-face.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-icons-dot.png b/elpa/company-0.10.2/images/small/tooltip-icons-dot.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-icons-text.png b/elpa/company-0.10.2/images/small/tooltip-icons-text.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-icons-vscode.png b/elpa/company-0.10.2/images/small/tooltip-icons-vscode.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-limit.png b/elpa/company-0.10.2/images/small/tooltip-limit.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-margin.png b/elpa/company-0.10.2/images/small/tooltip-margin.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-minimum-above.png b/elpa/company-0.10.2/images/small/tooltip-minimum-above.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-minimum-below.png b/elpa/company-0.10.2/images/small/tooltip-minimum-below.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-offset-display.png b/elpa/company-0.10.2/images/small/tooltip-offset-display.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-qa-faces-light.png b/elpa/company-0.10.2/images/small/tooltip-qa-faces-light.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-quick-access.png b/elpa/company-0.10.2/images/small/tooltip-quick-access.png Binary files differ. diff --git a/elpa/company-0.10.2/images/small/tooltip-search.png b/elpa/company-0.10.2/images/small/tooltip-search.png Binary files differ. diff --git a/init.el b/init.el @@ -308,7 +308,6 @@ '(calendar-mark-holidays-flag t) '(calendar-week-start-day 1) '(column-number-mode t) - '(company-idle-delay 0.1) '(completion-auto-help 'lazy) '(completion-auto-select 'second-tab) '(completion-ignore-case t t) @@ -344,7 +343,6 @@ '(frame-resize-pixelwise t) '(global-aggressive-indent-mode t) '(global-auto-revert-mode t) - '(global-company-mode t) '(global-diff-hl-mode t) '(help-window-select t) '(ibuffer-mode-hook '(all-the-icons-ibuffer-mode)) @@ -401,7 +399,7 @@ ("melpa" . "https://melpa.org/packages/"))) '(package-pinned-packages '((sly . "melpa"))) '(package-selected-packages - '(company highlight-function-calls prism modus-themes imenu-list diff-hl embark-consult embark all-the-icons-completion all-the-icons-ibuffer all-the-icons-dired sly-named-readtables sly-macrostep denote-refs denote-menu denote ox-epub ob-powershell powershell web-mode lexic editorconfig elfeed-tube-mpv elfeed-tube restclient-jq graphviz-dot-mode consult-eglot jq-mode ob-restclient restclient deadgrep helpful pdf-tools paredit-menu paredit sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode org-contrib org ace-window expand-region consult marginalia uuidgen diminish which-key)) + '(highlight-function-calls prism modus-themes imenu-list diff-hl embark-consult embark all-the-icons-completion all-the-icons-ibuffer all-the-icons-dired sly-named-readtables sly-macrostep denote-refs denote-menu denote ox-epub ob-powershell powershell web-mode lexic editorconfig elfeed-tube-mpv elfeed-tube restclient-jq graphviz-dot-mode consult-eglot jq-mode ob-restclient restclient deadgrep helpful pdf-tools paredit-menu paredit sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode org-contrib org ace-window expand-region consult marginalia uuidgen diminish which-key)) '(pcomplete-ignore-case t t) '(pixel-scroll-precision-mode t) '(prism-parens t)