Dmuse: feature requests
- Mouse scroll wheel moved one click towards the user: make equivalent to +
- Mouse scroll wheel moved one click away from the user: make equivalent to +
- Mouse click in scroll-bar region on right side of screen, above current cursor marker: make equivalent to
- Mouse click in scroll-bar region on right side of screen, below current cursor marker: make equivalent to
- Control + Mouse click in scroll-bar region on right side of screen: move to that relative line positoin within the file.
- There is a duplicate entry for "Keystrokes" in the Utilities menu and the Help menu. One of them should be removed (probably the Utilties one).
- "File→Load ... File to Window" doesn't do anything (except print a message). Instead, it should open the File Resident Manager ( ).
- There should be an option in File menu which works like "Save As..." currently there is only an equivalent to "Save" which saves the current window contents to the associated file.
- There should be a search option in the help menu where someone can search for a term, with a list of matches being displayed. However, placing the documentation on the web minimizes the need for this search feature to be built into Dmuse.
- In the resident file manager, it would be useful to allow for filename filtering. Suppose a directory has lots of file in it. Typing the command l will list lots of file and some will scroll off of the screen. If I know some portion of the filename, it would be useful to be able to filter for that portion of the filename. For example, if I type "l p*" only files which start with the letter p would be displayed. If I type "l *.txt", then only files that end in ".txt" will be displayed.
- Add functionality to Read/Write UTF-8 files, with reversible mapping. UTF-8 mappings in Hex format are given in the Dmuse ASCII byte table.
- It may be useful to have an export option for Dmuse text files as HTML files, modeled after the output of dmuse2html. Not all resulting Unicode characters have fixed-width font version (Example: list of Dmuse bytecodes as a Dmuse text file, which is then converted to HTML). More example conversions.
- Volume labels (A:, C:, etc.) might be conceived of as "bookmarks" in OS X and Linux OSes.
- Adding functionality to Dmuse/Zbex programs to read URLs would be useful. With this functionality, files could be downloaded directly off of the internet without needing to be saved to a file on disk. For example, someone could load this CFT file directly into Dmuse for displaying. Here is a C program which demonstrates how to download a file from a web address.
- It would be useful to have an option in the INIT file which reverses the meaning of + and + .
- It may be useful to have an option in the INIT file which switches the meaning of + / and + / .
- + does not work on sentences which end in exclamation or question marks.
- + and + do not work well with sentences which end at the right margin. If a period character is not followed by two spaces at the end of a line when + is typed, wordwrap will cause zero spaces between that period and the text at the beginning of the next line when the paragraph is reformatted.
- It would be useful if there were a "batch mode" for Dmuse where a script containing keystrokes and text could be parsed in a non-interactive way. For example, this would be useful for creating automatic print files. It would be similar to the compiled MuseData to Postscript converter, but would be generalized to allowing any action in Dmuse to be automated.
- It might be useful to add a spell checker to Dmuse for people who use it as a text editor. Spelling can be checked using ispell or aspell. Alternatively, Dmuse text files can be checked with these programs on the command-line without difficulty (at least in English). See also International ispell.
- Tab characters are currently displayed as one character-width symbols (a dashed vertical line). However, one of the purposes of tab characters are to assist in the readability of fields of data, placing them into visually aligned columns. Here is an example of the display method for tab characters currently in Dmuse:
It would be much preferred if tabs in files were expanded into multi-character width entities. Here is an example of a possible method of display when the tab-stop size is set to 13 characters:
The basic algorithm for reading tab characters in a data file and loading/displaying the file with tab characters:
- There would be a user-settable variable for the tab width. By default, tabs are 8 characters wide in a fixed-width font. In Humdrum it is useful to be able to switch dynamically to a different width (as in the above example which set the tab width to 13 characters.). In the vi editor, for example, the tab width would be set to 13 by typing the command ":set ts=13"
- When a file is loaded, line by line, if a tab character is found on the line, its column position is noted. For example if the tab-stop (tab width) is set to 8, and a tab character is found in column 5, four "tab" characters would be added to the line to fill it out so that the next character would be placed in column 9.
- When a line containing a tab is edited, it has to be analyzed in some manner to readjust the tab width of particular tabs. One possible method would be to store a marker for the start of a single tab's multi-character set. When the tabs are moved around, the head of the tab character set would be used to adjust the width of the tab sequence which may have shrank or grown with the addition/deletion of a character somewhere on the line.
- When saving a file, the multi-tab sequence would be reconverted into a single tab character in a fully reversible process (providing the the previous step is handled correctly). For exmaple, suppose that there is a tab sequence starting at character 5 in the line (with the tabstop set to 8 characters). Then there should be three tab markers (in columns 5, 6, 7, 8) which represent a single "real" tab. If there continues to be a tab character in column 9, then that is part of another "real" tab character (which should encompass columns 9-16).
- The dotted line for the Tab character is a bit distracting in the above example showing a multi-character width tab. It would be useful to minimize the visual effect with two possibilities:
- Display the tab character automatically in a lower contrast with the background color as in the following example:
- Set the display of tab characters as a toggle between the style of a space (invisible) and visible (as a set of dotted vertical lines). Some key combination could be used to switch between these modes.
In vi, tabs can be make viewable separately from spaces by searching for tab characters (or spaces). When colorization is enabled in the editor, the matched characters will be highlighted as shown in the following illustration:
Alternatively, spaces could be highlighted:
Vi also has a feature called syntax highlighting. For example, here is a webpage showing syntax highlighting for Humdrum data files. In the example image on the page, invalid tab characters (such as two tab characters in a row or a tab ab the beginning or ending of a line is colored in red). Invalid spaces characters are highlighted in blue. Other functional components of the Humdrum file are given different colors, such as barlines with a white background, interpretations in pink, and reference records in green.
- If a regular ASCII text file contains any tab characters, Dmuse displays a warning window saying that it is possible that the files is a non-ASCII file. It then asks if you want to continue, and if you want to display the contents of the file as a hex dump. It would be preferred if Dmuse did not give this warning due to the presence of a tab character in the file.
- The key is used to move to the next line in a file (similar functionality to + . The tab character is inserted into the text with the keystrokes + + . It would be better have the key insert the Tab character, and the current functionality of moved to another key sequence.
- It would be useful for Dmuse to have a sleep mode to minimize the computer use when the program is running, but not being used. For example, after a duration of five or ten minutes when no key presses or mouse events are entering the program, the program will enter a sleep mode where the program will sleep for a quarter of a second at a time, then wake up and check for incoming events. If there are new key/mouse events, then the program would "wake up" to normal operation; otherwise, the program would remain in sleep mode for another quarter second.
- The "Help→Advanced Topics" help file should mention at the top within the help box to type to go to a specific line number in the file.