From 2825db5ee42b6a59740dffca345632229a47f8cb Mon Sep 17 00:00:00 2001 From: Amjith Ramanujam Date: Sun, 30 Nov 2014 22:22:06 -0800 Subject: [PATCH] Add an extra screenshot. --- README.rst | 1 + TODO | 8 ++++---- pgcli/config.py | 3 +++ screenshots/image02.png | Bin 0 -> 11767 bytes 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 screenshots/image02.png diff --git a/README.rst b/README.rst index 8b676954..81fd106f 100644 --- a/README.rst +++ b/README.rst @@ -3,6 +3,7 @@ A REPL for Postgres This is a postgres client that does auto-completion and syntax highlighting. +.. image:: screenshots/image02.png .. image:: screenshots/image01.png Installation diff --git a/TODO b/TODO index 2c290a02..dc305816 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,8 @@ -* [X] Add borders around the table. -* [ ] Investigate why having a space in the beginning of the line breaks everything. * [ ] Add more complex slash commands such as \d . * [ ] Update README. -* [] Upload rev 2 to PyPI. +* [ ] Upload rev 2 to PyPI. * [ ] Add a new trigger for M-/ that does dumb completion. * [ ] Find a way to add documentation to sql commands. This could get tricky. -* [X] Deal with commands that have no return rows (such as delete, begin transaction etc). * [ ] Add a lot more SQL keywords to auto-completion (Read the postgres docs) * [ ] Add tests for smart completion. * [ ] Detect a '.' and parse the word before it and get it's real name. @@ -16,6 +13,9 @@ * [] Create a better framework for adding special commands. * A dict with special commands as keys. * The value can either be a string or a callable. +* [X] Deal with commands that have no return rows (such as delete, begin transaction etc). +* [X] Add borders around the table. +* [X] Investigate why having a space in the beginning of the line breaks everything. * [X] Test if the special comands are autocompleted correctly. * [x] Control smart completion via config file. * [x] Figure out how to deal with transactions. diff --git a/pgcli/config.py b/pgcli/config.py index e94bd746..5677125d 100644 --- a/pgcli/config.py +++ b/pgcli/config.py @@ -1,6 +1,7 @@ from shutil import copyfile from os.path import expanduser, exists from ConfigParser import SafeConfigParser +#from prompt_toolkit.contrib.pdb import set_trace def load_config(filename): filename = expanduser(filename) @@ -9,6 +10,8 @@ def load_config(filename): return parser def write_default_config(source, destination, overwrite=False): + #import pdb; pdb.set_trace() + #set_trace() destination = expanduser(destination) if not overwrite and exists(destination): return diff --git a/screenshots/image02.png b/screenshots/image02.png new file mode 100644 index 0000000000000000000000000000000000000000..c321c861b8247e7b09f754e46c7ccca397850052 GIT binary patch literal 11767 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 jll@OOXfdq|0eS@?X& literal 0 HcmV?d00001