patches by Rostislav Beneš: mc-30-view

experimental patch, completely different reading file, new cache structure,
shall view text in every encodings (remaped ctrl + t, new dialog need
localization).

1. to avoid backward reading, viewer keeps four following characters from
    file: next, actual and two previous. This is enough to handle new lines
    and nroff fortmatin correctly.
2. cache_line structure, that presents one line in file. cache_line stores,
    where line starts and ends in file,number of line and width of line. Width
    is at most equal to screen width, so longer lines are cached in more
    cache_lines. This makes wrapping text very easy. Cache_lines are stored
    in a linked list. file is loaded into cache_lines sequential, not whole at once.
    It only provides navigation in file.

I found two problems in this solution:
    1. slow first move to end in large files, because can not read files
        backward. (loading in background may help)
    2. it is slow with multibyte characters. I tried to eliminate calling iconv
        to two, but it did not help (iconv is called on every byte). I think
        caching some parts of file will be needed.
This commit is contained in:
Slava Zanko 2008-12-29 01:55:48 +02:00
parent 1efbe4a18a
commit b7b74c2f03
1 changed files with 1325 additions and 685 deletions

2010
src/view.c

File diff suppressed because it is too large Load Diff