Major merge with Emacs source tree. Docutils SVN version and Emacs
[docutils/kirr.git] / docutils / tools / editors / emacs / IDEAS.rst
blob93fc8cce2ae8127c22d9b868d99b127d77d9972c
1 The following is a list of ideas of functionality which would be nice
2 to have in `rst.el`. In the examples a ``@`` stands for the cursor.
4 Convert to id
5 =============
7 * Convert the region to an HTML id
9   * For instance "Eine Überschrift" to "eine-berschrift"
11   * According the same rules as reST does this
13 Jump to internal target
14 =======================
16 * A command to jump to the internal target the point is on
18 * A target may be
20   * A section title
22   * Footnotes / citations
24   * Inline internal targets
26   * Hyperlink target definition
28   * Substitution definition
30 * See hunk #26 in `rst_el-emacs_V23_1_patch1_1_2` vs. `emacs_V23_1`
31   for some ideas
33 Completion for directive options
34 ================================
36 * Imagine ::
38     .. list-table::
39        :@
41   with the cursor at the asterisk
43 * There should be a command which offers all the possible options for
44   this particular directive as completion
46 * May be `skeleton.el` can also be useful
48 Completion for directives
49 =========================
51 * Imagine ::
53     .. @
55 * There should be a command which offers all directives as completion
57 * May be this should work for other keywords as well
59 * May be this could work even at the beginning of the line
61 * Completion must be bound to M-TAB
63   * Already existing binding must be chained
65   * May be `expand.el` can help (look in package finder)?
67   * May be `hippie` is good here
69   * Check `(info)autotype`
71 Completion for user-defined elements
72 ====================================
74 * Imagine ::
76     |@
78   or ::
80     [@
82   or ::
84     _@
86 * There should be a command which offers all defined substitutions /
87   footnotes / links as completion
89 Insertion of link alias
90 =======================
92 * Imagine ::
94     Aspect of something
95     ===================
97     This is about the `aspect of something`_@
99 * There should be a command which asks you for an alias for the link,
100   add the alias and change the link ::
102     .. _aspects of something:
104     Aspect of something
105     ===================
107     This is about the `aspects of something`_@
109 Smart use of `iimage-mode`
110 ==========================
112 * There is `iimage-mode` which shows ``.. image::``\s in Emacs
114 * May be we can add a binding to toggle it
116 TOC in speedbar
117 ===============
119 * If the TOC is displayed in the speedbar this could be used for
120   permanent navigation
122 toc-mode without markup
123 =======================
125 * The markup which may be contained in a section title is not useful
126   in toc-mode and should be suppressed
128 Sophisticated navigation in sections
129 ====================================
131 * Navigation in sections similar to navigation in other structured data
133   * Like XML, Lisp
135   * C-M-u für Up
137   * C-M-d für Down
139   * C-M-f / C-M-b für Forward / Backward
141 Display of current location
142 ===========================
144 * Display the "section path" to the current point
146 * Like in XML: In which element is the point?
148 toc-mode only to a certain level
149 ================================
151 * If a TOC buffer is created a prefix argument should limit the depth
152   of the listing to the given level
154 Imenu support
155 =============
157 * Imenu could be supported
159   * See `(elisp)Imenu`
161 Outline support
162 ===============
164 * Support for `outline-mode` / `allout-mode` would be nice
166   * Should consider section titles
168     * May be item lists can also be included
170   * Using `allout-mode` is difficult
172     * It's not customizable enough for the complex syntax of
173       reStructuredText
175     * However, some commands make sense
177       * Motion commands
179       * Exposure commands
181       * Some alteration commands
183     * Should be reimplemented
185       * Key bindings need to be reused
187         * However, care must be taken if a file uses `allout-mode` for
188           instance by comment strings
190         * In this case key bindings must not be overridden
192   * A command adding / updating `allout-mode` tags could be a solution
194 Sophisticated filling
195 =====================
197 * These things must be filled special:
199   * Definitions
201   * Filling of ::
203       * VeryLongWordSuchAsAnURLVeryLongWordSuchAsAnURLVeryLongWordSuchAsAnURLVeryLongWordSuchAsAnURLVeryLongWordSuchAsAnURL
205     should work as expected by *not* breaking the line
207 * These things may not be filled at all
209   * Literal blocks
211   * Tables
213   * Section headers
215   * Link definitions
217 Sophisticated indentation
218 =========================
220 * It should be generally possible to shift one more to the right
222   * This makes indentation for quotes possible
224   * But not for literal blocks
226 * For item lists the best tab should be on the same level as the last
227   item::
229     * bla
231     @
233   * The second best tab should be where text starts::
235       * bla
237         @
239 * <backtab> should be used to indent in the other direction
241   * Or may be C-u <tab> but this has a different meaning
243 * <tab> could obsolete C-c C-r <tab>
245   * For this the indentation needs to be determined at the start
246     instead of per line
248     * <tab> over list works::
250         Text
252           * GGGGGG
253           * SSSSSSSSSSSSSSS
254           * TTTTTTTT
255           * ZZZZZZZZ
257     * <tab> over list doesn't work::
259         Text
261         * GGGGGG
262         * SSSSSSSSSSSSSSS
263         * TTTTTTTT
264         * ZZZZZZZZ
266 List to sections
267 ================
269 * A command would be nice which
271   * transforms the first level of a nested list in a region into a
272     header
274   * removes one level of indentation from the rest of the list
276 Change section level by more than one step
277 ==========================================
279 * It would be nice if <C-h> `rst-adjust` could rotate a section
280   adornment more than one level
282 * A modification of the semantic of the prefix arguments could do this
284   * Non-zero numeric prefix arg n rotates n step in the given direction
286   * Prefix arg 0 toggles overline / underline
288     * This would be different from current setup
290 Compiling for syntax check
291 ==========================
293 * Compiling with results going to `/dev/null` would be useful
295   * This would just do a syntax check with no files lying around
297 * Toolset choice for <C-c C-c C-c> `rst-compile` must be by
298   customizable if at all necessary
300   * Customization group must be used
302 Renumber an exisiting enumeration
303 =================================
305 * Renumbering an exisiting enumeration is not possible yet
307 Command to move across blocks
308 =============================
310 * A command moving forward / backward across the content blocks of the
311   current block would be nice
313   * For instance: Move across all blocks contained in an item or field
315   * This would move to the start of the sibling of the current block
317   * Would allow to jump to the next item on the same level in a list
319 * <C-M-f> `forward-sexp` could be a nice binding
321 rst-toc-insert features
322 =======================
324 * The `contents::` options could be parsed to figure out how deep to
325   render the inserted TOC
327 * On load, detect any existing TOCs and set the properties for links
329 * TOC insertion should have an option to add empty lines
331 * TOC insertion should deal with multiple lines
333 * Automatically detect if we have a `section-numbering::` in the
334   corresponding section, to render the toc.
336 Automatic handling of `.txt` files
337 ----------------------------------
339 It would be nice to differentiate between text files using
340 reStructuredText and other general text files. If we had a function to
341 automatically guess whether a `.txt` file is following the
342 reStructuredText conventions, we could trigger `rst-mode` without
343 having to hard-code this in every text file, nor forcing the user to
344 add a local mode variable at the top of the file. We could perform
345 this guessing by searching for a valid adornment at the top of the
346 document or searching for reStructuredText directives further on.
348 Entry level for rst-straighten-adornments
349 -----------------------------------------
351 * `rst-straighten-adornments` should have an entry level to start at a
352   lower than the top level
354   * I for one prefer a verbose style for top level titles which is not
355     appropriate for documents without titles
357   * Should be done by a prefix argument