diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Makefile | 2 | ||||
-rw-r--r-- | doc/rt-liberation.texinfo | 927 |
2 files changed, 1 insertions, 928 deletions
diff --git a/doc/Makefile b/doc/Makefile index dd20ede..a9d6a96 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,7 +1,7 @@ # Don't delete if make is interrupted .PRECIOUS: %.info %.html -all: rt-liberation.info +all: rt-liber.info %.info: %.texinfo makeinfo --no-split $< diff --git a/doc/rt-liberation.texinfo b/doc/rt-liberation.texinfo deleted file mode 100644 index 9ffa110..0000000 --- a/doc/rt-liberation.texinfo +++ /dev/null @@ -1,927 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename rt-liberation.info -@settitle The rt-liberation Manual -@c %**end of header - -@c History: This manual was started on the 6th of April 2009. Yoni -@c Rabkin (yrk@gnu.org) is the primary author. - -@dircategory Emacs -@direntry -* rt-liberation: (rt-liberation). Emacs Interface to RT -@end direntry - - -@copying - @copyright{} 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2020 Free Software Foundation, Inc. - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no -Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A -copy of the license is included in the section entitled ``GNU Free -Documentation License''. -@end quotation -@end copying - - -@c For printed material -@titlepage -@title The rt-liberation Manual -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage -@contents -@c END For printed material - - -@ifnottex -@node Top, Introduction, (dir), (dir) -@top The rt-liberation Manual - -This is the Manual for the rt-liberation system - -@insertcopying - -@menu -* Introduction:: Introduction to rt-liberation. -* Installation:: Setup rt-liberation to work on the system. - -Using rt-liberation -* Queries:: Retrieve particular tickets from the server. -* Ticket Browser:: Browse the query results. -* Ticket Viewer:: Interface to query results. - -Extensions -* Gnus Integration:: Sending email to the RT server via Gnus. -* Tracking Updates:: Keeping up to date with ticket changes. -* Batch Operations:: Performing operations on batches of tickets. -* Local Storage:: Associate arbitrary data with tickets. - -Copying and license -* Copying:: The GNU General Public License gives you - permission to redistribute rt-liberation - on certain terms; it also explains that - there is no warranty. - -* The GNU FDL:: The license for this documentation. - -Indices -* Concept Index:: -* Function Index:: -* Variable Index:: -* Keybinding Index:: - -@detailmenu - --- The Detailed Node Listing --- - -Queries - -* Query Compiler:: Compiling Emacs Lisp to TicketSQL. -* Query Language:: A description of the Sexp-based language. - -Ticket Browser - -* Ticket Browser Display:: How tickets are displayed in the browser. -* Ticket Browser Sorting:: How tickets are sorted in the browser. -* Ticket Browser Filtering:: How to filter tickets out of the browser. -* Multiple Ticket Browsers:: More than one ticket browser buffer. - -@end detailmenu -@end menu - -@end ifnottex - - -@c -------------------------------------------------- -@node Introduction -@chapter Introduction -@cindex introduction - -rt-liberation is a GNU/Emacs package for working with the Request -Tracker (henceforth abbreviated as just ``RT'') software from Best -Practical Solutions. RT has an interactive Web interface, a command -line interface (the ``RT CLI''), and a REST interface. rt-liberation -uses the RT REST interface to communicate with the RT server. - -rt-liberation allows sending search queries to the RT server, browsing -the resulting tickets, viewing the tickets' contents and performing -operations on the tickets. - - -@c -------------------------------------------------- -@node Installation -@chapter Installation -@cindex installation - -rt-liberation is available via GNU ELPA. - -If you install rt-liberation manually instead you'll need to tell -Emacs where to find it, and tell Emacs to load the package: - -@lisp -(add-to-list 'load-path "/PATH/TO/rt-liberation/") -@end lisp - -@lisp -(require 'rt-liberation) -@end lisp - - -rt-liberation needs to be configured in your ~/.emacs, an ~/.rt-liber -file, or similar. - -Tell rt-liberation where to find the RT server's REST interface: - -@lisp -(setq rt-liber-rest-url "rt.example.org") -@end lisp - -rt-liberation can issue a command to ``take'' a ticket (that is, -assign it to yourself). For this the variable @var{rt-liber-username} -must be set: - -@lisp -(setq rt-liber-username "someuser") -@end lisp - -rt-liberation can also launch a Web browser to visit a ticket. For -that to work the base URL needs to be set in -@var{rt-liber-base-url}. For example: - -(setq rt-liber-base-url "https://rt.foo.org/") - - -@c -------------------------------------------------- -@node Queries -@chapter Queries -@cindex queries - -A typical RT server is meant to manage a large amount of tickets. Much -more that would be convenient to view all at once. Instead queries are -used to view only a subset of the tickets on the server. - -rt-liberation has its own Sexp-based query language which maps to RT's -TicketSQL language. - -@menu -* Query Compiler:: Compiling Emacs Lisp to TicketSQL. -* Query Language:: A description of the Sexp-based language. -@end menu - - -@c -------------------------------------------------- -@node Query Compiler -@section Query Compiler -@cindex query compiler - -In order to browse and view tickets a list of needs to be requested -from the RT server. Typically the tickets answer some kind of -criteria, for example ``tickets no older than a week owned by me which -have \``foobar\'' in their subject line''. In RT these criteria are -formulated with ``TicketSQL'' queries; a structured query language -specific to RT. - -rt-liberation provides a query compiler function to compile Emacs Lisp -symbolic expressions into TicketSQL. The query compiler supports a -number of TicketSQL tokens. - - -@c -------------------------------------------------- -@node Query Language -@section Query Language -@cindex query language - -rt-liberation's Sexp-based query language covers a portion of the -TicketSQL language. Here are some of the supported TicketSQL tokens: -Boolean tokens as a means of combining query subsections: ``and'', ``or'', -``not''. LIKE attribute tokens: ``subject'', ``content''. - -For example here is a query with both Boolean and LIKE tokens: - -@lisp -(rt-liber-compile-query - (and (queue "bugs") - (content "gnu"))) - -==> "Queue = 'bugs' AND Content LIKE 'gnu'" -@end lisp - -We can also express negation (note that the compiler produces "!=" and -"NOT LIKE" for negation depending on the context): - -@lisp -(rt-liber-compile-query - (and (queue "bugs") - (not (owner "Nobody")) - (not (content "sprigz")) - (status "new"))) - -==> "Queue = 'licensing' AND Owner != 'Nobody' \ - AND Content NOT LIKE 'sprigz' AND Status = 'new'" -@end lisp - -Attribute tokens which match an attribute to a specific field such as: -``owner'', ``status'' and ``queue''. Temporal tokens which limit the search -results to tickets within a certain time interval: ``created'' and -``lastupdated''. Note that temporal keywords such as ``created'' always -accept two arguments: BEFORE and AFTER. When either BEFORE or AFTER -aren't needed, use NIL instead. - -One of the advantages of being able to express the TicketSQL queries -as Emacs Lisp is to be able to express queries using Emacs Lisp -functions. - -Here is a slightly more involved example to illustrate: - -@lisp -(rt-liber-compile-query - (and (queue "bugs") - (owner "me@@myaddress.com") - (status "open") - (lastupdated nil - (format-time-string - "%Y-%m-%d" - (seconds-to-time - (- (time-to-seconds (current-time)) - (* 60 60 24 7))))))) - -==> "Queue = 'bugs' AND Owner = 'me@@myaddress.com' AND Status = 'open' AND LastUpdated > '2009-03-30'" -@end lisp - - -Here is an example of how the ticket browser and compiler can be used -in function calls: - -@lisp -(defun rt-liber-display-ticket (ticket-id) - "Display ticket with TICKET-ID in the ticket-browser." - (interactive "MTicket ID: ") - (rt-liber-browse-query - (rt-liber-compile-query - (and (queue "complaints") - (id ticket-id))))) -@end lisp - - -@c -------------------------------------------------- -@node Ticket Browser -@chapter Ticket Browser -@cindex ticket browser - -The ticket browser is a special buffer which provides a convenient -interface to the results of a server query. The ticket browser can be -started by invoking: (rt-liber-browse-query QUERY), where QUERY is a -TicketSQL query. The TicketSQL query can be entered manually as a -string or as the return value of the query compiler. - -@deffn Function rt-liber-browse-query QUERY &optional NEW -Runs QUERY against the server and launches the browser. - -If NEW is non-nil then the query results will be displayed in a new -buffer, otherwise the query results will override the contents of the -existing ticket browser buffer. If NEW is a string then that will be -the name of the new buffer. -@end deffn - -The TicketSQL query can be the return value of the query compiler. For -example: - -@lisp -(rt-liber-browse-query - (rt-liber-compile-query - (and (queue "bugs") - (content "gnu"))) -@end lisp - - -Since the return value of the query compiler is just a TicketSQL -string, the following is equivalent: - -@lisp -(rt-liber-browse-query "Queue = 'bugs' AND Content LIKE 'gnu'") -@end lisp - -The ticket browser defines a number of commands: - -@table @kbd -@item q -@kindex q (ticket browser) -@findex rt-liber-browser-mode-quit -Bury the ticket browser buffer. - -@item n -@kindex n (ticket browser) -@findex rt-liber-next-ticket-in-browser -Move point to the next ticket. - -@item p -@kindex p (ticket browser) -@findex rt-liber-previous-ticket-in-browser -Move point to the previous ticket. - -@item RET -@kindex RET (ticket browser) -@findex rt-liber-display-ticket-at-point -Visit the ticket at point in the @xref{Ticket Viewer}. - -@item g -@kindex g (ticket browser) -@findex revert-buffer -Refresh the contents of the browser buffer. - -@item G -@kindex G (ticket browser) -@findex rt-liber-browser-refresh-and-return -Refresh the contents of the browser buffer. Return point to the -current ticket after the refresh (if possible). - -@item s -@kindex s (ticket browser) -@findex rt-liber-browser-mark-as-spam -Mark the ticket as spam. - -@item S -@kindex S (ticket browser) -@findex rt-liber-multi-delete-spam -Delete marked tickets as spam (requires rt-liberation-multi package). - -@item a -@kindex a (ticket browser) -@findex rt-liber-browser-assign -Assign the ticket to a user. - -@item r -@kindex r (ticket browser) -@findex rt-liber-browser-resolve -Mark the ticket as ``resolved''. - -@item o -@kindex o (ticket browser) -@findex rt-liber-browser-open -Mark the ticket as ``open''. - -@item t -@kindex t (ticket browser) -@findex rt-liber-browser-take-ticket-at-point -Assign the ticket at point to @var{rt-liber-username}. - -@item SPC -@kindex SPC (ticket browser) -@findex scroll-up -Scroll the text of the ticket browser upward. - -@item DEL -@kindex DEL (ticket browser) -@findex scroll-down -Scroll the text of the ticket browser downward. - -@item m -@kindex m (ticket browser) -@findex rt-liber-browser-move -Move the ticket to a different queue. - -@item P -@kindex P (ticket browser) -@findex rt-liber-browser-prioritize -Set the numerical priority level of the ticket at point. - -@end table - -@menu -* Ticket Browser Display:: How tickets are displayed in the browser. -* Ticket Browser Sorting:: How tickets are sorted in the browser. -* Ticket Browser Filtering:: How to filter tickets out of the browser. -* Multiple Ticket Browsers:: More than one ticket browser buffer. -@end menu - - -@c -------------------------------------------------- -@node Ticket Browser Display -@section Ticket Browser Display -@cindex ticket browser display function - -The ticket browser displays the tickets in the browser by calling -@dfn{rt-liber-ticketlist-browser-redraw-f} which can be changed and -customized. Any implementation of -@dfn{rt-liber-ticketlist-browser-redraw-f} must leave point at the end -of the ticket text. - -The ticket data itself can be displayed using rt-liberation ticket -format string %-sequences: - -@table @asis -@item %i -ID number of the ticket in the RT database. -@item %s -Subject line. -@item %c -Ticket creation time. The format to display the time is specified in -the variable @var{rt-liber-browser-time-format-string}. -@item %S -Ticket status (``open'', ``new'' etc.) -@item %r -Whether the ticket is resolved. -@item %R -Requestor/s -@item %C -Creator of the ticket. -@item %o -Owner of the ticket. -@item %q -The queue originating the ticket. -@item %p -The numerical priority of the ticket -@end table - -Here is an example implementation of -@dfn{rt-liber-ticketlist-browser-redraw-f} showing the use of the -%-sequences. Note the use of text properties to add color to ticket -text. The use of text properties as opposed to font-locking is meant -to ease customization because otherwise any change in ticket display -would break the font-locking regular expressions. - -@lisp -(defun rt-liber-ticketlist-browser-redraw-f (ticket) - "Display TICKET." - (insert (rt-liber-format "[%c] %i" ticket)) - (add-text-properties (point-at-bol) - (point-at-eol) - '(face rt-liber-ticket-face)) - (newline) - (insert (rt-liber-format " [%S] %s" ticket)) - (newline) - (insert (rt-liber-format " %o <== %R" ticket))) -@end lisp - -The function @dfn{rt-liber-high-priority-p} can be used to apply a -different face or text to a ticket if it is high priority. A ticket is -considered high priority if its value is strictly higher than -@var{rt-liber-browser-priority-cutoff} - - -@c -------------------------------------------------- -@node Ticket Browser Sorting -@section Ticket Browser Sorting -@cindex ticket browser sorting - -The tickets in the browser are displayed by default in reverse -chronological order. Ticket sorting is done by a call to -@dfn{rt-liber-browser-default-sorting-function}. - -Other sorting orders can be used by binding -@dfn{rt-liber-browser-default-sorting-function} to a different -function. To ease writing such functions rt-liberation provides two -predicate functions to perform comparisons between ticket objects: - -@defun rt-liber-lex-lessthan-p a b field -Return true if A is lexicographically less than B in FIELD. - -Here is an example of sorting tickets lexicographically by owner name -using @dfn{rt-liber-lex-lessthan-p} (note that you can feed -@dfn{rt-liber-lex-lessthan-p} a date/time string and it will sort it -just fine except that it wouldn't make any sense): - -@lisp -(defun rt-liber-sort-by-owner (ticket-list) - "Sort TICKET-LIST lexicographically by owner." - (rt-liber-sort-ticket-list - ticket-list - #'(lambda (a b) - (rt-liber-lex-lessthan-p a b "Owner")))) -@end lisp - -@end defun - -@defun rt-liber-time-lessthan-p a b field -Return t if A is chronologically less than B in FIELD. - -Here is an example of sorting tickets lexicographically by owner name -using @dfn{rt-liber-time-lessthan-p} (note that feeding -@dfn{rt-liber-time-lessthan-p} anything but a date/time string, in -this case ``Created'' contains a date, will result in an error being -signaled). - -@lisp -(defun rt-liber-sort-by-time-created (ticket-list) - "Sort TICKET-LIST in reverse chronological order." - (reverse - (rt-liber-sort-ticket-list - ticket-list - #'(lambda (a b) - (rt-liber-time-lessthan-p a b "Created"))))) -@end lisp - -@end defun - - -@c ------------------------------------------------------------------- -@node Ticket Browser Filtering -@section Ticket Browser Filtering -@cindex ticket browser filtering filter - -The Ticket Browser can also filter out (that is, not display) certain -tickets based on particular criteria. This probably shouldn't be used -instead of a properly formed RT query, but when used in conjunction -with correctly formulated queries it becomes a powerful tool. - -During ticket display processing the Ticket Browser will call the -function pointed to by @var{rt-liber-browser-default-filter-function} -on each ticket, passing the function the ticket alist as a single -argument. The function is set by default to -@dfn{rt-liber-default-filter-f}, which is a function which will -display all tickets and filter none. - -If any tickets are filtered, the Ticket Browser will display the -filtered ticket count at the bottom ticket listing. - -Here is a simple example of how to filter out all of the tickets which -have a status of ``deleted''. - -First we define a custom filter function. Note how it accepts a single -argument, which is the ticket alist, and returns nil if the ticket is -to be filtered. - -@lisp -(defun rt-liber-browser-deleted-filter (ticket) - (not - (and ticket - (string= (cdr (assoc "Status" ticket)) - "deleted")))) -@end lisp - -Then we assign that function to be our default filtering function: - -@lisp -(setq rt-liber-browser-default-filter-function - 'rt-liber-browser-deleted-filter) -@end lisp - - -@c ------------------------------------------------------------------- -@node Multiple Ticket Browsers -@section Multiple Ticket Browsers -@cindex ticket browser multiple buffer - -It is sometimes useful to rename the ticket browser buffer to -something more informative than the default -@var{rt-liber-browser-buffer-name}, especially if there are multiple -ticket browsers. - -Changing a ticket browser's name can be done normally with -`rename-buffer', but it is also possible to name the ticket browser -when it is created. In the following example two ticket browser -buffers will be created displaying the query results and named -``*updated by supervisor*'' and ``*new tickets*'' respectively: - -@lisp -(defun rt-liber-daily-rounds () - (interactive) - - (rt-liber-browse-query - (rt-liber-compile-query - (and (queue "complaints") - (owner "lem.e.tweakit") - (status "open") - (lastupdatedby "molly.manager"))) - "*updated by supervisor*") - - (rt-liber-browse-query - (rt-liber-compile-query - (and (queue "complaints") - (owner "Nobody") - (status "new"))) - "*new tickets*")) -@end lisp - - -@c -------------------------------------------------- -@node Ticket Viewer -@chapter Ticket Viewer -@cindex ticket viewer - -The ticket viewer is an interface for viewing the contents of a -ticket. It provides font-locking to make reading the contents easier -via @var{rt-liber-viewer-font-lock-keywords} and a number of -key-bindings. - -The ticket viewer provides key-bindings to help compose emails to send -to the RT email interface. The key-bindings for composing email -described below are generic, what actually happens when you invoke -them depends on the email-backend system you have installed into -rt-liberation. @file{rt-liberation-gnus.el} provides integration with -Gnus, @xref{Gnus Integration}. - -Setting @var{rt-liber-jump-to-latest} to `t' will cause the viewer to -automatically scroll to the latest comment in a ticket when that -ticket is visited. By default @var{rt-liber-jump-to-latest} is set to -`nil'. - -When in the ticket viewer buffer, invoking -@dfn{rt-liber-viewer-take-ticket} will ``take'' the ticket. - -@table @kbd - -@item q -@kindex q (ticket viewer) -@findex rt-liber-viewer-mode-quit -Bury the ticket viewer buffer. - -@item n -@kindex n (ticket viewer) -@findex rt-liber-next-section-in-viewer -Move point to the next section in ticket. - -@item N -@kindex N (ticket viewer) -@findex rt-liber-jump-to-latest-correspondence -Move point to the newest correspondence section, if any. - -@item p -@kindex p (ticket viewer) -@findex rt-liber-previous-section-in-viewer -Move point to the previous section in ticket. - -@item V -@kindex V (ticket viewer) -@findex rt-liber-viewer-visit-in-browser -Visit the current ticket in a Web browser. - -@item m -@kindex m (ticket viewer) -@findex rt-liber-viewer-answer -Compose an answer to the current ticket. - -@item M -@kindex M (ticket viewer) -@findex rt-liber-viewer-answer-this -Compose an answer to the current ticket. The content section around -point will be inserted into the email body and commented out. - -@item t -@kindex t (ticket viewer) -@findex rt-liber-viewer-answer-provisionally -Compose a provisional answer to the current ticket. - -@item T -@kindex t (ticket viewer) -@findex rt-liber-viewer-answer-provisionally-this -Compose a provisional answer to the current ticket. The content -section around point will be inserted into the email body and -commented out. - -@item F -@kindex F (ticket viewer) -@findex rt-liber-viewer-answer-verbatim-this -Compose an answer to the current ticket. The content section around -point will be inserted into the email body verbatim. - -@item c -@kindex c (ticket viewer) -@findex rt-liber-viewer-comment -Compose a comment for the current ticket. - -@item C -@kindex C (ticket viewer) -@findex rt-liber-viewer-comment-this -Comment on the ticket using the current context - -@item g -@kindex g (ticket viewer) -@findex revert-buffer -Refresh and redisplay the current ticket. - -@item SPC -@kindex SPC (ticket viewer) -@findex scroll-up -Scroll text of ticket viewer upward. - -@item DEL -@kindex DEL (ticket viewer) -@findex scroll-down -Scroll text of ticket viewer downward. - -@item h -@kindex h (ticket viewer) -@findex rt-liber-viewer-show-ticket-browser -Display the associated ticket in the ticket browser. - -@end table - - -@c -------------------------------------------------- -@node Gnus Integration -@chapter Gnus Integration -@cindex Gnus Integration - -The file @file{rt-liberation-gnus.el} implements integration with Gnus -for composing emails. To enable the feature, `require' it after -loading rt-liberation: - -@lisp -(require 'rt-liberation-gnus) -@end lisp - -In order for rt-liberation-gnus to be useful a few variables need to -be specialized. The following is example code which sets these -variables. Below is a thorough description of those variables. - -@lisp -(setq rt-liber-gnus-comment-address "our-rtserver-comment@@ourserver.org" - rt-liber-gnus-address "our-rtserver@@ourserver.org" - rt-liber-gnus-subject-name "ourserver.org") -@end lisp - -@defopt rt-liber-gnus-address -@var{rt-liber-gnus-address} is the email address which is configured -in the RT server email interface for sending a response to the -ticket's requestor. -@end defopt -@defopt rt-liber-gnus-comment-address -@var{rt-liber-gnus-comment-address} is the email address which is -configured in the RT server email interface for adding a comment under -the ticket in question. -@end defopt -@defopt rt-liber-gnus-subject-name -@var{rt-liber-gnus-subject-name} is a string, typically included at -the beginning of the square brackets in the subject. The string is a -part of the subject line which helps the RT server recognize the -email. -@end defopt - -Gnus posting styles controlled by @var{gnus-posting-styles} can be -customized for rt-liberation-gnus by using the variable -@var{rt-liber-gnus-p}, which is only non-nil when rt-liberation-gnus -launches a Gnus message buffer. - -Here is example code which uses @var{rt-liber-gnus-p} to override the -signature in the default posting style with one special to -rt-liberation. Headers can be added and removed in a similar manner. - -@lisp -(setq gnus-posting-styles - '((".*" - (name "Lemm E. Hackitt") - (address "Lemm@@hack.it") - (signature-file "~/sig.txt") - ("X-Ethics" "Use GNU")) - (rt-liber-gnus-p - (signature-file "~/rt-liber-sig.txt")))) -@end lisp - - -Once rt-liberation-gnus is loaded and customized the key-bindings in -the Viewer will be able to call into it, @xref{Ticket Viewer}. - - -@c -------------------------------------------------- -@node Tracking Updates -@chapter Tracking Updates -@cindex Tracking Updates - -The functions in @file{rt-liberation-update.el} help keep up with -updates to the ticket database. To enable the feature, `require' it -after loading rt-liberation: - -@lisp -(require 'rt-liberation-update) -@end lisp - -Then set @var{rt-liber-update-default-queue} to be the name of the -queue to watch for updates. For example: - -@lisp -(setq rt-liber-update-default-queue "complaints") -@end lisp - -@defun rt-liber-update &optional no-update -@code{rt-liber-update} is an interactive function which runs a query -against the RT server asking for the tickets which have been updated -since the time @code{rt-liber-update} was last run (each time it runs, -it leaves a time-stamp). If no time-stamp is found, for instance when -you run @code{rt-liber-update} for the first time, today's date is -used. - -With the NO-UPDATE prefix, @code{rt-liber-update} will not update the -time-stamp so that the next invocation will produce the same result. -@end defun - - -@c -------------------------------------------------- -@node Batch Operations -@chapter Batch Operations -@cindex Batch Operations - -The extension @file{rt-liberation-multi.el} implements performing -batch operations on groups of tickets. It works in two stages: First -mark an arbitrary number of tickets within the same buffer then call a -batch operation function on them. The batch operation functions work -the same way as function which work on single tickets only that they -iterate through all of the marked tickets. - -To enable batch operations first load @file{rt-liberation-multi.el}: - -@lisp -(require 'rt-liberation-storage) -@end lisp - -@table @kbd -@item M -@kindex M (ticket browser) -@findex rt-liber-mark-ticket-at-point -Mark the ticket at point for future action. If the ticket at point is -already marked then unmark it. -@end table - -@defun rt-liber-multi-set-status-open -Set the status of all the marked tickets to ``open''. -@end defun - -@defun rt-liber-multi-set-status-resolved -Set the status of all the marked tickets to ``resolved. -@end defun - -@defun rt-liber-multi-assign name -Assign all of the marked tickets to NAME. -@end defun - -@defun rt-liber-multi-flag-as-spam-and-delete -Set the status of all the marked tickets to ``is-spam'' and delete. -@end defun - - -@c -------------------------------------------------- -@node Local Storage -@chapter Local Storage -@cindex Local Storage - -@file{rt-liberation-storage.el} implements associating arbitrary -ancillary data with tickets. The data is stored locally and is not -sent to the RT server. - -To enable local storage first load @file{rt-liberation-storage.el}: - -@lisp -(require 'rt-liberation-storage) -@end lisp - -Then enable the display of ancillary data with: - -@lisp -(setq rt-liber-anc-p t) -@end lisp - -The associated data is edited and displayed in the ticket browser with -the following command key: - -@table @kbd -@item A -@kindex A (ticket browser) -@findex rt-liber-browser-ancillary-text -Associate text with the ticket at point. You will be prompted to enter -a string of text. -@end table - -Once text is associated with a ticket it will be displayed alongside -that ticket in the ticket browser. This particular feature lends -itself to creating private annotations about tickets. - -The implementation distributed with rt-liberation allows associating -text with tickets but is not limited to text. The same implementation -can be extended to associate any arbitrary data with any ticket. - - -@c -------------------------------------------------- -@c including the relevant licenses -@include gpl.texi -@include fdl.texi - - -@c -------------------------------------------------- -@node Concept Index -@unnumbered Concept Index -@printindex cp - - -@c -------------------------------------------------- -@node Function Index -@unnumbered Function Index -@printindex fn - - -@c -------------------------------------------------- -@node Variable Index -@unnumbered Variable Index -@printindex vr - - -@c -------------------------------------------------- -@node Keybinding Index -@unnumbered Keybinding Index -@printindex ky - - -@bye |