jrockway / eproject Goto Github PK
View Code? Open in Web Editor NEWfile grouping ("project") extension for emacs
file grouping ("project") extension for emacs
You should start by documenting the /existence/ of .eproject files :-)
What does eproject do?
What is better when I use eproject?
When I press C c C f, project file can not navigate with keys, this is especially not convenience when I type part of the filename due to the first appear one may not we want, then we should type the full filename until there is only one match.
When I execute eproject-grep I get:
Symbol's function definition is void: combine-and-quote-strings
I run command " emacs --debug-init" ,and emacs reported as follows:
Debugger entered--Lisp error: (error "Required feature `esh-groups' was not provided")
require(esh-groups)
eval-buffer(#<buffer load<5>> nil "d:/work/emacs/lisp/eshell/esh-module.el" nil t) ; Reading at buffer position 1390
load-with-code-conversion("d:/work/emacs/lisp/eshell/esh-module.el" "d:/work/emacs/lisp/eshell/esh-module.el" nil t)
require(esh-module)
eval-buffer(#<buffer load<4>> nil "d:/work/emacs/lisp/eshell/esh-mode.el" nil t) ; Reading at buffer position 2610
load-with-code-conversion("d:/work/emacs/lisp/eshell/esh-mode.el" "d:/work/emacs/lisp/eshell/esh-mode.el" nil t)
require(esh-mode)
eval-buffer(#<buffer load<3>> nil "d:/work/emacs/lisp/eshell/eshell.el" nil t) ; Reading at buffer position 9267
load-with-code-conversion("d:/work/emacs/lisp/eshell/eshell.el" "d:/work/emacs/lisp/eshell/eshell.el" nil t)
require(eshell)
eval-buffer(#<buffer load<2>> nil "d:/work/emacs/myplugins/eproject/eproject.el" nil t) ; Reading at buffer position 7542
load-with-code-conversion("d:/work/emacs/myplugins/eproject/eproject.el" "d:/work/emacs/myplugins/eproject/eproject.el" nil t)
require(eproject)
eval-buffer(#<buffer load> nil "d:/work/emacs/.emacs" nil t) ; Reading at buffer position 1181
load-with-code-conversion("d:/work/emacs/.emacs" "d:/work/emacs/.emacs" t t)
load("~/.emacs" t t)
#[nil "�
I'm trying to use eproject with it set to use ido-completing-read. It appears that it eventually winds up trying to string-match on some sort of buffer reference(I know next to nothing about lisp). Any ideas. I've pasted the last couple of lines of the backtrace.
(wrong-type-argument stringp #)
string-match("" #) ...some junk here
ido-set-matches-1((# #) t)
eproject doesn't seem designed to handle project-containing directories as subdirectories of parent directories that could also contain projects. My home directory has a git repository which I use for tracking things like my .emacs. Because generic-git is one of the first project types defined, projects further down in my home directory using non-git repositories cannot be found. The solution to this (or at least a solution to this, mine may be suboptimal for certain situations), I think, is to choose the project type that gives the project closest to the source file, i.e. traversing up the directory tree the fewest times. If you agree with me, you can find my patch (against commit 80efa3a) at http://quark.kiewit.dartmouth.edu/~james/eproject_diff (why doesn't github allow attaching files to issues as Trac does?)
cheers,
James
We need a simple way to require extras. Probably eproject/extras should be added to load-path when eproject-extras required?
Currently address is:
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301, USA.
helm-eproject.el has the correct address, but eproject.el has:
Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
Consider renaming this project. Otherwise, please add a big freakin' note to the front page making it clear that this has nothing to do with http://www.emacswiki.org/emacs-en/eproject
Thanks
Some people have sent me patches to make everything work on Windows. I fixed the code, but I haven't heard back, so I'm opening this ticket to prevent me from forgetting.
If Windows doesn't work, please add a note here.
The helm-eproject
command fails with :
Debugger entered--Lisp error: (error "Candidates must either be a function, a variable or a list: (lambda nil (with-current-buffer helm-eproject-last-buffer (helm-eproject-get-files)))")
helm is moving quicly these days, if you don't need a fullblown source, you can
(setq eproject-completing-read-function 'helm-completing-read-default)
This is a feature suggestion.
Currently eproject does hierarchical inheritence of project types with the exception that it does not allow to extend an project-type property but only replace it.
It would be great if multiple project types could be used at once.
An simple example would be an Django application which depends on coffee-script probably could benifit from being both project types at once.
At the moment I am merging most of my "web"-framework project types by hand and would probably use more project types and things like the recently added tasks if it were easier to mix and match.
Draft of simple functional requirements:
I think they should. Otherwise it's too much tweaking...
There is a bug in eproject--selector. It assumes that every buffer where 'eproject-maybe-turn-on' is invoked, must be a file. I am using SLIME (emacs mode for common lisp programming). I have defined a "common-lisp project" like this:
(define-project-type common-lisp (generic) (look-for "*.asd" :glob)
:relevant-files '(".lisp$" ".lsp$" ".asd$"))
(add-hook 'lisp-mode-hook 'eproject-maybe-turn-on)
Slime creates non-file buffers that are still 'lisp mode', such as SLIME Macroexpansion. Eproject prevents interactive macroexpansion because of the error raised when it finds the new buffer is not a file.
I think it should just do nothing silently when it tries to 'turn on' and finds the buffer is not a file.
By examining the git history I found that Glauber Alex Dias Prado and Thomas Frössmam both committed more than 15 lines of changes to this file in 2012. If they didn't attribute copyright to you, please add a copyright header with their information. If they did attribute it to you, please make this explicit by adding yourself to the file's copyright header. It's ambiguous right now.
I get a hang when I try and open files outside any existing eproject definitions. Typically this usually manifests when opening stuff via tramp but can be on local NFS systems. I can break out of the hang with Ctrl-G and the buffer is loaded but without any font locking on.
Using edebug I got to the this backtrace:
run-hooks(after-change-major-mode-hook)
run-mode-hooks(text-mode-hook)
text-mode()
normal-mode(t)
after-find-file(nil t)
find-file-noselect-1(#<buffer rnotes.tex<####>> "/eng/ajb/####/#####/doc/rnotes.tex" nil nil "/eng/ajb/#####/####/doc/rnotes.tex" (48634650 25))
find-file-noselect("/eng/ajb/########/#####/doc/rnotes.tex" nil nil nil)
find-file("/eng/ajb/######/#####/doc/rnotes.tex")
my-test()
Looking at after-change-major-mode-hook
(eproject--after-change-major-mode-hook global-font-lock-mode-enable-in-buffers)
I concluded eproject has gone off on a wild one somewhere. I see the maybe-turn-on logic has been refactored. Should I be tracking the virtual projects branch now?
Hi,
I use several project structures that might overlap. For example: one project might have a build.xml file somewhere while another project might have a build.xml and another file, let's say project.xml. if project.xml file exist, I would like the project type to be "customproj", and if only build.xml is defined, I would like the project type to be "java". Is there anyway to define the order in which eproject tries to evaluate which project type I am in?
If I could do that, I could place customproj ahead of java, and so it would match first.
Thank you,
Hi!
I was wondering if there's a particular reason to add the hook to after-change-major-mode-hook? Right now this has the effect that whenever I open a project source-file, my -project-file-visit-hook gets run 3 times. Once for find-file-hook and twice for the after-change-major-mode-hook.
I think it seems enough to just keep the find-file-hook. Am I missing something?
Dear eproject maintainer,
Thank you for maintaining this package. I would like to package eproject for Debian, but the absence of a LICENSE or COPYRIGHT file blocks inclusion into the archive.
Cheers,
Nicholas
(and add them to a langauges/ subdir)
eproject-maybe-turn-on and thus also -project-file-visit-hook gets run 3 times every time a file in a project is opened or a buffer in a project is reverted.
It's may be a little difficult to get away from the change-major-mode duplicate call since the convention is to kill all local variables as part of the major-mode setup, but since after-change-minor-mode-hook will be run on file-visit/buffer-revert anyway, maybe you could just remove the file-visit-hook?
Hi!
I'm looking a little bit at integrating eproject with my package of Erlang development tools (https://github.com/tjarvstrand/edts). It looks great so far, but I was wondering if there is any way of having project attributes that take their values from the project-file if they are given there, but otherwise take their values from other things that are present.
The way my current (very makeshift) project variable depend on each other work is:
name - default to the last componen of the project's root
node-sname - default to the same name as the project
Would there be any way to accomplish this?
The way the eproject minor mode is defined causes a problem with Emacs' desktop library.
When reloading a saved desktop, 'desktop-create-buffer' is called for each buffer that is to be recreated. Desktop remembers the name of each active minor mode from when the desktop was saved, and if that name is fbound, desktop-create-buffer calls that function in order to activate the minor mode for the buffer.
Unfortunately 'eproject-mode' is defined to raise an error when called in a new buffer (where eproject-root is null). This error brings desktop loading to a crashing halt.
Is there a good reason that eproject-mode cannot just call eproject-maybe-turn-on itself, when eproject-root is null?
EDIT: looking into it further, you should be able to fix this easily by adding eproject-mode to the variable 'desktop-minor-mode-table'.
This is a feature suggestion.
Simple specs:
I would like to be able to set a default project for eproject to use. I tried implementing some advice for eproject-find-file, and override the macro eproject--do-in-buffer, but my elisp skills are not up to snuff. Is there an easy way to do this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.