From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Perry E. Metzger" Newsgroups: gmane.emacs.devel Subject: Language Servers and Emacs Date: Tue, 11 Apr 2017 12:28:16 -0400 Message-ID: <20170411122816.751a130f@jabberwock.cb.piermont.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1491928132 31063 195.159.176.226 (11 Apr 2017 16:28:52 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 11 Apr 2017 16:28:52 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Apr 11 18:28:48 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cxyeu-0007zp-KV for ged-emacs-devel@m.gmane.org; Tue, 11 Apr 2017 18:28:48 +0200 Original-Received: from localhost ([::1]:40197 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cxyf0-0004Tc-LP for ged-emacs-devel@m.gmane.org; Tue, 11 Apr 2017 12:28:54 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35290) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cxyeT-0004Os-PL for emacs-devel@gnu.org; Tue, 11 Apr 2017 12:28:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cxyeQ-0002yA-Gk for emacs-devel@gnu.org; Tue, 11 Apr 2017 12:28:21 -0400 Original-Received: from hacklheber.piermont.com ([166.84.7.14]:52460) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cxyeQ-0002xw-BT for emacs-devel@gnu.org; Tue, 11 Apr 2017 12:28:18 -0400 Original-Received: from snark.cb.piermont.com (localhost [127.0.0.1]) by hacklheber.piermont.com (Postfix) with ESMTP id 1352017A; Tue, 11 Apr 2017 12:28:16 -0400 (EDT) Original-Received: from jabberwock.cb.piermont.com (jabberwock.cb.piermont.com [10.160.2.107]) by snark.cb.piermont.com (Postfix) with ESMTP id D28912DE040; Tue, 11 Apr 2017 12:28:16 -0400 (EDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 166.84.7.14 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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" Xref: news.gmane.org gmane.emacs.devel:213873 Archived-At: Microsoft has invented an interesting new protocol for IDEs and code editors to talk to language tools (like compilers) to do things like smart autocompletion, jumping to code definitions, and the like. The idea is that compilers and similar tools generally know a lot about the structure of a language and can provide help to an editor as an external service, so the editor doesn't need to handle parsing, symbol tables, etc. for the language on its own. The editor can just ask the compiler or language tool for the information when it needs it. The protocol is open and they have no intellectual property claims on it. It is JSON based and should be straightforward to support. A general description is at: http://langserver.org/ And detailed protocol information is at: https://github.com/Microsoft/language-server-protocol It was originally designed for their "Roslyn" C# compiler (which is free software, it's Apache licensed) to integrate with their own editors and IDEs, but other compiler projects and editors seem to be adopting the thing. There are now language servers people have built for a lot of languages, and there's support appearing for the protocol in a bunch of editors. I'm mentioning this here because I think the Emacs community would be interested in this capability, though I suspect that it would also be really neat if GCC developed a language server for C and C++. I recall that a while ago, RMS had a lot of problems with the idea of opening up GCC in ways that might have made it possible for people to use it too much for proprietary compilers. Using the Language Server Protocol, it should be possible for GCC and other free language tools to talk to a variety of IDEs and Editors (including, I hope, Emacs) to allow advanced modern code editing _without_ the sorts of risks he was worried about. Perry -- Perry E. Metzger perry@piermont.com