From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Split off some backends from Company? Date: Mon, 11 Aug 2014 23:21:06 +0400 Message-ID: <53E917A2.2080409@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1407784900 452 80.91.229.3 (11 Aug 2014 19:21:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 11 Aug 2014 19:21:40 +0000 (UTC) Cc: emacs-devel To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Aug 11 21:21:33 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XGv9p-0005le-LA for ged-emacs-devel@m.gmane.org; Mon, 11 Aug 2014 21:21:25 +0200 Original-Received: from localhost ([::1]:37650 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGv9p-0003qW-66 for ged-emacs-devel@m.gmane.org; Mon, 11 Aug 2014 15:21:25 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55043) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGv9g-0003iQ-Ol for emacs-devel@gnu.org; Mon, 11 Aug 2014 15:21:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XGv9a-0001tl-VN for emacs-devel@gnu.org; Mon, 11 Aug 2014 15:21:16 -0400 Original-Received: from mail-la0-x229.google.com ([2a00:1450:4010:c03::229]:49310) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGv9a-0001tf-Mk for emacs-devel@gnu.org; Mon, 11 Aug 2014 15:21:10 -0400 Original-Received: by mail-la0-f41.google.com with SMTP id s18so7184763lam.28 for ; Mon, 11 Aug 2014 12:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; bh=zIQE81iWZmMP7cH7RB+FoT48OseFsJR1KOJEAK+6Bx0=; b=aY/2m5Nk4d+uKSYzNQnha4s/WGPoC/aIjpHFBu1dznyr2ennd1PEapP47zNfdGQT00 7uHccJFMMVGiA+uwhN8Ey5zUxbQ8n6UNe04mf3Jp6sFhjpBcQR60qDae3/OVNDz5JJgO V9/t5QPA9xvt17t4ZZjP4lOryrzkPL3LmwYhJ3h06xFu5UXL72r7taB6fVyH4jVK/JaN vqDkYA74e8cpV6wrNtdJnNokWeUC08O1hGodymUl0RtBBKjnV8OimKViQXIAfXYvFXLO AMkBwq/MMEMOWZP+zqolqnJHPDpccJP+83k1dw9PVyZPUGBEA7FWFJabES0DqAmwoGc7 uVIw== X-Received: by 10.112.173.136 with SMTP id bk8mr8532265lbc.88.1407784869546; Mon, 11 Aug 2014 12:21:09 -0700 (PDT) Original-Received: from [10.8.0.26] (v-2-eu19-d3962-07.webazilla.com. [78.140.151.7]) by mx.google.com with ESMTPSA id dm6sm19408345lbc.31.2014.08.11.12.21.07 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Aug 2014 12:21:08 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:173578 Archived-At: Hi Stefan, It's been suggested [0] that we split the backends that require third-party Emacs packages to be installed, from Company, to separate packages. Tentatively, the list would look like: company-bbdb, company-oddmuse, company-ropemacs. Maybe also company-yasnippet. On the one hand it's distributed in GNU ELPA, so it's not really third-party, on the other hand, it still has to be installed for the respective backend to work. Taking it further, we could do the same that depend on specific external programs to be available, but not Elisp code: company-clang, company-eclim, company-gtags, company-xcode. There are two main benefits are, I think: - More visibility for Company; users see the backends for specific completion sources they're interested in, in `M-x list-packages'. - Each new package's description can include the list of its dependencies and how to install them, especially if the user has to install something outside of Emacs (ropemacs is the prime example). Before installing each new backend, the user would be able to read those instructions. Drawbacks: - If the backend doesn't depend on third-party Elisp code, or if that package is likely to be installed anyway; if the external program dependency or easy to install or likewise is likely to be already present on the user's system, then we lose out on user convenience, because otherwise the backend could "just work", if it was installed and present by default. - The list of packages in GNU ELPA is fairly short, and adding 3-7 new packages, all named "company-...", might look like hijacking. There are many "ac-..." packages in third-party repositories, for example, but no such pattern hare, and I hesitate to change that. - The setup proceduce for each such backend becomes more complicated: you have to install the backend, its dependencies (happens automatically), external dependencies, and add 1-2 new lines to your init file. WDYT? [0] https://github.com/company-mode/company-inf-ruby/issues/2#issuecomment-51649939