Sync with gnulib 1ff0e9684bb83a8277ffe22ac125ce7e90f6702b.
[midnight-commander.git] / doc / TODO
blobe6253fdb2f9267b6286abb9f410f203cc5c43580
1 mc manual: Add Environment Variables section
3 Clean up #include's in all files.
5 Remove all instances of type casts on function pointers. Run the
6 following command to get a list of function pointer types.
7     grep -r 'typedef.*(\*' . \
8     | sed -n 's/.*(\*\([[:alnum:]_]*\)).*/(\1)/p' \
9     | sort -u \
10     > fn-types.txt
11 Then use fgrep to find illegal uses of these types.
12     fgrep -r "`cat fn-types.txt`" .
13 Fix these uses by writing small wrapper functions.
15 When saving a file is not possible, mcedit should ask the user what to
16 do:
17 - su(1) to another user and try again
18 - sudo
19 - change permissions of the file or the containg directory
20 - other smart things
22 Due to problems in the VFS, files are not written back after being edited
23 over VFS with an external editor.
25 Allow pathnames starting with spaces in vfs/extfs.
27 Broken pipe warning when viewing large *.tar.gz files.  Warnings should
28 be shown before the viewer is started if possible.
30 Cannot spell check unsaved files in the editor.
32 Dynamic loading for libgpm, libext2fs.
34 Check if the archive was changed for extfs, tar and cpio.  Free the data
35 associated with the old archive.
37 Ctrl-q Ctrl-m in input dialog should enter \r, not a newline.
39 Allow entering archives in VFS by Ctrl-PgDown with non-empty command
40 line.  Right now, there is no convenient way to enter an archive when
41 the command line is not empty.
43 Allow switching between histories of two panels.  It's convenient to
44 change to a directory from the history of the other panel.
46 Allow calling the directory hotlist from Copy, Move and Find File
47 dialogs.  Recent directories are the obvious candidates for copying and
48 looking for files.
50 Allow modifiers for keys in mc.lib, like "shift-up".  Right now,
51 modifiers can be read from the terminal (if supported), but not from the
52 config file.  This change would make it possible to use modifiers even
53 if they can only be identified by the escape sequences.
55 When saving config files, write to a copy, then replace the file.  This
56 would avoid the problem of partly written config files.  Consider using
57 locking of the config files.
59 Totals should only be omitted for single files.
61 Recheck all mouse handlers, make sure that they check button number.  We
62 don't want mouse scrolling to be interpreted as mouse click.
64 Smooth mouse scrolling on panels.  Scrolling one page per step is too
65 fast.
67 Don't read prompt from the subshell, because it's unreliable.  Interpret
68 environment variable MC_PS1 (or PS1) in the same way as bash.
70 Support an environment variable (also like PS1 in bash) for setting the
71 window title.
73 Better date parser - don't allow seconds and year in ftp listings on the
74 same line.
76 Report errors in fish operations and recover from them.
78 Allow colors to be defined in the mc.lib file.  Make it possible to
79 avoid using a super-long line to redefine all colors.
81 Filters in the editor should operate on the open file - don't close and
82 reopen the file.  They don't work on VFS now.  For example, a gzipped
83 files on FTP cannot be edited.
85 ftp and fish with home != '/' - readjust directory to the home.
87 Make "Find File" dialog more responsive.  Keep state in a structure and
88 preserve it when the search is suspended.
90 Use KDGKBENT ioctl on Linux console to find the mapping for shifted
91 functional keys.  Two mappings are widely used (Shift-F1 = F11 and
92 Shift-F1 = F13).  mc should adjust the keys to the mapping.
94 Make the internal editor reentrant.
96 Consistent support for mc.lib.
98 Consistent support for terminal-specific settings.
100 New syntax for mc.ext - path check, desktop environment check.  Detach X
101 programs into a separate process group.  Allow forcing the full path on
102 local files.
104 Click on an image doesn't always work on remote vfs - local copy may
105 be deleted before the application has time to load it.
107 Allow running executables from remote VFS.  Possibly warn the user.
109 Add print dialog in the internal editor.
111 Implement logging, not just for VFS.
113 Eliminate all pipes in subshell.c, run pwd after kill.  Add support for
114 more shells (e.g. ksh).
116 Internal terminal - no more console saving.
118 Implement a really Advanced Chown/Chmod.
120 fxp support in VFS.
122 New listing mode keyword "time": mtime or the time (atime, ctime) used
123 to sort files.
125 Provide "patch" and "diff" editors. The patch editor will automatically
126 adjust the line numbers of the following chunks when lines are deleted
127 or inserted at the beginning of the file.
129 Provide context menus for files. Possible actions include: [compile],
130 [CVS commit], [CVS diff -up], [pack], [unpack], [grep].
132 More standard Widgets: WTreeView, WDirectoryList, WGroupBox, WTextArea,
133 WOpenDialog, WSaveDialog, WPrintDialog, WKeyBar.
135 ========================================================================
136 Everything below this point is the old TODO list.  It doesn't reflect
137 the current priorities of the developers, but may contain interesting
138 ideas still waiting for their implementation.
139 ========================================================================
142 * Bugs
144   - "Files" message flickers a lot when copying files.
146   - Make the extfs handle re-reads.
148   - Check that all the help contexts exist on the help file.
150   - Make the buttonbar for the tree box work.
152   - In the incremental search mode, when backspacing, select the
153     correct file, do not stop in current file.
155   - In learn keys, warn the user if he is trying to
156     i) define a same sequence as an already defined (if the keycode differs)
157     ii) define a sequence, which is a prefix of other longer and already
158         defined sequence
160 * Documentation
162   - Convert the source mc.1 to mc.sgml and create automagically from it
163     mc.1, mc.html, mc.hlp, mc.info, mc.tex, mc.txt etc.
165 * Extensions
167    - Hotlist should allow people to edit the entry (like we do in the external
168      panelize thing).
170    - Change ext.c to allow the %{..} to recursively expand any other %thingies.
172    - Write a general grow_string routine.  This code is used in the internal
173      viewer and would also be used in the profile.c code.
175    -  A command to set the line length to a fixed value for viewing
176       fixed length binary files. LIST does this with Ctrl-B and then
177       prompts for a "record" length.
179    - Viewer: Mark all found matches, and when 'n' is pressed go to the
180      next page, not the next match on the same screen (when there is
181      more than one).
183   - In ftpfs_open, extfs_open, if we set local_filename to tmpnam, use
184     a mechanism to set local_filename to another place on the local
185     diskspace (this would be useful for copying, so that we would save
186     some tmp space). This would require special care in file.c afterwards.
188   - In Listing mode... give at least three user-definable formats
189     (using Janne's Listing mode editor) and assign hot-keys to both
190     standard and user defined (what about c-x f [fbl123] ?).
192   - Shift-Home, Shift-End for the input line: home and end.
194   - Make a mechanism to lock all the mouse events and send them to
195     the locking widget until unlocking is done.
197   - Allow the program to execute a command even when we are on a vfs, maybe
198     a special box, or make subshell code ignore the change directory
199     request. Perhaps each vfs should store a local path attached to it,
200     like in tarfs, extfs it would be the directory which contains the
201     topmost tararchive, in ftpfs it would be the directory which we entered
202     to ftp from.
204   - auto_hint_lines: a variable that would choose to use hint mode when
205     at least auto_hint_lines are visible.
207   - Listbox: Mouse handler for the scrollbar: this will be hard with
208     the current approach (since the listbox scrollbar is drawn *outside*
209     the listbox control area).
211   - In file.c, we shouldn't need to get a full path name in order to
212     work, we should instead canon the file name inside the tar.c (the
213     only fs that relies on this), tar.c should know about the cwd (i
214     think).
216   - Panelize the selected files.
218   - Recursive delete should (perhaps as an option) delete files just after
219     they have been copied and not to delay deleting until everything was
220     moved.
222   - When copying a tree (or moving or deleting), as an option act primarily
223     on the regular files and at the end on directories recursively, so that
224     we get complete high parts of the tree if something fails (useful for
225     ftpfs).
227   - Put into a new and bigger Options/Configuration dialog all the options
228     we have now to set using .mc/ini manually.
230   - When after deleting there are no files in a panelized panel, restore
231     it automagically to the real directory content.
233   - Files/Symlink and Link should be able to do multiple links (if the
234     target is a directory).
236   - Directory sizes should work in background using try_channels.
238   - Support of non-UNIX ls in ftpfs. Perhaps using an ascii configuration
239     file similar to moxftp.
241   - Add an option that will let listboxes do incremental searches.
243 * Optimizations and cleanup
245   - When verbose is off, remove all the clutter on the screen about
246     the files being copied.
248   - The viewer is calling view_update in many places, I call
249     view_update after handling a key, should all the other
250     view_updates be removed?
252   - If the viewer is too slow, some caching could be done.
253     width and cols are currently computed each time they are needed.
255  ++ In the user menu, don't use the entries array, we can now grow
256     dynamically.  I should take a look at this one day, it's easy to
257     fix.