~registry/texmacs/trunk

« back to all changes in this revision

Viewing changes to src/TODO

  • Committer: mgubi
  • Date: 2009-06-04 15:13:41 UTC
  • Revision ID: svn-v4:64cb5145-927a-446d-8aed-2fb7b4773692:trunk:2717
Support for X11 TeXmacs.app on Mac

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
===============================================================================
3
 
GENERAL ARCHITECTURE
4
 
===============================================================================
5
 
 
6
 
Implement better tools for debugging
7
 
  * Mechanism to recover all scheme error messages in a dedicated
8
 
    TeXmacs buffer, together with foldable backtraces.
9
 
  * Provide correct locations for the "texmacs-error" primitive.
10
 
  * Provide a clean exception semantics for all routines in the basic APIs.
11
 
  * Clean exception semantics for C++ routines which are exported to Scheme.
12
 
  * Emergency saving of modified buffers on fatal_error.
13
 
  * Throw-catch mechanism in C++ code when compiling with enable-debug
14
 
    and replacement of fatal_error when possible.
15
 
  * Test-suite of TeXmacs documents for different features and
16
 
    automated checks for certain types of correctness.
17
 
 
18
 
Hunt down memory leaks
19
 
  * Valgrind
20
 
  * Implement marking algorithm
21
 
 
22
 
===============================================================================
23
 
SCHEME INTERFACE
24
 
===============================================================================
25
 
 
26
 
Internal plug-in for Guile
27
 
 
28
 
Integrate menus in new GUI system
29
 
 
30
 
Naming conventions
31
 
  * Rename "drd-" -> "logic-" for routines from kernel/drd.
32
 
  * Appropriate naming convention for routines which operate on markup:
33
 
    when to use tmconcat-, concat-, concat/, tree-concat-, ...,
34
 
    especially for tags like "tree" which are also used as data types.
35
 
 
36
 
More systematic preservation of locality
37
 
  * Replace dispatch tables by contextual overloading where possible
38
 
    (i.e. LaTeX export).
39
 
 
40
 
===============================================================================
41
 
TYPESETTER
42
 
===============================================================================
43
 
 
44
 
General
45
 
  * Equivalent of TEX \topsep
46
 
    In TEXMACS, the \topsep always equals 0.75em. It should be possible
47
 
    to modify this. For symmetry, we might also introduce a ``bottom sep''.
48
 
  * Resizing macro expansions
49
 
    When attempting to resize a macro application to become smaller than
50
 
    the ``x'', the invisible markers may have undesirable side-effects.
51
 
  * Font parameters
52
 
    Separate environment variables for ``typewriter'', ``sans serif'',
53
 
    ``small caps'', ``slant'', etc.
54
 
    Find rendering font as a function of selected font and language.
55
 
  * Simplification of page parameters
56
 
    Should we still reorganize? It should be easy to access to
57
 
    the page width and height and some other parameters.
58
 
 
59
 
Text
60
 
  * Introduction of the paragraph tag
61
 
    Distinguish between paragraphs and paragraph units.
62
 
  * Page decorations (headers and footers)
63
 
    Should the corresponding environment variables become macros?
64
 
  * Fine-grained baseline skip
65
 
    Associate baseline skip (or ascent and descent) to each individual box
66
 
    in concatenation. Next compute maximum over each line. Take maximum of
67
 
    maximum after first line and maximum before second line in order to
68
 
    obtain final value. Also for other parameters such as baselineskip?
69
 
  * Precise scope of variables which affect paragraph layout.
70
 
  * User-defined hyphenations of words.
71
 
  * Cursor movement is extremely slow for oriental languages.
72
 
 
73
 
Mathematics
74
 
  * Horizontal grouping instead of \bigop ... \big.
75
 
    Introduce grouping primitives in which expressions with big operands
76
 
    (and maybe large delimiters) can be encapsulated. The advantage is that
77
 
    this eases parsing and an indicative bounding box is shown.
78
 
  * Scripts to large delimiters produced by macros
79
 
    Such scripts are not put at the right positions
80
 
  * Macro for fractions in continued fractions.
81
 
  * Less vertical spacing in text style between numerator/denominator and bar.
82
 
  * Left-numbering of equation arrays
83
 
    Should be possible now using the extern primitive.
84
 
  * Consider fractions and scripts as operators
85
 
    Consider fractions as operators => spaces before and after.
86
 
    Similarly for scripts => small space before left scripts and
87
 
    after right scripts.
88
 
  * Better spacing
89
 
    Determine spacing between two mathematical boxes as a function of
90
 
    the rough semantics of the boxes. Application: no need for operators
91
 
    like the unary minus.
92
 
 
93
 
Style-sheet language
94
 
  * Introduce a style options mechanism
95
 
    Option -> call back macro which can be enriched by several packages
96
 
    Call back macros called at end of reading style files when option selected
97
 
    Selected options postpended to name for style-file caching
98
 
  * Grey menu entries for parameters which cannot be changed in style
99
 
    For instance, a style might provide a limited number of font base sizes.
100
 
 
101
 
Boxes
102
 
  * Origin of boxes
103
 
    Boxes should not have origins; its children should have positions instead.
104
 
 
105
 
Current bridges
106
 
  * Temporarily inccorect markup
107
 
    When pressing A-backspace inside a surround tag, we first remove
108
 
    two children of the surround tag (so that it obtains arity 1) and
109
 
    next remove the tag itself. The temporarily inccorect surround tag
110
 
    of arity 1 may cause bridge_surround to crash.
111
 
    Temporary fix: add extra nodes in the bridge.
112
 
    Better fix: implement an elementary modification assign_label
113
 
    which allows to change the surround tag into another tag like tuple
114
 
    before performing incorrect operations.
115
 
 
116
 
===============================================================================
117
 
EDITOR
118
 
===============================================================================
119
 
 
120
 
Structured text
121
 
  * Icon menu for font size.
122
 
  * Buggy title environment: remove author, transform selection
123
 
    into title, etc.
124
 
  * Strong inside strong, "with color red" inside "with color red", etc.
125
 
  * "with color black" at the left/right extreme of "with color red".
126
 
  * Remove "document" when applying "strong" to a single paragraph.
127
 
  * More generally: automatically turn block content into inline content
128
 
    when appropriate.
129
 
 
130
 
Editing source trees
131
 
  * User-defined macros can be turned into a compound using the backspace key,
132
 
    builtin macros can't. Why is that? How do I change the name of the
133
 
    call to a buildin macro? Can I avoid removing it and creating a new one?
134
 
  * If the first argument of a call to a user defined macro contains a
135
 
    <document> tag, I cannot turn it into a compound any more. Why that?
136
 
  * There seems to be no way to manually create or remove <document> tags.
137
 
  * Edit the "init" part of a file in source code form.
138
 
  * Edit as option
139
 
    A facility "Edit as" to convert a selection into any other format and
140
 
    put the result in an "edit-as" tag for manual editing. When pressing
141
 
    return, reconvert back into TEXMACS.
142
 
  * More customizable presentation of source tags
143
 
    Make the presentation of source code more customizable by user macros.
144
 
    Done for syntactic highlighting, but should also be done for special
145
 
    rendering of certain primitives and the rendering of tags.
146
 
  * Primitive for block arguments
147
 
    Currently, we may stretch tags. We also need a primitive for stretching
148
 
    tag arguments.
149
 
  * Comments
150
 
    Tags for short commands inside the program.
151
 
  * Visual hints
152
 
    Display informative flags at places where tags have been stretched or
153
 
    a modification to the source style has been applied.
154
 
 
155
 
Styling
156
 
  * Assistant for creating your own styles.
157
 
 
158
 
===============================================================================
159
 
TOOLS AND FREQUENTLY USED SUBROUTINES
160
 
===============================================================================
161
 
 
162
 
Quoting
163
 
  * Implement different routines for quoting and quote/unquote
164
 
    using the appropriate routine.
165
 
 
166
 
General caching mechanism
167
 
  * Optimize performance as a function of cost of recomputation and
168
 
    storage requirement
169
 
 
170
 
LATEX import
171
 
  * Avoid name-clashes with built-in commands
172
 
    Importation of LATEX macros whose names coincide with built-in
173
 
    commands may lead to incorrect documents (e.g. the point macro
174
 
    in publs/1998/zeta.tex). We should probably post-correct imported
175
 
    documents.
176
 
  * Better parsing of verbatim arguments
177
 
    Some commands, like cite, documentclass, etc. take verbatim arguments,
178
 
    which should not be parsed in the generic way. The string_arg function
179
 
    is a temporary remedy.
180
 
 
181
 
===============================================================================
182
 
GRAPHICS EDITOR
183
 
===============================================================================
184
 
 
185
 
Interface
186
 
  * Better looking icons.
187
 
  * Explanatory messages on the status bar
188
 
  * Better "mouse button layout": do as much as possible with left mouse
189
 
    button only and reserve right button for contextual menu.
190
 
  * Compatability with pen-based devices.
191
 
  * Fine-grained resizing using keyboard (also allow modification of grain?).
192
 
  * Resizing using mouse.
193
 
  * Automatic detection of simple types of curves when dragging
194
 
    in drawing mode.
195
 
  * Automatic detection of simple ornaments (arrows, dots).
196
 
  * Cairo plug-in for nicer looking graphics.
197
 
  * Graphical macros and constraint-based drawings.
198
 
  * Documentation, reference guide (markup specification) and tutorial.
199
 
 
200
 
Reorganization of Scheme code
201
 
  * First rough reorganization of code.
202
 
  * Clean API for graphical objet and current decorations:
203
 
      1) remove/restore one object (while preserving z-order).
204
 
      2) remove/restore a selection of objects (while preserving z-order).
205
 
      3) specify decorations for current graphical object.
206
 
      4) undo and cancel.
207
 
  * Clean API for setting/retrieving graphical attributes
208
 
    (color, line width, line style, fill color, etc.).
209
 
      1) Selecting the value of a given attribute.
210
 
      2) Retrieving the value of a given attribute.
211
 
      3) Apply attributes to one or more objects.
212
 
      4) Retrieve attributes from one (or more) objects.
213
 
  * Clean API for global attributes of the entire graphics
214
 
      1) Set an attribute.
215
 
      2) Retrieve an attribute.
216
 
  * Clean API for simple object construction
217
 
      1) Different types of arguments: point, length, content, etc.
218
 
      2) Adding an argument to the current object.
219
 
      3) Removing an argument from a current object.
220
 
      4) Event handlers and how to map mouse buttons to different actions.
221
 
      5) Computation of decorations.
222
 
  * Clean API for groups.
223
 
      1) Adding an object / region.
224
 
      2) Removing an object / region.
225
 
      3) Geometric transformations.
226
 
      4) Changing z-order.
227
 
      5) Group / ungroup.
228
 
      6) Copy and paste.
229
 
      7) Computation of decorations.
230
 
  * Documentation of all APIs.
231
 
 
232
 
===============================================================================
233
 
UPCOMING STYLE REWRITING TOOL
234
 
===============================================================================
235
 
 
236
 
Reminders
237
 
  * Attention to implicitly changed variables, such as the-tags,
238
 
    the-label, etc., which may cause the entire document to be retypeset.
239
 
  * Attention to base-file-name, cur-file-name, current-part.
240
 
    Also put these variables in vars.hpp.
241
 
  * Replace "arg" primitive by quasi-quoting mechanism.
242
 
    This seems to be quite necessary: consider <assign|foo|<macro|body|...>>
243
 
    and a document piece <\foo>...</foo> with a large body. When making
244
 
    changes to the body; the environment for typesetting the body
245
 
    also changes, because we need to store the body in the "foo" environment
246
 
    argument variable. For this reason, we implemented an alternative
247
 
    mechanism, which is enabled using #define ALTERNATIVE_MACRO_EXPANSION.
248
 
  * More systematic usage of symbols instead of strings.
249
 
  * Should BibTeX labels really be prefixed by "bib-"?
250
 
  * Links and multiple views: which view should be selected when
251
 
    following a hyperlink. More generally: refine criteria for
252
 
    automatically preferring one locus over another one in presence
253
 
    of ambiguities.
254
 
 
255
 
Problem with auxiliary data in hidden markup (eg. labels, loci, links, indexes)
256
 
  * Analogy: hidden markup <-> loaded file which is not in a buffer.
257
 
    We might want to associate auxiliary data to tree nodes instead of files.
258
 
    Notice that there are different types of hidden structures:
259
 
      1) Contents should *not* be evaluated when hidden, but we need to
260
 
         keep track of auxiliary data. Example: a hidden chapter.
261
 
      2) Contents are evaluated but not typeset: auxiliary data may
262
 
         be kept in macro expander. Example: fold.
263
 
      3) Contents are not evaluated, not typeset and no auxiliary data
264
 
         are attached to the contents. Example: a comment or any piece of
265
 
         markup which has to be completely ignored.
266
 
 
267
 
===============================================================================
268
 
UPCOMING MARKUP-BASED GUI
269
 
===============================================================================
270
 
 
271
 
Remaining issues
272
 
  * Attach the action to be applied after popup input to a specific buffer.
273
 
  * Cleaner implementation of read-only parts in documents.
274
 
  * Cleaner implementation of size computation of widget.
275
 
    Also: notebooks and folding constructs, which may require
276
 
    to update the size later on.
277
 
  * Cleaner implementation of widget fields (i.e. the way we associate
278
 
    data to names).
279
 
  * Don't require the specification of a body for hidden input fields.
280
 
  * Argument history and browsing suggestions using keyboard.
281
 
  * Destroy call backs associated to a widget when the corresponding
282
 
    window is closed using another method than "dismiss".
283
 
    Idea: potentially associate a dismiss routine to each buffer.
284
 
 
285
 
===============================================================================
286
 
MANAGEMENT AND ADMINISTRATION
287
 
===============================================================================
288
 
 
289
 
Publicity
290
 
 
291
 
Mirror sites
292
 
  * CVS mirror at Savannah and automatic update scheme.
293
 
  * Also search for other mirror sites (increases availability and
294
 
    visibility on the web).
295
 
 
296
 
===============================================================================
297
 
TUTORIAL OR SERIES OF INTRODUCTORY ARTICLES (E.G. FOR LINUX MAGAZINE)
298
 
===============================================================================
299
 
 
300
 
General introduction/quick overview
301
 
  * Different purposes of TEXMACS
302
 
  * Writing a simple text
303
 
  * Style-sheets and writing a simple macro
304
 
  * Running a computer algebra system
305
 
  * Inserting an action tag which launches an xterm (and mutator tag?)
306
 
 
307
 
Writing simple structured texts
308
 
  * Why are structured documents useful?
309
 
  * How to enter structure into TEXMACS, redundancy of the interface
310
 
  * Understanding the visual indications, cursor movement
311
 
  * Editing the structure (removing structure, improper nesting, variants,
312
 
    numbering)
313
 
  * Exploiting structure: spell checking, searching
314
 
  * Reminders about correct typography
315
 
 
316
 
Writing mathematical texts
317
 
  * Entering math mode, equations, equation arrays
318
 
  * Simple mathematical formulas, recall cursor movement
319
 
  * Mathematical symbols, variants
320
 
  * Semantics of multiplication, function application and
321
 
    other implicit semantics
322
 
  * Simple matrices and other tabular environments
323
 
 
324
 
Writing simple macros and style-sheets
325
 
  * Rendering of source code, what is source code?
326
 
  * A simple macro
327
 
  * A simple style package
328
 
  * Customization of some existing macros
329
 
 
330
 
Etc.