fixup_cursor_slow: always stop at terminal block
[hed.git] / doc / README.dev
blob2572093da073a2f7d0b6284404e6ab921235ba86
1 The Developer's Tactical Overview
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 1. Program's Life
6 The program first does some initialization, then opens the file and
7 initializes the UI, and goes to the main loop, polling for events
8 (keyboard input) and terminating when @terminus is set.
10 This all happens in the scope of main.c.
13 2. The Terminal Interface
15 HED uses ncurses internally, but they are covered in a nice user-friendly
16 wrapper living in term/term.*. It should be trivial to acquire from the
17 header file.
20 3. The User Interface
22 The user interface is divided to so-called components. They are stacked and
23 each has its own event handler. The events include redraw requests as well as
24 keyboard input and deinitialization.
26 The user interface infrastructure is provided by ui/core.*. The current three
27 UI components are UI (the main component, scheduled to die in favour of more
28 power for FileShow), FileShow (basically everything you see and 99% of keyboard
29 controls) and InputLine (for search and jump-to-offset).
32 4. The File Storage Backend
34 This backend covers all the file operations and access to the file to an uniform
35 interface. The organization of the storage structure, blocks cache etc. is
36 described in more detail in file/file.h.
39 5. The Tools
41 In the util/ directory, you can find various miscellanous utility files, most
42 notably double-linked cyclic lists implementation and splay binary search trees
43 implementation. Those are generally to be used all over the map.