Nafai77 / metaproject

Project support and utilities for Emacs

metaproject / notes.org
100644 115 lines (92 sloc) 3.801 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#+STARTUP: showall
#+STARTUP: hidestars
#+STARTUP: lognotestate
#+SEQ_TODO: TODO(t) STARTED(s) WAITING(w) | DONE(d) DELEGATED(g) CANCELED(c) NOTE
 
* Notes and plans:
** Open project
*** open all files in a project, including project supporting buffers
*** open just project supporting buffers, including:
**** magit status buffer
**** dired at top level dir
**** supporting org-mode file, if defined
**** open shell buffer (ansi-term or eshell) at top-level dir
**** websites to open via browse-url
*** run any project initialization commands, i.e.:
**** open rope project at appropriate dir (top-level?)
**** start SLIME
 
** Close project
*** Close all associated files and buffers
 
** Open file in project
*** Methods:
**** ido
**** dired or dired-like
**** speedbar
*** Use defined list of files in project
*** Use all files in project directories
*** Use all files in project directories sans those ignored by git (see git-dired.el)
 
** Open project among known projects (like magit-status-repos)
 
** Switch to open project buffer (ido)
 
** Jump to or open project buffer:
*** magit status
*** dired (top-level, parent, current)
*** org-mode file
*** shell buffer
*** speedbar or dired for all project files
 
** Add a keyboard sub-map for the buffers in the project that adds:
*** open file in project
*** close project
*** jump to or open project buffer
*** switch to open project buffer
 
** Refresh project
*** if new files are added to project
 
** Add file to project
*** current buffer's file
*** prompt for file
*** currently marked file(s) in dired
 
** Remove file from project
*** current file
*** prompt for file (ido)
 
** Create empty project
 
** Grep through files of the project
 
** Etags
 
** ibuffer limited to just project files
 
** compile project
 
** agenda just for project files
 
** project-specific bookmarks
 
** questions:
*** I seem to be limiting the idea of a project of those files under a common sub-directory.
    This might be fine for now, but that doesn't seem to be a reasonable
    limitation. I should examine where this assumption is made and see
    how to remove it. i.e., metaproject-get-top-dir
 
*** It is probably a reasonable assumption that a given file can only
    belong to one open project at a time. If I want to allow for this,
    how to work around it?
  
* Todo's
** action registry
*** each key in the .metaproject plist is associated with a given
     action
*** these actions are provided by calling a registry function, often
     within an individual emacs module. this allows for optional
     functionality to be provided and have a minimal stable core
*** at open time, the action registry is looped through, in order
     (should order matter?), and a check is made to see if a
     corresponding value is found in the plist. if so, the registered
     action function is called with the value in the plist as its
     argument.
*** do I need registration for other events? probably at least open
     and close.
*** only the basic ones that include default features from emacs
     proper will be included in the core metaproject module. right
     now, this is simple file opening and closing and perhaps dired.
*** others include: magit, rope, slime, org-mode, shell buffer, etags
*** DONE Add magit buffer to buffer list and project to its local vars
    CLOSED: [2009-05-19 Tue 21:48]
 
** code clean-up
*** DONE convert the var to a defcustom
    CLOSED: [2009-05-01 Fri 16:33]
*** TODO add docstrings to all "top-level" functions, at minimum
*** DONE convert TODOs and the like from README.markdown to an org-mode file
    CLOSED: [2009-04-29 Wed 16:48]
*** TODO Add descriptions to the top of the .el files
*** TODO Add usage instructions
*** TODO run checkdoc and fix any errors it reports