diff options
author | John Ankarström <john@ankarstrom.se> | 2022-01-22 19:07:41 +0100 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2022-01-22 19:07:41 +0100 |
commit | 136d027bca1d7bfc5bf796a79e5fb16a9b62e20b (patch) | |
tree | 30535c7b5f6f5159d6e6bc89314a04f56e84729b | |
parent | 2f5f23782b77f1f5bf31cc5504e02984336a3aba (diff) | |
download | save-136d027bca1d7bfc5bf796a79e5fb16a9b62e20b.tar.gz |
Ignore executables and backup files.
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | save.exe | bin | 278500 -> 0 bytes | |||
-rw-r--r-- | save.pl~ | 126 |
3 files changed, 2 insertions, 126 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..461f6cb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.exe +*~
\ No newline at end of file diff --git a/save.exe b/save.exe Binary files differdeleted file mode 100644 index d9abb00..0000000 --- a/save.exe +++ /dev/null diff --git a/save.pl~ b/save.pl~ deleted file mode 100644 index ed3ac5f..0000000 --- a/save.pl~ +++ /dev/null @@ -1,126 +0,0 @@ -:- consult(pce_file_search_path). -:- consult(library(pce)). -:- consult(library(process)). - -:- op(920,fy, *). -*_. - -:- pce_begin_class(save_dialog, dialog). - -unlink(D) :-> - shell("git reset"), - send_super(D, unlink). - -:- pce_end_class(save_dialog). - -:- pce_global(@dialog, new(save_dialog('Save'))). -:- pce_global(@files, new(chain)). -:- pce_global(@commits, new(chain)). -:- pce_global(@editor, new(editor)). -:- pce_global(@file_browser, new(browser)). -:- pce_global(@commit_browser, new(browser)). -:- pce_global(@save_button, - new(button(save, message(@prolog, save), 'RET'))). -:- pce_global(@refresh_button, - new(button(refresh, message(@prolog, refresh)))). - -main :- - pce_main_loop(main). - -main(_Argv) :- - init. - -init :- - shell("git add .", Status), - added(Status). - -added(1) :- - send(@display, report, error, - 'Files could not be added to index. -Ensure Git is in PATH.'). - -added(0) :- - %send(@pce, load_defaults, 'Defaults'), - - % Right side. - send(@file_browser, right, @dialog), - send(@commit_browser, right, @dialog), - refresh, - - % Left side. - send(@dialog, append, text('Commit message (optional):', - left, - bold)), - send(@dialog, append, @editor), - send(@dialog, append, @save_button), - send(@dialog, append, @refresh_button), - send(@dialog, open). - -refresh :- - send(@files, clear), - status(@files), - send(@file_browser, members(@files)), - send(@commits, clear), - log(@commits), - send(@commit_browser, members(@commits)). - -status(C) :- - setup_call_cleanup( - process_create(path(git), ['status', '--porcelain'], - [stdout(pipe(Out))]), - read_to_chain(Out, C), - close(Out)). - -log(C) :- - setup_call_cleanup( - process_create(path(git), ['log', '--format=format:%ai %s'], - [stdout(pipe(Out))]), - read_to_chain(Out, C), - close(Out)). - -read_to_chain(S, C) :- - read_line_to_codes(S, Cs), - ( Cs == end_of_file - -> true - ; atom_codes(A, Cs), - send(C, append, A), - read_to_chain(S, C) - ). - -save :- - get(@editor?text_buffer, contents, S), - send(S, strip), - get(S, value, Msg), - ( Msg == '' - -> chain_atom(@files, A), - commit(A) - ; commit(Msg) - ). - -chain_atom(C, A) :- - chain_atom_x(C, '', A). - -chain_atom_x(C, A0, A) :- - ( get(C, delete_head, A1) - -> atom_concat(A0, A1, A2), - atom_concat(A2, ' -', A3), - chain_atom_x(C, A3, A) - ; A = A0 - ). - -commit(Msg) :- - process_create(path(git), ['commit', '-m', Msg], - [process(PID)]), - process_wait(PID, S), - commited(S). - -commited(S) :- - dif(S, exit(0)), - dif(S, exit(128)), - !, - send(@display, report, error, - 'Files could not be saved.'). - -commited(_) :- - send(@dialog, destroy). |