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: Re: IDE Date: Mon, 12 Oct 2015 14:46:15 +0300 Message-ID: <561B9D87.70504@yandex.ru> References: <5610207A.2000300@harpegolden.net> <83fv1r3gzp.fsf@gnu.org> <83bncf3f9k.fsf@gnu.org> <5610E0BC.8090902@online.de> <83si5r106e.fsf@gnu.org> <831td9z18h.fsf@gnu.org> <5612E996.7090700@yandex.ru> <83bnc7tavr.fsf@gnu.org> <5618C92A.3040207@yandex.ru> <83a8rrt9ag.fsf@gnu.org> <5618D376.1080700@yandex.ru> <831td3t62e.fsf@gnu.org> <561A6199.1020901@cumego.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1444650411 31543 80.91.229.3 (12 Oct 2015 11:46:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 12 Oct 2015 11:46:51 +0000 (UTC) Cc: adatgyujto@gmail.com, emacs-devel@gnu.org To: =?UTF-8?Q?Przemys=c5=82aw_Wojnowski?= , Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Oct 12 13:46:46 2015 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 1ZlbYv-0005k8-OO for ged-emacs-devel@m.gmane.org; Mon, 12 Oct 2015 13:46:42 +0200 Original-Received: from localhost ([::1]:54730 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlbYv-0000wQ-73 for ged-emacs-devel@m.gmane.org; Mon, 12 Oct 2015 07:46:41 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45954) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlbYb-0000w4-Lc for emacs-devel@gnu.org; Mon, 12 Oct 2015 07:46:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZlbYY-00051r-EL for emacs-devel@gnu.org; Mon, 12 Oct 2015 07:46:21 -0400 Original-Received: from mail-lb0-x22a.google.com ([2a00:1450:4010:c04::22a]:36492) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZlbYY-00051m-2D; Mon, 12 Oct 2015 07:46:18 -0400 Original-Received: by lbcao8 with SMTP id ao8so140343385lbc.3; Mon, 12 Oct 2015 04:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=AgrzJLf9zio8Vgmus5+s3sqf89QR1HcQT6HgrrXxn7s=; b=zdyCvBMsFJf7BX/L4/dtUJNyBwK7D77zTdRKlHccIxXjNSyYM5/zC8kVNKheqgQd26 6U9dTs8ZMBcgci52/Q5mbKYcpHbTl1jKGvHqzYLPR5JdoZek1QKhE1YnwHp/+mqHMqM/ 4aFEn+OLi8T9c6dEWR/JhNG6ONA0ZRQZayhlCbTFikcT4qiFpz6r9Fb3tP6/gfdcwIm0 xDnpQO1MqlfpziGPgilOB9XMmej9TCrgWCmw52S7SGNSqAfkiG+mBICtimivTGksJDvl NfKCo6JLhGQGZozBOm9jvI/mviT2gVQirJo8H/k+uFh23dccppuEFtciHcexXUWnN6hF IKuQ== X-Received: by 10.25.141.198 with SMTP id p189mr8152630lfd.9.1444650377179; Mon, 12 Oct 2015 04:46:17 -0700 (PDT) Original-Received: from [192.168.1.190] ([178.252.127.222]) by smtp.googlemail.com with ESMTPSA id t129sm2876412lfd.5.2015.10.12.04.46.16 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Oct 2015 04:46:16 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:41.0) Gecko/20100101 Thunderbird/41.0 In-Reply-To: <561A6199.1020901@cumego.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::22a 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:191318 Archived-At: On 10/11/2015 04:18 PM, Przemysław Wojnowski wrote: > For (project-oriented/enterprise) Java the features are: > 1. Project support > IDE has to know the boundaries of a project - where are sources, tests, > libs, resources/assets (additional files used in an app in runtime), > docs - and what are relations between them. Also it has to know how to > work with project's build tool (be it Maven, Gradle, etc.). > A programmer joining a project (99% of cases) should be able to > open/import it and start work. Every Java IDE have that. Emacs master now has project.el, which will be a step in this direction. We can extend that API to contain information about where certain resources are, but for each type of projects there will be a different set of resources. While we could have a jump-to-test command (tests should be common), we can't easily have a commands for each kind of "jump to the web template for this controller" action. So I'm not sure how to solve this. Have a "jump-to-related-file" command, which will prompt for the type of the resource when invoked? Support for build tools seems more straightforward, someone should just collect an overview of how users interact with different ones, like Make, Maven, Gradle, Rake, etc, to firmly establish the common ground. > 2. Code completion > From whole project, used libraries, and resources Unless CEDET delivers on that front, we're unlikely to have completion for Java in the near future in the core. But there are third-party packages that provide it. > 3. Jumping around the project code and resources. > Jumping to around the project code and used libraries. Another thing is > jumping to/from resources (for example aspects can be defined in an XML > file and IDE could allow to jump to matching classes). Do you mean "jump to the thing at point"? That sounds complicated, and support for different "things" will have to be implemented separately. > 4. Finding usages of fields, methods, types. > Helps to wrap head around project. That's within the purview of xref, and up to CEDET or external tools to implement. But you can try xref-find-references now, for a quick-and-dirty Grep-based solution. > 5. Automatic compilation and showing compilation erros/warnings. > Tightens development feedback loop. Flycheck. Sadly, it's not in Emacs. > 6. Running the tests (current, selected, all) > Tighten development feedback loop. Not sure which facility would be most fitting. A project *could* include metadata about how to run its tests better, but then the resulting buffer would need new compilation-error-regexp-alist entries, and/or an ability to interact with a debugger/REPL if it's triggered during the test run. > One variation of Extract Method is "EM with finding duplicates", which > works like this: > - ask user for a method name, > - find all occurrences of selected code in the buffer > - ask user if she wants to replace all occurrences with the call to the > new method. > This is fantastic feature that Intellij has and helps to remove a lot of > duplicated code. That sounds useful indeed.