changeset:   254:26dd1eeee5c4
tag:         tip
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 12 16:42:12 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Bug Fix: In ListView, don't fail if search hits list end.


changeset:   253:4c64947bad87
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 12 07:45:46 2010 +1300
files:       src/hsh/curses_display/content_view.py src/hsh/curses_display/job_view.py
description:
Bug Fix: Clamp cursor position in JobView to prevent errors.


changeset:   252:cd4b5dc031fc
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Dec 11 21:32:17 2010 +1300
files:       src/hsh/builtins.py
description:
Bug Fix: Gracefully handle attempts to delete non-existent env variables.


changeset:   251:8b9246c1e79b
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Dec 11 20:29:22 2010 +1300
files:       src/hsh/curses_display/input_view.py
description:
Bug Fix: Gracefully handle completion command on empty input.


changeset:   250:6d0966f997fd
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Dec 10 22:57:25 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Search Feature: Fix backward search in job list view.

In ListView, modify the job_drawn_lines parameter to record where the top line
of job output is relative to the complete job.  Update the list view search,
which needs this in order to find the correct place to begin the search.


changeset:   249:4d3d47b3931e
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 22:28:56 2010 +1300
files:       doc/DeveloperManual.html
description:
Documentation: Update release steps


changeset:   248:57d59fcce1f7
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 22:20:07 2010 +1300
files:       src/hsh/content/text_formatter.py
description:
Bug Fix: Fix incorrect calculation of coordinate offset.


changeset:   247:9d5184b3a231
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 22:03:48 2010 +1300
files:       Makefile src/hsh/command.py src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py src/hsh/curses_display/display.py src/hsh/curses_display/list_view.py src/hsh/curses_display/view.py
description:
Documentation: Clean up various pydoc syntax errors.


changeset:   246:950d22b0d389
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 21:46:55 2010 +1300
files:       src/hsh/curses_display/keybinds.py src/hsh/curses_display/search_view.py
description:
Search Feature: Add ability to do case-insensitve matches.


changeset:   245:43ebfb30e28f
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 21:31:26 2010 +1300
files:       src/hsh/curses_display/content_view.py
description:
Bug Fix: always draw the cursor in the visible area.


changeset:   244:4f02b335db9f
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 01:40:01 2010 +1300
files:       doc/DeveloperManual.html
description:
Bug Fix: always draw cursor inside the screen.


changeset:   243:c30dd862c421
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Dec 07 01:34:42 2010 +1300
files:       src/hsh/content/text_formatter.py
description:
Bug Fix: Correctly calculate formatting for lines exactly as wide as terminal.


changeset:   242:5bb28aede6fe
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Dec 06 23:19:26 2010 +1300
files:       src/hsh/curses_display/input_view.py
description:
Bug Fix: Put cursor in correct position when clearing input text.


changeset:   241:00a1f94c482b
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Dec 06 22:59:35 2010 +1300
files:       src/hsh/content/text_formatter.py
description:
Bug Fix: Fix several problems with line wrapping

Most importantly, ignore line terminator characters when doing
coordinate transformations.  The new char_at() method helps
simplify the logic.

In coord_up_fline() fix the check for trim and width.  And check
for terminating newlines when moving up a line.

In coord_down_fline() ignore terminating newlines when deciding
whether to stay on the same line.

In get_lines(), make sure to not start the reverse formatting on
a newline.  Also, when trimming excess lines, accepting those at
the top is always the correct move because drawing always happens
from the top.

In get_lines(), _format_line(), and _format_line_start(), don't
conflate trim and modified display_pos[1] early, so that the
correct symbol can be placed in the line wrap column.


changeset:   240:01f1aaedc0ac
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 22:17:18 2010 +1300
files:       doc/ContentCurses.dia doc/DeveloperManual.html doc/Internals.dia
description:
Documentation: Update DeveloperManual in preparation for release.


changeset:   239:89961f5430ef
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 18:31:03 2010 +1300
files:       doc/Introduction.html doc/ReleaseNotes.html doc/UserManual.html
description:
Update documentation in preparation for release.


changeset:   238:3eed217c3c14
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 18:28:48 2010 +1300
files:       src/hsh/jobs.py
description:
Usability: Remove replace directive from stored command lines.


changeset:   237:58960773153f
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 17:55:23 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/curses_display/display.py src/hsh/curses_display/view.py
description:
Bug Fix: Make the get_face() functionality accessible to KeyValueView.


changeset:   236:2ee176a6ead5
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 16:26:12 2010 +1300
files:       src/hsh/command.py
description:
Bug Fix: Unescape special characters prior to glob match.

Unescape has to be done before, because globbing may introduce escape patterns
which shouldn't be unescaped.  It also allows backslashes to be correctly used
in globbing.


changeset:   235:f0532b3d40a8
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 16:10:18 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py src/hsh/curses_display/job_view.py
description:
Bug Fix: Display cursor and tail properly in job input mode.

In TextFormatter, don't log warnings when the cursor is just
outside text bounds.

In TextViewport, correctly calculate the cursor pos in tail mode,
and provide a parallel function for the end pos.  Text input mode
uses move_bottom() so ensure tail mode stays active when it's
called.

In JobView, override cursor drawing in input mode so that it can
go to the natural place.  Enable tail mode automatically when
providing input to improve the interactive experience.


changeset:   234:ef3cca8622b3
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 14:31:15 2010 +1300
files:       src/hsh/builtins.py src/hsh/curses_display/display.py src/hsh/curses_display/input_view.py src/hsh/jobs.py src/hsh/system.py
description:
Bug Fix: Better handling for working directory management

Catch and display OSErrors in cd builtin so that trying to cd to
files or non-existant directories results in a friendly error.

Pause when handling exceptions in display to avoid tight loops.

Add functions to hsh.system to access the cwd so that if it
disappears a new appropriate one can be chosen automatically.

Allow builtins to report failure.


changeset:   233:be0b83b1b036
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Dec 05 09:55:23 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Minor Feature: Display the cursor in ListView.

Just for basic usability to know when the list view has focus.


changeset:   232:22b028559432
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Dec 04 22:47:16 2010 +1300
files:       doc/ReleaseNotes.html src/hsh/command.py src/hsh/test/test_command.py
description:
Bug Fix: Better handling for escapes on command line.

Do glob expansion on more strings by making glob_match accept any
odd number of back slashes.

Modify unescaper_nonglobs so the string a\\f is correctly
handled.  Previously the match would fail on the first \, but
would succeed on the second, resulting in one being incorrectly
removed.

Change the handling of literal glob characters when calculating
completions to be slightly more useful.


changeset:   231:2979bed0720d
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Dec 04 07:53:09 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Bug Fix: Show the correct number of header lines in ListView.

len(self.header) - self.hp was not the number of header lines left
when going from the tail.


changeset:   230:95e3f854eba4
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Dec 02 22:00:54 2010 +1300
files:       src/hsh/content/text_viewport.py
description:
Bug Fix: Correctly calculate cursor position on long input lines.


changeset:   229:d82cb6caddc3
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Dec 02 21:22:09 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Search feature: Handle an empty search pattern in ListView.


changeset:   228:31aad703a091
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 28 23:58:34 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Search feature: load old jobs for backwards search in ListView.


changeset:   227:807cedfac47a
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 28 15:34:50 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/curses_display/list_view.py src/hsh/lib.py
description:
Search feature: Implement search for ListView

TextFormatter.search() is updated to support new use.

A lib.py is created for basic functions starting with clamp().

Enhance ListView.JobFormatFetcher to support search as well as get
functionality.  Internally it now tracks position in header, rather than
modifying the formatted header lines, to support skipping from head, then
searching from tail.

Add the move_search() method to ListView.


changeset:   226:d84101cba8c9
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Nov 27 07:26:36 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Fix issues in ListView

+ Only show job output when required.
+ Set job_drawn_lines values correctly.
+ Add some comments and fix pydoc.
+ Fix broken check to jobs_drawn_last.


changeset:   225:16c8a213ea1f
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Nov 23 06:41:36 2010 +1300
files:       doc/DeveloperManual.html
description:
Documentation: Add several more issues.


changeset:   224:57084554a4d8
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Nov 23 06:11:41 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Fix display bug moving ListView off screen.


changeset:   223:532641fe5f87
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Nov 22 23:14:59 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py src/hsh/curses_display/job_view.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Rewrite tailing logic

In TextFormatter, rename 'tail' format option to 'reverse' because it doesn't
actually provide automatically tailing, and fix its documentation to accurately
describe what it does.  The previous plan, as documented, to change display_pos
to count backwards wasn't implemented, was confusing, and wasn't terribly
useful because coordinates are easily changed, and tracking the thirteenth from
last line is not a common use case.

Implement tailing correctly in TextViewport, where multiple subclasses can
share it.  The previous code wasn't correct.

Remove the older tailing implementation from JobView in favour of the
implementation in TextViewport.

Update ListView for the change to TextFormatter.


changeset:   222:59964aba1169
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Nov 22 00:22:32 2010 +1300
files:       src/hsh/content/text_formatter.py
description:
Text formatting code overhaul: Fix coordinate boundary check issue.


changeset:   221:4da939dda03d
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 21 23:52:16 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Rewrite ListView formatting code.

ListView:
    Add two internal classes, JobFormatFetcher and JobFormatAssembler, to
    encapsulate the formatting code, replace the _format_job() method and
    simplify the draw() code.

    Remove now unnecessary edge-case checks from move_job_top() and
    move_job_bottom().

TextFormatter: Support changes to ListView:
    Add accessor to wrapped Text.

    Add support for coordinates beyond the edges of the formatted text so that
    drawing positions from before and after the output can be represented.

    When generating tailed output, allow for the case of no output being
    generated, rarther than forcing at least one line.


changeset:   220:da1e3de028a8
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Nov 16 23:56:53 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Remove unneceessary formatting from ListView

Change interface to _format_job() so that formatting of undrawn
lines can be skipped.  Assemble exactly the drawn lines into
prelines and postlines, then drawn all of them.

Enhance functionality of TextFormatter to support ListView by
making coord movement functions more flexible and returning more
information from get_lines().


changeset:   219:2bcfb6e01290
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Nov 16 23:36:12 2010 +1300
files:       src/hsh/content/text.py
description:
MutableText improvement: handle empty list assignments correctly.


changeset:   218:29df764963a9
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 14 11:49:46 2010 +1300
files:       src/hsh/curses_display/input_view.py
description:
Avoid a deprecation warning in Python 2.6.


changeset:   217:b94cda12134a
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Nov 13 10:27:53 2010 +1300
files:       src/hsh/config.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Minor code improvement.

Rename the confusing variable used for defining the job header format.
Add a function to consolidate fetching its size.


changeset:   216:32013f925acd
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Nov 13 10:11:36 2010 +1300
files:       src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py
description:
Text formatting code overhaul: Move some search code into TextFormatter.

Some search code is moved from TextViewport to TextFormatter so it will be
accessible to ListView.

Additionally, jumping to the next or previous search skips matches on the same
visible line.


changeset:   215:bcd562c422e2
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Nov 13 00:14:55 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Fix bugs in ListView

* Make Home and End work correctly by changing bounds check on
  move_job_top() and move_job_bottom().
* Ensure smooth transition of current jobs when moving up
  through output.


changeset:   214:1858736daca2
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Nov 12 23:54:52 2010 +1300
files:       src/hsh/aliases.py src/hsh/command.py src/hsh/curses_display/input_view.py
description:
Text formatting code overhaul: Rename CommandText to CommandToken.

This reduces potential confusion over names.


changeset:   213:268de003cf13
user:        Alexander Taler <dissent@0--0.org>
date:        Wed Nov 10 02:05:16 2010 +1300
files:       src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Fix bounds checking in ListView.

Ensure that the correct number of lines are returned from
self._format_job() so that job_drawn_lines will hold correct
values and not creep off the window.  Fix a couple of places that
depended on formatted lines extending beyond the window.


changeset:   212:ed5beb3fd380
user:        Alexander Taler <dissent@0--0.org>
date:        Wed Nov 10 01:31:31 2010 +1300
files:       src/hsh/curses_display/display.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Reorganize ListView positioning code.

Change ListView._set_curjob() to have a more explicit interface
for aligning the output.  This allows several chunks of other
code to be subsumed into _set_curjob(), consolidating the
alignment code into a single location, if not making it prettier.

Replace self.job_draw_lines with an entry in self.job_options and
a new list self.jobs_drawn_last.  The previous implementation was
problematic becuase job_draw_lines used indexes from self.jobs as
keys which would be corrupted by changes to the list of jobs.


changeset:   211:c30591d2dc08
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 07 21:09:01 2010 +1300
files:       src/hsh/curses_display/job_view.py src/hsh/curses_display/list_view.py
description:
Text formatting code overhaul: Reorganize ListView formatting code.

In ListView, create a job specific options dict, and move job
header and output formatters into it, along with the show_output
value which was stored in JobView.  Manage the dicts during job
addition and removal, and make the removal process more robust.

Consolidate job output drawing code for both the pre and post
cases into a single shared function.


changeset:   210:06f60fb3fb1a
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Nov 07 13:04:27 2010 +1300
files:       src/hsh/content/text_viewport.py src/hsh/curses_display/search_view.py
description:
Text formatting code overhaul: Fix minor search bugs.
 + Handle empty patterns.
 + Enable backwards search to pass lines containing two matches.
 + Handle changes to ContentView


changeset:   209:52f884457c04
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Nov 06 23:07:16 2010 +1300
files:       src/hsh/content/text.py src/hsh/content/text_formatter.py src/hsh/content/text_viewport.py src/hsh/curses_display/content_view.py src/hsh/curses_display/input_view.py src/hsh/curses_display/job_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/search_view.py
description:
Text formatting code overhaul: Create TextViewport class.

TextViewport provides cursor and display position tracking, search features,
including cursor movement code.  Several other views are updated too.

TextFormatter and Text classes receive some more features in order to support
the changes.


changeset:   208:7efe795299db
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Nov 05 00:13:50 2010 +1300
files:       src/hsh/content/text.py src/hsh/content/text_formatter.py src/hsh/curses_display/content_view.py src/hsh/curses_display/display.py src/hsh/curses_display/input_view.py src/hsh/curses_display/job_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Text formatting code overhaul: Create TextFormatter class.

Code from View and ContentView is moved into a new TextFormatter class which
collects formatting options in a single non-curses specific location.
ContentView constructor changed to require a Text object to reduce internal
assumptions about types, and the name of the internal variable holding it is
changed.  All subclasses of ContentView are updated for the changes, including
moving several formatting options into TextFormatter.

ListView changes processing to use TextFormatter objects, and moves the
show_output processing into TextFormatter, including a change to use None to
request displaying everything instead of -1.

CursesDisplay thread start is delayed until construction is complete because it
now depends on the global hsh.display_obj.

Settle on terminology: 'trim' for characters hidden from beginning of the line;
'clip' for characters hidden from the end of the line, and 'truncate' for lines
hidden off the bottom of the display.  This affects several variable names and
comments from ContentView and View.


changeset:   207:d0ebe4fb053f
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Nov 02 00:09:35 2010 +1300
files:       src/hsh/content.py src/hsh/content/__init__.py src/hsh/content/text.py src/hsh/curses_display/content_view.py src/hsh/curses_display/keyvalue_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py src/hsh/jobs.py src/hsh/test/test_content.py
description:
Text formatting code overhaul: Introduce new base class Text

Rename content.py to content/text.py in expectation of more text formatting
classes to come soon.  Define a new Text class distinct from MutableText to
allow immutable subclasses like JobOutput.

This is the first in a series of commits to split the text formatting code into
smaller more manageable chunks.  These changes are necessary to support
upcoming features like better handling large job output, and will make
implementing search in list view less irritating.


changeset:   206:d13016a41d2c
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Oct 28 14:13:02 2010 +1300
files:       .hgignore Makefile bin/make_pkg.sh doc/Makefile src/Makefile
description:
Add make target to generate pydoc and consolidate Makefiles.

Move all the functionality from doc/Makefile and src/Makefile into a
common Makefile.  Add pydoc generation, package building, and clean
to the new Makefile.


changeset:   205:c31718417c20
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Oct 28 13:46:02 2010 +1300
files:       src/hsh/test/test_command.py
description:
Fix broken test created by previous directive change fix.


changeset:   204:9f8ea0981de6
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Oct 28 13:33:33 2010 +1300
files:       src/hsh/command.py src/hsh/jobs.py
description:
Remove circular dependency between jobs.py, command.py, and builtins.py.

Move the static list of job directives from command.py to jobs.py, so that
jobs.py no longer depends on command.py.  Since directives are used in jobs.py
instead of command.py this is the appropriate fix.


changeset:   203:6f960e5c5abd
user:        Alexander Taler <dissent@0--0.org>
date:        Wed Oct 27 21:00:06 2010 +1300
files:       doc/DeveloperManual.html
description:
Fix current job feature is implemented.


changeset:   202:057d9dfc3be2
user:        Alexander Taler <dissent@0--0.org>
date:        Wed Oct 27 20:57:05 2010 +1300
files:       doc/DeveloperManual.html
description:
Add some details of the search feature, and several new minor things
to implement.


changeset:   201:0ceca1ce2d5d
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Oct 03 14:34:19 2010 +1300
files:       src/hsh/curses_display/content_view.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Implement forward and reverse search from search_view.


changeset:   200:d81aac7a4dcc
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Oct 02 14:26:15 2010 +1300
files:       src/hsh/curses_display/display.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Change keybindings for search view.

M-s: show and focus search view always, rather than toggling.
M-c: close the search view when it's focussed.


changeset:   199:fdf0af5143e2
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Sep 28 01:33:25 2010 +1300
files:       src/hsh/config.py
description:
Define 'jobs' an alias to show RunningJobs


changeset:   198:b84629f3e4eb
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Sep 28 01:28:19 2010 +1300
files:       src/hsh/content.py src/hsh/test/test_content.py
description:
Fix bug in content region management.

When replacing the left most character of a region, _update_regions() would
update that region as well as it's neighbour.  Now it only updates one.


changeset:   197:7a4a808d7494
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Sep 27 22:23:54 2010 +1300
files:       src/hsh/curses_display/content_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/view.py
description:
Simplify code by making View.format_lines() an instance method.

Face names are stored in member variables, and lookups are done inside the
format_lines() method rather than being passed from subclasses up to the shared
code as function parameters.  Subclasses can still override defaults by
providing alternative face names.


changeset:   196:bbb7b2f521ba
user:        Alexander Taler <dissent@0--0.org>
date:        Mon Sep 27 00:36:43 2010 +1300
files:       src/hsh/content.py src/hsh/curses_display/job_view.py src/hsh/curses_display/keyvalue_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py src/hsh/jobs.py
description:
Make TextLine.append_region() more versatile and simplify calling code.


changeset:   195:4308d4968b92
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 26 19:00:37 2010 +1300
files:       src/hsh/config.py src/hsh/content.py src/hsh/curses_display/content_view.py src/hsh/curses_display/display.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/keyvalue_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Enable search highlighting for the main view.

The draw() method is extended to take an extra parameter used when search
highlighting should be done.  The SearchView object is passed in, and provides
a function which highlights TextLines.  Drawing is integrated with the
ContentView and KeyValueView objects.

In hsh/content.py TextLineRegion receives the ability to support get()s, and
its constructor is made more flexible so that these objects can be cloned.


changeset:   194:f09d5f5b004a
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 25 09:06:54 2010 +1200
files:       src/hsh/config.py src/hsh/curses_display/content_view.py src/hsh/curses_display/display.py src/hsh/curses_display/input_view.py src/hsh/curses_display/job_view.py src/hsh/curses_display/keyvalue_view.py src/hsh/curses_display/list_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Refactor curses face management.

Associate faces with specific views or make them default, and do lookups in the
context of a view object.  This means face information does not need to be
passed around as much and view objects no longer need to keep face information
in member variables.

Access to faces in the display object is now brokered by View.get_face().  A
common View.set_face() function can now be used.  Some face names are modified
for consistency.


changeset:   193:f1be034b0265
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 19 10:30:19 2010 +1200
files:       src/hsh/config.py src/hsh/curses_display/content_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Customize appearance of search window.

Extend functionality of View and ContentView:
  + Add support for defining a prefix string to each line of text.
  + Add support for defining a face for all text.

SearchView takes advantage of new facilities by changing colours and defining
a "/" prefix.

MessageView takes advantage of new face support on text to remove custom code.


changeset:   192:86b34d5c4e41
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 19 10:20:37 2010 +1200
files:       src/hsh/curses_display/input_view.py
description:
Minor cleanup of imports and comments


changeset:   191:eba10a5c7f25
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 19 09:43:31 2010 +1200
files:       src/hsh/curses_display/display.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/search_view.py src/hsh/curses_display/view.py
description:
Create a new window for entering incremental search strings.

A new class is created, SearchView, and instantiated in display.  The
keybinding M-s is created to toggle the visibility of the view.  It accepts
input but no actual searching is yet wired in.


changeset:   190:ec7054eaff52
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 18 20:28:40 2010 +1200
files:       src/hsh/curses_display/content_view.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/list_view.py src/hsh/curses_display/view.py
description:
Bind M-w to a new function to toggle line-wrapping.

toggle_wrap() is a new function added to View and appropriate subclasses, and
is globally bound to M-w.  It accesses the display_wrap member, already present
in ContentView, and newly defined in ListView.


changeset:   189:e88a756b0909
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Sep 17 11:46:07 2010 +1200
files:       src/hsh/curses_display/list_view.py
description:
Ensure that the current job remains visible after its output is hidden'


changeset:   188:657d8d360149
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Sep 17 11:27:48 2010 +1200
files:       src/hsh/config.py
description:
Define 'history' as an alias to show the CommandHistory.


changeset:   187:8f797a012dd0
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Sep 17 11:24:16 2010 +1200
files:       src/hsh/curses_display/keybinds.py src/hsh/curses_display/list_view.py
description:
Enhance command history so inserted text can optionally overwrite current input.


changeset:   186:91a581d0a3b0
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Sep 17 11:05:43 2010 +1200
files:       src/hsh/curses_display/input_view.py src/hsh/curses_display/list_view.py
description:
Change history navigation so that going past the end gives a blank line.

Also reset InputView.display_off so that history navigation doesn't cause short
lines to be cropped after showing a long line.


changeset:   185:67ab4c9b001a
user:        Alexander Taler <dissent@0--0.org>
date:        Fri Sep 17 10:56:12 2010 +1200
files:       src/hsh/curses_display/content_view.py
description:
Fix minor error in comments.


changeset:   184:149a4ea54fcd
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Sep 16 23:57:41 2010 +1200
files:       src/hsh/curses_display/input_view.py src/hsh/curses_display/list_view.py
description:
Improve history navigation code.

curses_display/input_view.py
 + Remove irrelevant return statement in _do_command()
 + Refactor back_history() and forward_history() into a single shared method
   which doesn't lose its place if the user modifies the command line while
   browing history, and copes with hist.current_job() being None.

curses_display/list_view.py
 + Add set_current_job() method for use by history browsing code.
 + Modify set_visible_job() to share code with set_current_job().


changeset:   183:c1faf0f23ca8
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Sep 16 21:01:10 2010 +1200
files:       src/hsh/curses_display/view.py
description:
Provide more informative documentation for set_visible_job()


changeset:   182:040743f2a06e
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Sep 16 20:54:36 2010 +1200
files:       src/hsh/curses_display/display.py
description:
Fix minor bug in curses_display that was doing unnecessary processing


changeset:   181:230bb624899f
user:        Alexander Taler <dissent@0--0.org>
date:        Thu Sep 16 18:55:29 2010 +1200
files:       src/hsh/curses_display/content_view.py src/hsh/curses_display/display.py src/hsh/curses_display/input_view.py src/hsh/curses_display/job_view.py src/hsh/curses_display/message_view.py src/hsh/curses_display/view.py
description:
Refactor screen layout code to be more flexible.

This change is in preparation for the addition of search functionality, and
will also be beneficial for adding a help window.

It significantly modifies the internal functioning of display.py.  The
organization of views on the screen is now specified in the 'layout' member
variable, a list of view objects.  This replaces the member variable 'main'
which becomes layout[0].  Assumptions about layout are removed from the drawing
code in CursesDisplayThread and in next_window(), although it's still assumed
that the first view is the greedy one.

Additional functionality is added to View and MessageView to refuse focus if
it's not appropriate for the window, most importantly for the alert view.


changeset:   180:8925432a3c5f
user:        Alexander Taler <dissent@0--0.org>
date:        Wed Sep 15 21:17:39 2010 +1200
files:       src/hsh/curses_display/view.py
description:
Fix mishandling of \r line endings in job output.


changeset:   179:74186eef2736
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 12 18:31:47 2010 +1200
files:       src/hsh/curses_display/job_view.py src/hsh/curses_display/keybinds.py src/hsh/curses_display/list_view.py src/hsh/curses_display/view.py
description:
Make Alt-e "edit" the command line for the current job.

Add implementation for preparing the new command line to job_view.py.
Modify keybindings and other classes so this works from list views and input
view too.


changeset:   178:2daa36562cf0
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 12 17:44:07 2010 +1200
files:       src/hsh/curses_display/job_view.py
description:
Addendum to revision 18a33afdce9d.

Remove a redundant call to display_job() when restarting a job.


changeset:   177:6b2afb309625
user:        Alexander Taler <dissent@0--0.org>
date:        Sun Sep 12 16:42:45 2010 +1200
files:       src/hsh/command.py src/hsh/jobs.py
description:
Add the #replace directive for replacing a job.

Modify create_job() to search for the replace directive, and if it's found to
modify an existing job object.  Move code shared by the replace and create
paths into a common job._set_command() method.


changeset:   176:18a33afdce9d
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 11 21:57:19 2010 +1200
files:       src/hsh/curses_display/input_view.py src/hsh/exceptions.py src/hsh/jobs.py
description:
Refactor interface between InputView and JobManager.

Move non-curses-specific stuff from InputView into JobManager:
   + Access to the command object and validation of command.
   + starting the job.

Move request to display #exclusive job from InputView into the
job class itself.  This will be appropriate if the handling of
#exclusive jobs becomes more complex in future.

Use exceptions to communicate job creation failure.

Handle the case of trying to suspend a job which isn't running.


changeset:   175:63df77fe9df0
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 11 12:38:05 2010 +1200
files:       bin/make_pkg.sh
description:
Increment package version for next release.


changeset:   174:089f7b611a77
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 11 07:56:31 2010 +1200
files:       bin/make_pkg.sh
description:
Clarify meaning of package script output.


changeset:   173:0d36a2205d4a
user:        Alexander Taler <dissent@0--0.org>
date:        Sat Sep 11 07:54:33 2010 +1200
files:       src/hsh/curses_display/list_view.py
description:
Fix paging through command history.

In command history, each job takes only one line on the screen, not two.


changeset:   172:d117f5494e26
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Sep 07 13:13:07 2010 +1200
files:       .hgtags
description:
Added tag hsh-1.-2.3 for changeset 6bcf6933d117


changeset:   171:6bcf6933d117
tag:         hsh-1.-2.3
user:        Alexander Taler <dissent@0--0.org>
date:        Tue Sep 07 12:58:50 2010 +1200
files:       bin/make_pkg.sh doc/CommandObjects.dia doc/DeveloperManual.html doc/Internals.dia doc/Introduction.html doc/ReleaseNotes.html doc/UserManual.html src/hsh/welcome.py
description:
Documentation: Updates for version 1.-2.3


