Changeset efeec7f
- Timestamp:
- Jul 9, 2011, 4:11:45 PM (13 years ago)
- Branches:
- master, release-1.10, release-1.8, release-1.9
- Children:
- a130fc5
- Parents:
- 3eeb6ed
- git-author:
- Jason Gross <jgross@mit.edu> (05/23/11 19:06:48)
- git-committer:
- Jason Gross <jgross@mit.edu> (07/09/11 16:11:45)
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
commands.c
ra16d7e5 refeec7f 693 693 "current view.\n"), 694 694 OWLCMD_ALIAS("del", "delete"), 695 696 OWLCMD_ARGS("delete-and-expunge", owl_command_delete_and_expunge, OWL_CTX_INTERACTIVE, 697 "delete a message", 698 "delete-and-expunge [-id msgid] [-q | --quiet]", 699 "If no message id is specified the current message is deleted.\n" 700 "Otherwise the message with the given message id is deleted.\n" 701 "If --quiet is specified, then there is no message displayed on\n" 702 "success.\n"), 703 OWLCMD_ALIAS("delx", "delete-and-expunge"), 695 704 696 705 OWLCMD_ARGS("undelete", owl_command_undelete, OWL_CTX_INTERACTIVE, … … 2354 2363 } 2355 2364 2365 char *owl_command_delete_and_expunge(int argc, const char *const *argv, const char *buff) 2366 { 2367 bool exclaim_success = true; 2368 2369 if (argc > 1 && (!strcmp(argv[1], "-q") || !strcmp(argv[1], "--quiet"))) { 2370 exclaim_success = false; 2371 argc--; 2372 argv++; 2373 } else if (!strcmp(argv[argc - 1], "-q") || !strcmp(argv[argc - 1], "--quiet")) { 2374 exclaim_success = false; 2375 argc--; 2376 } 2377 2378 if (argc == 1) { 2379 owl_function_delete_and_expunge_cur(exclaim_success); 2380 return NULL; 2381 } 2382 2383 if (argc == 3 && (!strcmp(argv[1], "-id") || !strcmp(argv[1], "--id"))) { 2384 owl_function_delete_and_expunge_by_id(atoi(argv[2]), exclaim_success); 2385 return NULL; 2386 } 2387 2388 owl_function_makemsg("Unknown arguments to delete-and-expunge command"); 2389 return NULL; 2390 } 2391 2356 2392 char *owl_command_undelete(int argc, const char *const *argv, const char *buff) 2357 2393 { -
functions.c
r3eeb6ed refeec7f 662 662 } 663 663 664 void owl_function_delete_and_expunge_message(int n) 665 { 666 owl_messagelist *ml = owl_global_get_msglist(&g); 667 owl_view *v = owl_global_get_current_view(&g); 668 int lastmsgid = owl_function_get_curmsg_id(v); 669 670 /* delete and expunge the message */ 671 owl_messagelist_delete_and_expunge_element(ml, n); 672 673 owl_function_redisplay_to_nearest(lastmsgid, v); 674 } 675 676 void owl_function_delete_and_expunge_cur(bool exclaim_success) 677 { 678 int curmsg; 679 const owl_view *v = owl_global_get_current_view(&g); 680 681 /* bail if there's no current message */ 682 if (owl_view_get_size(v) < 1) { 683 owl_function_error("No current message to delete"); 684 return; 685 } 686 687 /* delete the current message */ 688 curmsg = owl_global_get_curmsg(&g); 689 owl_function_delete_and_expunge_message(curmsg); 690 if (exclaim_success) 691 owl_function_makemsg("Message deleted and expunged"); 692 } 693 664 694 /* if move_after is 1, moves after the delete */ 665 695 void owl_function_deletecur(int move_after) … … 1664 1694 } 1665 1695 1696 void owl_function_delete_and_expunge_by_id(int id, bool exclaim_success) 1697 { 1698 const owl_messagelist *ml = owl_global_get_msglist(&g); 1699 int msg = owl_messagelist_get_index_by_id(ml, id); 1700 if (msg < 0) { 1701 owl_function_error("No message with id %d: unable to delete", id); 1702 } else { 1703 owl_function_delete_and_expunge_message(msg); 1704 if (exclaim_success) 1705 owl_function_makemsg("Message deleted and expunged"); 1706 } 1707 } 1708 1666 1709 /* note: this applies to global message list, not to view. 1667 1710 * If flag is 1, deletes. If flag is 0, undeletes. */ -
messagelist.c
r901cee9 refeec7f 30 30 } 31 31 32 owl_message *owl_messagelist_get_by_id(const owl_messagelist *ml, int target_id)32 int owl_messagelist_get_index_by_id(const owl_messagelist *ml, int target_id) 33 33 { 34 /* return the message with id == 'id'. If it doesn't exist return NULL. */34 /* return the message index with id == 'id'. If it doesn't exist return -1. */ 35 35 int first, last, mid, msg_id; 36 36 owl_message *m; … … 43 43 msg_id = owl_message_get_id(m); 44 44 if (msg_id == target_id) { 45 return (m);45 return mid; 46 46 } else if (msg_id < target_id) { 47 47 first = mid + 1; … … 50 50 } 51 51 } 52 return(NULL); 52 return -1; 53 } 54 55 owl_message *owl_messagelist_get_by_id(const owl_messagelist *ml, int target_id) 56 { 57 /* return the message with id == 'id'. If it doesn't exist return NULL. */ 58 int n = owl_messagelist_get_index_by_id(ml, target_id); 59 if (n < 0) return NULL; 60 return ml->list->pdata[n]; 53 61 } 54 62 … … 71 79 owl_message_unmark_delete(ml->list->pdata[n]); 72 80 return(0); 81 } 82 83 void owl_messagelist_delete_and_expunge_element(owl_messagelist *ml, int n) 84 { 85 owl_message_delete(g_ptr_array_remove_index(ml->list, n)); 73 86 } 74 87
Note: See TracChangeset
for help on using the changeset viewer.