;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\207" [require cl-lib outline font-lock easymenu calendar parse-time cal-iso overlay] 2) #@32 TaskPaper mode version number. (defconst taskpaper-mode-version "1.0" (#$ . 288)) #@28 Keymap for TaskPaper mode. (defvar taskpaper-mode-map (make-keymap) (#$ . 376)) #@34 Syntax table for TaskPaper mode. (defvar taskpaper-mode-syntax-table (make-syntax-table text-mode-syntax-table) (#$ . 462)) #@31 History list for date prompt. (defvar taskpaper-read-date-history nil (#$ . 592)) #@32 History list for query prompt. (defvar taskpaper-query-history nil (#$ . 680)) (byte-code "\300\301\302\303\304\305\306\307\306\310\306\311& \210\312\313\314\315\306\301\316\317&\210\312\320\302\321\306\301\316\322&\210\312\323\302\324\306\301\316\325&\210\312\326\302\327\306\301\316\330&\210\312\331\302\332\306\301\316\333&\210\312\334\335\336\306\301\316\337&\210\312\340\302\341\306\301\316\342&\210\312\343\302\344\306\301\316\342&\210\312\345\346\347\306\301\316\350&\210\312\351\346\352\306\301\316\350&\210\312\353\302\354\306\301\316\350&\210\312\355\302\356\306\301\316\350&\210\312\357\302\360\306\301\316\361&\210\312\362\302\363\306\301\316\342&\210\312\364\365\366\306\301\316\367&\210\312\370\302\371\306\301\316\350&\210\312\372\302\373\306\301\316\342&\210\312\374\302\375\306\301\316\350&\210\312\376\377\201@\306\301\316\201A&\210\312\201B\302\201C\306\301\316\350&\210\312\201D\302\201E\306\301\316\201F&\210\312\201G\302\201H\306\301\316\350&\210\312\201I\201J\201K\306\301\316\201L&\210\312\201M\346\201N\306\301\316\350&\210\312\201O\201P\201Q\306\301\316\201R&\210\312\201S\201P\201T\306\301\316\201R&\210\312\201U\346\201V\306\301\316\350&\210\312\201W\302\201X\306\301\316\350&\210\201Y\201W!\210\312\201Z\346\201[\306\301\316\350&\210\312\201\\\302\201]\306\301\316\342&\210\201^\201_!\204\264\201`\201_\201a\"\210\201^\201b!\204\311\201`\201b\201c\"\210\201^\201d!\204\336\201`\201d\201e\"\210\201^\201f!\204\363\201`\201f\201g\"\210\302\207" [custom-declare-group taskpaper nil "Major mode for editing and querying files in TaskPaper format." :prefix "taskpaper-" :group wp text applications custom-declare-variable taskpaper-faces-easy-properties :foreground "The property changes by easy faces.\nThe value can be :foreground or :background. A color string for\nspecific tags will then be interpreted as either foreground or\nbackground color. For more details see custom variable\n`taskpaper-tag-faces'." :type (choice (const :foreground) (const :background)) taskpaper-tag-faces "Faces for specific tags.\nThis is a list of cons cells, with tag names in the car and faces\nin the cdr. The tag name can basically contain uppercase and\nlowercase letters, digits, hyphens, underscores, and dots. The\nface can be a symbol corresponding to a name of an existing face,\na color (in which case it will be interpreted as either\nforeground or background color according to the variable\n`taskpaper-faces-easy-properties' and the rest is inherited from\nthe face `taskpaper-tag') or a property list of attributes,\nlike (:foreground \"blue\" :weight bold)." (repeat (cons (string :tag "Tag name") (choice :tag "Face" (string :tag "Color") (sexp :tag "Face")))) taskpaper-tag-alist "List of tags for fast selection.\nThe value of this variable is an alist, the car of each entry\nmust be a tag as a string, the cdr may be a character that is\nused to select that tag through the fast-selection interface." (repeat (cons (string :tag "Tag name") (character :tag "Access char"))) taskpaper-tags-exclude-from-inheritance "List of tags that should never be inherited." (repeat (string :tag "Tag name")) taskpaper-tags-to-remove-when-done "List of tags to remove when completing item." (repeat (string :tag "Tag name")) taskpaper-complete-save-date 'date "Non-nil means, include date when completing item.\nPossible values for this option are:\n\n nil No date\n date Include date\n time Include date and time" (choice (const :tag "No date" nil) (const :tag "Date" date) (const :tag "Date and time" time)) taskpaper-blocker-hook "Hook for functions that are allowed to block completion of item.\nFunctions in this hook should not modify the buffer. Each\nfunction gets as its single argument a buffer position at the\nbeginning of item. If any of the functions in this hook returns\nnil, the completion is blocked." hook taskpaper-after-completion-hook "Hook run when completing item." taskpaper-read-date-popup-calendar t "Non-nil means, pop up a calendar when prompting for a date." boolean taskpaper-read-date-display-live "Non-nil means, display the date prompt interpretation live." taskpaper-startup-folded "Non-nil means, switch to OVERVIEW when entering TaskPaper mode." taskpaper-startup-with-inline-images "Non-nil means, show inline images when entering TaskPaper mode." taskpaper-max-image-size "Maximum width and height for displayed inline images.\nThis variable may be nil or a cons cell (MAX-WIDTH . MAX-HEIGHT),\nwhere MAX-WIDTH and MAX-HEIGHT are maximum image width and height\nin pixels. When nil, use the actual size. Otherwise, use\nImageMagick to resize larger images. This requires Emacs to be\nbuilt with ImageMagick support." (choice (const :tag "Actual size" nil) (cons (choice (sexp :tag "Maximum width") (const :tag "No maximum width" nil)) (choice (sexp :tag "Maximum height") (const :tag "No maximum height" nil)))) taskpaper-after-sorting-items-hook "Hook run after sorting of items.\nWhen children are sorted, the cursor is in the parent line when\nthis hook gets called." taskpaper-archive-location "%s_archive.taskpaper::" "The location where subtrees should be archived.\n\nThe value of this variable is a string, consisting of two parts,\nseparated by a double-colon. The first part is a filename and the\nsecond part is a heading.\n\nWhen the filename is omitted, archiving happens in the same file.\nA %s formatter in the filename will be replaced by the current\nfile name (without the directory part and file extension).\n\nThe archived items will be filed as subtrees of the specified\nitem. When the heading is omitted, the subtrees are simply filed\naway at the end of the file, as top-level items. Also in the\nheading you can use %s to represent the file name, this can be\nuseful when using the same archive for a number of different\nfiles." string taskpaper-archive-save-context "Non-nil means, add context information when archiving." taskpaper-archive-hook "Hook run after successfully archiving a subtree.\nHook functions are called with point on the subtree in the\noriginal location. At this stage, the subtree has been added to\nthe archive location, but not yet deleted from the original\nlocation." taskpaper-reverse-note-order "Non-nil means, store new notes at the beginning of item." taskpaper-file-apps '((directory . emacs) (remote . emacs) (auto-mode . emacs)) "External applications for opening file links in a document.\nThe entries in this list are cons cells where the car identifies\nfiles and the cdr the corresponding command.\n\nPossible values for the file identifier are:\n \"string\" Matches files with this extension\n directory Matches directories\n remote Matches remote files\n auto-mode Matches files that are matched by any entry in `auto-mode-alist'\n system The system command to open files\n t Default for files not matched by any of the other options\n\nPossible values for the command are:\n \"string\" A command to be executed by a shell;\n a %s formatter will be replaced by the file name\n emacs The file will be visited by the current Emacs process\n default Use the default application for this file type\n system Use the system command for opening files\n mailcap Use command specified in the mailcaps\n function A Lisp function, which will be called with one argument:\n the file path\n\nSee also variable `taskpaper-open-non-existing-files'." (repeat (cons (choice :value #1="" (string :tag "Extension") (const :tag "System command to open files" system) (const :tag "Default for unrecognized files" t) (const :tag "Remote file" remote) (const :tag "Links to a directory" directory) (const :tag "Any files that have Emacs modes" auto-mode)) (choice :value #1# (const :tag "Visit with Emacs" emacs) (const :tag "Use default" default) (const :tag "Use the system command" system) (string :tag "Command") (sexp :tag "Lisp form")))) taskpaper-open-non-existing-files "Non-nil means, `taskpaper-open-file' will open non-existing files.\nWhen nil, an error will be generated. This variable applies only\nto external applications because they might choke on non-existing\nfiles. If the link is to a file that will be opened in Emacs, the\nvariable is ignored." taskpaper-custom-queries "List of custom queries for fast selection.\nThe value of this variable is a list, the first element is a\ncharacter that is used to select that tag through the\nfast-selection interface, the second element is a short\ndescription string, and the last must be a query string. If the\nfirst element is a string, it will be used as block separator." (repeat (choice (list (character :tag "Access char") (string :tag "Description") (string :tag "Query string")) (string :tag "Block separator"))) taskpaper-iquery-default "Non-nil means, querying commands will use `taskpaper-iquery'\ninstead of default `taskpaper-query'." taskpaper-iquery-delay 0.1 "The number of seconds to wait before evaluating incremental\nquery." number taskpaper-pretty-task-marks "Non-nil means, enable the composition display of task marks.\nThis does not change the underlying buffer content, but it\noverlays the UTF-8 character for display purposes only." taskpaper-bullet 8212 "Display character for task mark." character taskpaper-bullet-done "Display character for done task mark." taskpaper-fontify-done-items "Non-nil means, fontify completed items." taskpaper-hide-markup "Non-nil means, hide inline markup characters." make-variable-buffer-local taskpaper-use-inline-emphasis "Non-nil means, interpret emphasis delimiters for display.\nThis will interpret \"*\" and \"_\" characters as inline emphasis\ndelimiters for strong and emphasis markup similar to Markdown." taskpaper-mode-hook "Hook run when entering `taskpaper-mode'." fboundp string-prefix-p defalias #[(prefix string &optional ignore-case) "G\211\nGV?\205\304\305 \n\305 &\306=)\207" [prefix prefix-length string ignore-case compare-strings 0 t] 9 "Return non-nil if PREFIX is a prefix of STRING.\nIf IGNORE-CASE is non-nil, the comparison is done without paying\nattention to case differences."] string-suffix-p #[(suffix string &optional ignore-case) "G GZ\211\304Y\205\305 \306\211\n\306 &\307=)\207" [string suffix start-pos ignore-case 0 compare-strings nil t] 9 "Return non-nil if SUFFIX is a suffix of STRING.\nIf IGNORE-CASE is non-nil, the comparison is done without paying\nattention to case differences."] string-remove-prefix #[(prefix string) "\302 \"\203 G\303O\207 \207" [prefix string string-prefix-p nil] 3 "Remove PREFIX from STRING if present."] string-remove-suffix #[(suffix string) "\302 \"\203 \303 GGZO\207 \207" [suffix string string-suffix-p 0] 4 "Remove SUFFIX from STRING if present."]] 12) #@30 Show TaskPaper mode version. (defalias 'taskpaper-mode-version #[nil "\301\302\"\207" [taskpaper-mode-version message "TaskPaper mode version %s"] 3 (#$ . 11516) nil]) #@31 Browse TaskPaper mode manual. (defalias 'taskpaper-mode-manual #[nil "\300\301!\207" [browse-url "https://github.com/saf-dmitry/taskpaper-mode/blob/master/README.md"] 2 (#$ . 11691) nil]) #@100 Make OVERLAY display TEXT with face FACE. When EVAP is non-nil, set the 'evaporate' property to t. (defalias 'taskpaper-overlay-display #[(overlay text &optional face evap) "\304\305 #\210\n\203\304\302\n#\210 \205\304\306\307#\207" [overlay text face evap overlay-put display evaporate t] 4 (#$ . 11886)]) #@94 Return a new marker at POS. If POS is omitted or nil, the value of point is used by default. (defalias 'taskpaper-new-marker #[(&optional pos) "\301\206`\302\"\207" [pos copy-marker t] 4 (#$ . 12206)]) #@50 Get text property PROP at the beginning of line. (defalias 'taskpaper-get-at-bol #[(prop) "\301\302 \"\207" [prop get-text-property point-at-bol] 3 (#$ . 12417)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-get-at-bol speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@100 Release all buffers in list BLIST. When a buffer is modified, it is saved after user confirmation. (defalias 'taskpaper-release-buffers #[(blist) "\304 \304\211\2058 @\305\n!\306\n!\203,\203,\307\310\311\"!\203,r\nq\210\312 \210)\313\n!\210 A\211\204\n\304+\207" [file blist buf --dolist-tail-- nil buffer-file-name buffer-modified-p y-or-n-p format "Save file %s? " save-buffer kill-buffer] 5 (#$ . 12734)]) #@102 Return the base buffer visiting FILE. Like `find-buffer-visiting' but always return the base buffer. (defalias 'taskpaper-find-base-buffer-visiting #[(file) "\302!\206 \303!\211\205\304 !\206 )\207" [file buf get-file-buffer find-buffer-visiting buffer-base-buffer] 3 (#$ . 13163)]) #@168 Return non-nil if POS is in a match for REGEXP. Set the match data. If POS is omitted or nil, the value of point is used by default. Only the current line is checked. (defalias 'taskpaper-in-regexp #[(regexp &optional pos) "\3032:\206 `\304\305!\212b\210\306\305!\210\307\n \310#\2058\311\224Y\203\311\225X\203\312\303\311\224\311\225B\"\210\202+0\207" [pos eol regexp exit line-end-position 1 beginning-of-line re-search-forward t 0 throw] 4 (#$ . 13461)]) #@59 Make VAR local in the current buffer and set it to VALUE. (defalias 'taskpaper-set-local #[(var value) "\302! L\207" [var value make-local-variable] 2 (#$ . 13940)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-set-local speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@56 Non-destructively remove duplicate elements from LIST. (defalias 'taskpaper-uniquify #[(list) "\302!\303 !)\207" [list res copy-sequence delete-dups] 2 (#$ . 14258)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-uniquify speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@53 Non-destructively sort elements of LIST as strings. (defalias 'taskpaper-sort #[(list) "\302!\303 \304\")\207" [list res copy-sequence sort string-lessp] 3 (#$ . 14577)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-sort speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@36 Display a message without logging. (defalias 'taskpaper-unlogged-message #[(&rest args) "\302\303\304 \")\207" [message-log-max args nil apply message] 3 (#$ . 14896)]) #@39 Escape double quotation marks in STR. (defalias 'taskpaper-escape-double-quotes #[(str) ";\203 \301\302\303#\207" [str replace-regexp-in-string "\"" "\\\\\""] 4 (#$ . 15072)]) #@41 Unescape double quotation marks in STR. (defalias 'taskpaper-unescape-double-quotes #[(str) ";\203 \301\302\303#\207" [str replace-regexp-in-string "\\\\\"" "\""] 4 (#$ . 15259)]) #@36 Escape special characters in PATH. (defalias 'taskpaper-file-path-escape #[(path) ";\203 \301\302\303#\207" [path replace-regexp-in-string " " "\\\\ "] 4 (#$ . 15450)]) #@38 Unescape special characters in PATH. (defalias 'taskpaper-file-path-unescape #[(path) ";\203 \301\302\303#\207" [path replace-regexp-in-string "\\\\ " " "] 4 (#$ . 15630)]) #@60 Test whether FILE specifies a location on a remote system. (defalias 'taskpaper-file-remote-p #[(file) "\302\303!\203\n\303!\207\302\304!\203\304!\207\305\301!\205#\306 @\"\205#\307\207" [file ange-ftp-name-format fboundp file-remote-p tramp-handle-file-remote-p boundp string-match t] 3 (#$ . 15814)]) #@149 Test if local FILE exists. Return non-nil if local FILE does not exist, otherwise return nil. For performance reasons remote files are not checked. (defalias 'taskpaper-file-missing-p #[(file) "\301!?\205\302!?\205\303\207" [file taskpaper-file-remote-p file-exists-p t] 2 (#$ . 16132)]) #@42 Return non-nil if FILE is an image file. (defalias 'taskpaper-file-image-p #[(file) "\302 \303\304\305#)\207" [file inhibit-changing-match-data image-file-name-regexp nil t string-match] 7 (#$ . 16432)]) #@39 Add nonsticky text properties at POS. (defalias 'taskpaper-rear-nonsticky-at #[(pos) "\301S\302\303D#\207" [pos add-text-properties rear-nonsticky (face mouse-face keymap help-echo display invisible intangible)] 5 (#$ . 16647)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-rear-nonsticky-at speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@39 Properties to apply to inline markup. (defconst taskpaper-markup-properties '(face taskpaper-markup taskpaper-syntax markup invisible taskpaper-markup) (#$ . 17037)) #@172 Check property PROP from BEGIN to END. Return non-nil if at least one character between BEGIN and END has a property PROP whose value is one of the given values PROP-VAL. (defalias 'taskpaper-range-property-any #[(begin end prop prop-val) "\301\302\"\207" [prop-val cl-some #[(val) "\304 \n $\207" [begin end prop val text-property-any] 5]] 3 (#$ . 17210)]) #@53 Remove markup characters from propertized string S. (defalias 'taskpaper-remove-markup-chars #[(s) "\302\303\304 G\305\306 %\211\203% \304O \307\305 #\206 G\302OP\202) \207" [b s nil text-property-any 0 invisible taskpaper-markup next-single-property-change] 6 (#$ . 17576)]) #@59 Remove Flyspell overlays in region between BEGIN and END. (defalias 'taskpaper-remove-flyspell-overlays-in #[(begin end) "\303\300!\205\205\304\305!\205\305 \n\"\207" [flyspell-mode begin end boundp fboundp flyspell-delete-region-overlays] 3 (#$ . 17868)]) #@118 In keymap MAP, remap the functions given in COMMANDS. COMMANDS is a list of alternating OLDDEF NEWDEF command names. (defalias 'taskpaper-remap #[(map &rest commands) "\305\211\n\2050\n\211A\242\n\211A\242\306\307!\203&\310 \311\312 \"#\210\202\313  \f$\210\202*\207" [newdef olddef commands map global-map nil fboundp command-remapping define-key vector remap substitute-key-definition] 5 (#$ . 18139)]) #@71 Add tag prefix to NAME. NAME should be a string or a list of strings. (defalias 'taskpaper-add-tag-prefix #[(name) ";\203\301\302\"\203\207\302P\207<\203#\303\304\"\203#\305\306\"\207\307\310!\207" [name string-prefix-p "@" cl-every stringp mapcar #[(x) "\301\302\"\203 \207\302P\207" [x string-prefix-p "@"] 3] error "Argument should be a string or a list of strings."] 3 (#$ . 18564)]) #@76 Remove tag prefix from NAME. NAME should be a string or a list of strings. (defalias 'taskpaper-remove-tag-prefix #[(name) ";\203\301\302\"\203\211G\303O\207\207<\203&\304\305\"\203&\306\307\"\207\310\311!\207" [name "@" string-prefix-p nil cl-every stringp mapcar #[(x) "\301\302\"\203\211G\303O\207\207" [x "@" string-prefix-p nil] 5] error "Argument should be a string or a list of strings."] 5 (#$ . 18975)]) #@44 Regular expression for tag name character. (defconst taskpaper-tag-name-char-regexp "[-a-zA-Z0-9._·̀-ͯ‿-⁀À-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�]" (#$ . 19414)) #@34 Regular expression for tag name. (defconst taskpaper-tag-name-regexp (format "%s+" taskpaper-tag-name-char-regexp) (#$ . 19617)) #@35 Regular expression for tag value. (defconst taskpaper-tag-value-regexp "\\(?:\\\\(\\|\\\\)\\|[^()\n]\\)*" (#$ . 19752)) #@193 Regular expression for tag. Group 1 matches the whole tag expression. Group 2 matches the tag name without tag indicator. Group 3 matches the optional tag value without enclosing parentheses. (defconst taskpaper-tag-regexp (format "\\(?:^\\|[ ]+\\)\\(@\\(%s\\)\\(?:(\\(%s\\))\\)?\\)" taskpaper-tag-name-regexp taskpaper-tag-value-regexp) (#$ . 19879)) #@42 Regular expression for consecutive tags. (defconst taskpaper-consecutive-tags-regexp (format "\\(?:%s\\)+" taskpaper-tag-regexp) (#$ . 20238)) #@61 URI schemes for URI, which should be opened in WWW browser. (defconst taskpaper-uri-schemes-browser '("aaa://" "about:" "acap://" "apt:" "bzr://" "bzr+ssh://" "attachment:/" "chrome://" "cid:" "content://" "crid://" "cvs://" "data:" "dav:" "dict://" "doi:" "dns:" "dtn:" "feed:" "finger://" "fish://" "ftp://" "geo:" "git://" "go:" "gopher://" "h323:" "http://" "https://" "im:" "imap://" "info:" "ipp:" "irc://" "irc6://" "ircs://" "iris.beep:" "jar:" "ldap://" "ldaps://" "magnet:" "mid:" "mtqp://" "mupdate://" "news:" "nfs://" "nntp://" "opaquelocktoken:" "pop://" "pres:" "resource://" "rmi://" "rsync://" "rtsp://" "rtspu://" "service:" "sftp://" "sip:" "sips:" "smb://" "sms:" "snmp://" "soap.beep://" "soap.beeps://" "ssh://" "svn://" "svn+ssh://" "tag:" "tel:" "telnet://" "tftp://" "tip://" "tn3270://" "udp://" "urn:" "uuid:" "vemmi://" "webcal://" "xri://" "xmlrpc.beep://" "xmlrpc.beeps://" "z39.50r://" "z39.50s://" "xmpp:") (#$ . 20387)) #@37 Regular expression for browser URI. (defconst taskpaper-uri-browser-regexp (byte-code "\301\302!\303Q\207" [taskpaper-uri-schemes-browser "\\<\\(\\(?:" regexp-opt "\\|www[[:digit:]]\\{0,3\\}[.]\\|\\(?:[-[:alnum:]_]+[.]\\)+[[:alpha:]]\\{2,4\\}/\\)\\(?:[^ \n()<>]+\\|(\\(?:[^ \n()<>]+\\|([^ \n()<>]+)\\)*)\\)+\\(?:(\\(?:[^ \n()<>]+\\|([^ \n()<>]+)\\)*)\\|[^ \n[:punct:]]\\|[/]\\)\\)"] 3) (#$ . 21346)) #@39 Regular expression for email address. (defconst taskpaper-email-regexp "\\(\\(?:\\\314\202V\310\311\312#)\266\203\203U\315\202V\316,\207" [fmt taskpaper-email-regexp email-re taskpaper-uri-browser-regexp uri-re taskpaper-file-path-regexp "\\`%s\\'" format nil t string-match email uri-browser file unknown file-re link inhibit-changing-match-data] 7 (#$ . 28253)]) #@30 Get the right face for LINK. (defalias 'taskpaper-get-link-face #[(link) "\301!\302=\203&\303\304\305\306\"\203\211G\307O\266\202\202\262!!\203&\310\207\311\207" [link taskpaper-get-link-type file taskpaper-file-missing-p taskpaper-file-path-unescape "file:" string-prefix-p nil taskpaper-missing-link taskpaper-link] 7 (#$ . 28850)]) #@25 Mouse events for links. (defvar taskpaper-mouse-map-link (byte-code "\301 \302\303\304#\210)\207" [map make-sparse-keymap define-key [mouse-1] taskpaper-open-link-at-point] 4) (#$ . 29203)) #@51 Fontify Markdown-style links from point to LIMIT. (defalias 'taskpaper-font-lock-markdown-links #[(limit) "\306 \307#\205I\310\311\224\311\225\"\210\312\313!\314\315\224\315\225\316\317\320\321\n!\322\323\324 \325\326\nP\257\n#\210)\314\327\224\327\225\f#\210\314\330\224\331\225\f#\210\311\225\314 S \332\333D#)\210\307\207" [taskpaper-markdown-link-regexp limit link taskpaper-mouse-map-link taskpaper-markup-properties pos re-search-forward t taskpaper-remove-flyspell-overlays-in 1 match-string-no-properties 6 add-text-properties 3 taskpaper-syntax markdown-link face taskpaper-get-link-face mouse-face highlight keymap help-echo "Link: " 2 4 7 rear-nonsticky (face mouse-face keymap help-echo display invisible intangible)] 14 (#$ . 29402)]) #@48 Fontify plain email links from point to LIMIT. (defalias 'taskpaper-font-lock-email-links #[(limit) "\305 \306#\205U\307\310\224\310\225\311\312$\203$\310\224T ^b\210` W\205U\313 !\207\314\310\224\310\225\"\210\315\310!\316\310\224\310\225\311\317\320\321\n!\322\323\324 \325\326\nP\257\n#\210)\310\225\316\fS\f\327\330D#)\210\306\207" [taskpaper-email-regexp limit link taskpaper-mouse-map-link pos re-search-forward t taskpaper-range-property-any 1 taskpaper-syntax (markup) taskpaper-font-lock-email-links taskpaper-remove-flyspell-overlays-in match-string-no-properties add-text-properties plain-link face taskpaper-get-link-face mouse-face highlight keymap help-echo "Link: " rear-nonsticky (face mouse-face keymap help-echo display invisible intangible)] 14 (#$ . 30160)]) #@46 Fontify plain URI links from point to LIMIT. (defalias 'taskpaper-font-lock-uri-links #[(limit) "\305 \306#\205U\307\310\224\310\225\311\312$\203$\310\224T ^b\210` W\205U\313 !\207\314\310\224\310\225\"\210\315\310!\316\310\224\310\225\311\317\320\321\n!\322\323\324 \325\326\nP\257\n#\210)\310\225\316\fS\f\327\330D#)\210\306\207" [taskpaper-uri-browser-regexp limit link taskpaper-mouse-map-link pos re-search-forward t taskpaper-range-property-any 1 taskpaper-syntax (markup) taskpaper-font-lock-uri-links taskpaper-remove-flyspell-overlays-in match-string-no-properties add-text-properties plain-link face taskpaper-get-link-face mouse-face highlight keymap help-echo "Link: " rear-nonsticky (face mouse-face keymap help-echo display invisible intangible)] 14 (#$ . 30951)]) #@47 Fontify plain file links from point to LIMIT. (defalias 'taskpaper-font-lock-file-links #[(limit) "\305 \306#\205U\307\310\224\310\225\311\312$\203$\310\224T ^b\210` W\205U\313 !\207\314\310\224\310\225\"\210\315\310!\316\310\224\310\225\311\317\320\321\n!\322\323\324 \325\326\nP\257\n#\210)\310\225\316\fS\f\327\330D#)\210\306\207" [taskpaper-file-link-regexp limit link taskpaper-mouse-map-link pos re-search-forward t taskpaper-range-property-any 1 taskpaper-syntax (markup) taskpaper-font-lock-file-links taskpaper-remove-flyspell-overlays-in match-string-no-properties add-text-properties plain-link face taskpaper-get-link-face mouse-face highlight keymap help-echo "Link: " rear-nonsticky (face mouse-face keymap help-echo display invisible intangible)] 14 (#$ . 31742)]) #@46 Fontify completed tasks from point to LIMIT. (defalias 'taskpaper-font-lock-done-tasks #[(limit) "\303 \304#\205(\212\305 \306\216\307\310!+\203'\311\312\224\312\225\313\314$\210\311\315\224\315\225\313\316$\210\304\207" [taskpaper-task-regexp limit save-match-data-internal re-search-forward t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-item-has-attribute "done" font-lock-prepend-text-property 2 face taskpaper-task-done-mark 3 taskpaper-done-item] 5 (#$ . 32534)]) #@49 Fontify completed projects from point to LIMIT. (defalias 'taskpaper-font-lock-done-projects #[(limit) "\303 \304#\205\212\305 \306\216\307\310!+\203\311\312\224\312\225\313\314$\210\304\207" [taskpaper-project-regexp limit save-match-data-internal re-search-forward t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-item-has-attribute "done" font-lock-prepend-text-property 1 face taskpaper-done-item] 5 (#$ . 33069)]) #@53 Fontify strong inline emphasis from point to LIMIT. (defalias 'taskpaper-font-lock-strong #[(limit) "\303 \304#\205U\305\306\224\306\225\307\310$\204\305\311\224\311\225\307\312$\203/\313\224T ^b\210` W\205U\314 !\207\315\313\224\313\225\307\316$\210\317\320\224\320\225\321\322$\210\323\306\224\306\225\n#\210\323\311\224\311\225\n#\210\324u\210\304\207" [taskpaper-strong-regexp limit taskpaper-markup-properties re-search-forward t taskpaper-range-property-any 2 taskpaper-syntax (markup plain-link tag) 4 (markup plain-link tag) 1 taskpaper-font-lock-strong put-text-property strong font-lock-prepend-text-property 3 face taskpaper-strong add-text-properties -1] 5 (#$ . 33553)]) #@46 Fontify inline emphasis from point to LIMIT. (defalias 'taskpaper-font-lock-emphasis #[(limit) "\303 \304#\205U\305\306\224\306\225\307\310$\204\305\311\224\311\225\307\312$\203/\313\224T ^b\210` W\205U\314 !\207\315\313\224\313\225\307\316$\210\317\320\224\320\225\321\322$\210\323\306\224\306\225\n#\210\323\311\224\311\225\n#\210\324u\210\304\207" [taskpaper-emphasis-regexp limit taskpaper-markup-properties re-search-forward t taskpaper-range-property-any 2 taskpaper-syntax (markup plain-link tag) 4 (markup plain-link tag) 1 taskpaper-font-lock-emphasis put-text-property emphasis font-lock-prepend-text-property 3 face taskpaper-emphasis add-text-properties -1] 5 (#$ . 34249)]) #@30 Mouse events for task marks. (defvar taskpaper-mouse-map-mark (byte-code "\301 \302\303\304#\210)\207" [map make-sparse-keymap define-key [mouse-1] taskpaper-item-toggle-done] 4) (#$ . 34948)) #@42 Activate task marks from point to LIMIT. (defalias 'taskpaper-activate-task-marks #[(limit) "\306 \307#\205f\212\310 \311\216\312\313!+\203/\314 !\203F\315 !\203F\316\317\224\317\225\320\321 !$\210\202F\314\f!\203F\315\f!\203F\316\317\224\317\225\320\321\f!$\210\322\317\224\317\225\323\324\325 \326\327\257#\210\317\225\322S\330\331D#)\210\307\207" [taskpaper-task-regexp limit save-match-data-internal taskpaper-bullet-done taskpaper-bullet taskpaper-mouse-map-mark re-search-forward t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-item-has-attribute "done" characterp char-displayable-p put-text-property 2 display char-to-string add-text-properties mouse-face highlight keymap help-echo "Toggle Done" rear-nonsticky (face mouse-face keymap help-echo display invisible intangible) pos] 9 (#$ . 35150)]) (defvar taskpaper-font-lock-keywords nil) #@128 Set Font Lock defaults for the current buffer. The order in which other fontification functions are called here, is essential. (defalias 'taskpaper-set-font-lock-defaults #[nil "\306B \307B\n\310B\311\312\313\314\315 \205\316 \205\317\f\205\320\f\205\"\321 \205'\322\257 \323\324\"\325\326\327!L*\210\330\331!\210)\324\207" [taskpaper-task-regexp taskpaper-project-regexp taskpaper-note-regexp taskpaper-fontify-done-items taskpaper-use-inline-emphasis taskpaper-pretty-task-marks ((2 'taskpaper-task-undone-mark) (3 'taskpaper-task)) ((2 'taskpaper-project-name) (3 'taskpaper-project-mark)) ((1 'taskpaper-note)) (taskpaper-font-lock-markdown-links) (taskpaper-font-lock-email-links) (taskpaper-font-lock-uri-links) (taskpaper-font-lock-file-links) (taskpaper-font-lock-tags) (taskpaper-font-lock-done-tasks) (taskpaper-font-lock-done-projects) (taskpaper-font-lock-strong) (taskpaper-font-lock-emphasis) (taskpaper-activate-task-marks) delq nil font-lock-defaults (taskpaper-font-lock-keywords t nil nil backward-paragraph) make-local-variable kill-local-variable font-lock-keywords taskpaper-font-lock-keywords value var] 13 (#$ . 36075)]) #@55 Remove fontification in region between BEGIN and END. (defalias 'taskpaper-unfontify-region #[(begin end) "\306 \"\210\307\211\307\211\310\211 \f\310 \311 \312#.\207" [begin end buffer-undo-list inhibit-read-only inhibit-point-motion-hooks inhibit-modification-hooks font-lock-default-unfontify-region t nil remove-text-properties (display t mouse-face t keymap t help-echo t invisible t taskpaper-syntax t) deactivate-mark buffer-file-name buffer-file-truename] 5 (#$ . 37248)]) #@48 Toggle the display or hiding of inline markup. (defalias 'taskpaper-toggle-markup-hiding #[nil "?\205\302\211\203\303\304!\210\305\306!\203*\307\310!\210\202*\311\304!\210\305\306!\203*\307\312!\210 \2050\313 \207" [taskpaper-hide-markup font-lock-mode t add-to-invisibility-spec taskpaper-markup called-interactively-p interactive message "Markup hiding enabled" remove-from-invisibility-spec "Markup hiding disabled" font-lock-fontify-buffer] 3 (#$ . 37744) nil]) #@60 Save all TaskPaper mode buffers without user confirmation. (defalias 'taskpaper-save-all-taskpaper-buffers #[nil "\300\301\302\"\207" [save-some-buffers t #[nil "\300\301!\207" [derived-mode-p taskpaper-mode] 2]] 3 (#$ . 38226) nil]) #@58 Default file applications on a UNIX or GNU/Linux system. (defconst taskpaper-file-apps-defaults-gnu '((remote . emacs) (system . mailcap) (t . mailcap)) (#$ . 38466)) #@46 Default file applications on a macOS system. (defconst taskpaper-file-apps-defaults-macos '((remote . emacs) (system . "open %s") (t . "open %s")) (#$ . 38639)) #@51 Default file applications on a Windows NT system. (defconst taskpaper-file-apps-defaults-windowsnt (byte-code "\300\301\302B\303\304BE\207" [(remote . emacs) system #[(file _path) "\301\302\"\207" [file w32-shell-execute "open"] 3] t #[(file _path) "\301\302\"\207" [file w32-shell-execute "open"] 3]] 4) (#$ . 38806)) #@60 Return the default applications for this operating system. (defalias 'taskpaper-default-apps #[nil "\304\267\202\n \207\n\207 \207" [system-type taskpaper-file-apps-defaults-macos taskpaper-file-apps-defaults-windowsnt taskpaper-file-apps-defaults-gnu #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (darwin 6 windows-nt 8))] 2 (#$ . 39133)]) #@219 Convert file extensions to regular expressions in the cars of LIST. When ADD-AUTO-MODE is non-nil, make all matches in `auto-mode-alist' point to the symbol 'emacs, indicating that the file should be visited in Emacs. (defalias 'taskpaper-apps-regexp-alist #[(list &optional add-auto-mode) "\303\304\305\306\307\"\" \205\306\310\n\"\"\207" [list add-auto-mode auto-mode-alist append delq nil mapcar #[(x) "@;\204\301\207\302\303@\"\203\207\304@\305QAB\207" [x nil string-match "\\W" "\\." "\\'"] 3] #[(x) "@\301B\207" [x emacs] 2]] 6 (#$ . 39522)]) #@82 Open the file at PATH. With optional argument IN-EMACS, visit the file in Emacs. (defalias 'taskpaper-open-file #[(path &optional in-emacs) "\306\232\203\n \202\307\310!!\311 \312 \"\313\f\236\205\314\n!\315\n!4\316\f\2365\n\2276\317\3206\"\205;\321\3226\"7\32389\203K\3248\202~ \203V\313\f\236A\206|4\203b\325\f\236A\206|\3266\327\f5\"\317#\206|\3307\f\"A\206|\331\f\236A88\332\267\202\276\333\f\236A8\202\276\331\f\236A8\202\276\334\335!\210\336 \210\3377\206\245\306!:\340:!\211;;\203\272;8\202\275\3248*8\324=\204\325\341\n!\204\325<\204\325\342\343\n\"\2108;\2037\3448\323\331=\317#)\266\203\2047\317\3458\"\203\346\347\331\2118$8\202\355\317\3478\"\203 \346\350 >\351\216\352\353\n!!*\331\2118$8\202\354 ?\355\216\3568\3238#\210*\357\3608\"\202f8;\204D8\324=\203J\361\n!\202f\3628!\203c\353\n!\350 >\363\2168\n!+\202f\361\n!.\207" [path buffer-file-name file taskpaper-file-apps apps remp "" substitute-in-file-name expand-file-name append taskpaper-default-apps remote taskpaper-file-remote-p file-directory-p auto-mode string-match ".*?\\.\\([a-zA-Z0-9]+\\(\\.gz\\)?\\)$" match-string 1 nil emacs directory assoc-default taskpaper-apps-regexp-alist assoc t #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (system 133 default 142 mailcap 151)) system require mailcap mailcap-parse-mailcaps mailcap-extension-to-mime mailcap-mime-info file-exists-p user-error "No such file: %s" "^\\s-*$" "\"%s\"\\|'%s'" replace-match "%s" match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] shell-quote-argument convert-standard-filename current-window-configuration #[nil "\301!\207" [#1=#:wconfig set-window-configuration] 2] start-process-shell-command message "Running %s" find-file-other-window functionp #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] dirp amap dfile ext cmd in-emacs mime-type command taskpaper-open-non-existing-files inhibit-changing-match-data save-match-data-internal #1#] 8 (#$ . 40090)]) #@130 Read file path using completion. Return absolute or relative path to the file as string. If ARG is non-nil, force absolute path. (defalias 'taskpaper-file-path-complete #[(&optional arg) "\304\305!\306\307\310!!\306\311\307\310!!!\211\312\232\203\313\314!\210 \203(\311\307\n!!\202S\315\316\317!\320Q\n\"\203;\321\322\n\"\202S\315\316\317 !\320Q\307\n!\"\203R\321\322\307\n!\"\202S\n+\207" [pwd1 pwd file arg read-file-name "File: " file-name-as-directory expand-file-name "." abbreviate-file-name "" user-error "File name cannot be empty" string-match "\\`" regexp-quote "\\(.+\\)" match-string 1] 7 (#$ . 42205)]) #@445 Insert a file link at point using completion. The path to the file is inserted relative to the directory of the current TaskPaper file, if the linked file is in the current directory or in a subdirectory of it, or if the path is written relative to the current directory using "../". Otherwise an absolute path is used, if possible with "~/" for your home directory. An absolute path can be forced with a \[universal-argument] prefix argument. (defalias 'taskpaper-insert-file-link-at-point #[(&optional arg) "\302!\303 !\304 Pc*\207" [arg path taskpaper-file-path-complete taskpaper-file-path-escape "file:"] 2 (#$ . 42840) "P"]) #@17 Open link LINK. (defalias 'taskpaper-open-link #[(link) "\302!\211\303\267\202W\304\305\"\203\211G\306O\266\202\202\262\307!\202Z\305\310\"\2031\311P\312!\202Z\313\305\"\203J\211G\306O\266\202\202L\262\314!\315!\202Z\316!)\207" [link type taskpaper-get-link-type #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (email 10 uri-browser 38 file 55)) "mailto:" string-prefix-p nil compose-mail-other-window "www" "http://" browse-url "file:" taskpaper-file-path-unescape taskpaper-open-file find-file-other-window] 6 (#$ . 43480)]) #@21 Open link at point. (defalias 'taskpaper-open-link-at-point #[nil "\305\306 !\203\307\310!\202:\306\n!\203\307\311!\202:\306 !\203)\307\311!\202:\306\f!\2036\307\311!\202:\312\313!\210\314!)\207" [link taskpaper-markdown-link-regexp taskpaper-email-regexp taskpaper-uri-browser-regexp taskpaper-file-path-regexp nil taskpaper-in-regexp match-string-no-properties 6 1 user-error "No link at point" taskpaper-open-link] 2 (#$ . 44084) nil]) #@32 List of inline image overlays. (defvar taskpaper-inline-image-overlays nil (#$ . 44545)) (make-variable-buffer-local 'taskpaper-inline-image-overlays) #@37 Remove inline images in the buffer. (defalias 'taskpaper-remove-inline-images #[nil "\301\302\"\210\303\211\207" [taskpaper-inline-image-overlays mapc delete-overlay nil] 3 (#$ . 44702) nil]) #@191 Display inline images in the buffer. Add inline image overlays to local image links in the buffer. An image link is a plain link to file matching return value from `image-file-name-regexp'. (defalias 'taskpaper-display-inline-images #[nil "\306 \204 \307\310!\210\311 \210\312\313!\203\313 \210\212\214~\210eb\210\314\315\316#\205\256\317\224\317\225\320\317!\321 \322\"\203A\211G\315O\266\202\202C\262\323 !\324\325 !!\315\326 !\203\251\327 !\204\251\330 !\203\251\331 \"\204\251$\203\205\332\333!\203\205\334 \333\315\335$@\336$A&\202\210\334 !\211\203\251\337 \n\"%\340%\341\f#\210\340%\342\343#\210%&B&).\202*\207" [taskpaper-file-path-regexp begin end path image taskpaper-markdown-link-regexp display-images-p error "Images cannot be displayed" taskpaper-remove-inline-images fboundp clear-image-cache re-search-forward nil t 1 match-string-no-properties "file:" string-prefix-p taskpaper-file-path-unescape substitute-in-file-name expand-file-name file-exists-p file-remote-p taskpaper-file-image-p taskpaper-in-regexp image-type-available-p imagemagick create-image :max-width :max-height make-overlay overlay-put display face default taskpaper-max-image-size overlay taskpaper-inline-image-overlays] 9 (#$ . 44903) nil]) #@51 Toggle displaying of inline images in the buffer. (defalias 'taskpaper-toggle-inline-images #[nil "\203\301 \210\302\303!\205\304\305!\207\306 \210\302\303!\205\304\307!\207" [taskpaper-inline-image-overlays taskpaper-remove-inline-images called-interactively-p interactive message "Displaying of inline images disabled" taskpaper-display-inline-images "Displaying of inline images enabled"] 2 (#$ . 46180) nil]) (byte-code "\300\301\302\303#\210\300\304\305\306#\210\300\307\310\311#\210\300\312\313\314#\210\300\315\316\317#\207" [defalias taskpaper-outline-end-of-item outline-end-of-heading "Move to the end of the current item." taskpaper-outline-end-of-subtree outline-end-of-subtree "Move to the end of the current subtree." taskpaper-outline-up-level outline-up-heading "Move to the visible parent item.\nWith argument, move up ARG levels. If INVISIBLE-OK is non-nil,\nalso consider invisible items." taskpaper-outline-next-item outline-next-heading "Move to the next (possibly invisible) item." taskpaper-outline-previous-item outline-previous-heading "Move to the previous (possibly invisible) item."] 4) #@119 Move forward to the ARG'th item at same level. Call `outline-forward-same-level', but provide a better error message. (defalias 'taskpaper-outline-forward-same-level #[(arg) "\3011 \302!0\207\210\303\304!\207" [arg (error) outline-forward-same-level user-error "No following same-level item"] 2 (#$ . 47309) "p"]) #@121 Move backward to the ARG'th item at same level. Call `outline-backward-same-level', but provide a better error message. (defalias 'taskpaper-outline-backward-same-level #[(arg) "\3011 \302!0\207\210\303\304!\207" [arg (error) outline-backward-same-level user-error "No previous same-level item"] 2 (#$ . 47632) "p"]) #@182 Move to the (possibly invisible) ancestor item. This version will not throw an error. Also, this version is much faster than `outline-up-heading', relying directly on leading tabs. (defalias 'taskpaper-outline-up-level-safe #[nil "\3021 \303\304!0\202\210\305\207\205% S\211\306V\205$\307\310\311 S\"\305\304#)\207" [outline-level level-up (error) outline-back-to-heading t nil 0 re-search-backward format "^[ ]\\{0,%d\\}[^ \n]"] 5 (#$ . 47958)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put taskpaper-outline-up-level-safe speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@86 Move to the next (possibly invisible) sibling. This version will not throw an error. (defalias 'taskpaper-outline-forward-same-level-safe #[nil "\3001\f\301\302!\210m?0\207\210\303\207" [(error) outline-forward-same-level 1 nil] 2 (#$ . 48575)]) #@92 Move to the preceeding (possibly invisible) sibling. This version will not throw an error. (defalias 'taskpaper-outline-backward-same-level-safe #[nil "\3001\f\301\302!\210o?0\207\210\303\207" [(error) outline-backward-same-level 1 nil] 2 (#$ . 48828)]) #@83 Move to the next (possibly invisible) item. This version will not throw an error. (defalias 'taskpaper-outline-next-item-safe #[nil "\3001 \301 \210m?0\207\210\302\207" [(error) outline-next-heading nil] 1 (#$ . 49089)]) #@87 Move to the previous (possibly invisible) item. This version will not throw an error. (defalias 'taskpaper-outline-previous-item-safe #[nil "\3001 \301 \210o?0\207\210\302\207" [(error) outline-previous-heading nil] 1 (#$ . 49317)]) #@102 Call FUNC for every descendant of the current item. When SELF is non-nil, also map the current item. (defalias 'taskpaper-outline-map-descendants #[(func &optional self) "\305\306!\210\307 \310\216 *\212 \203\f \210\311 \210\307 \312\216 *\nV\2050m?\2050\f \210\202*\207" [save-match-data-internal outline-level level self func outline-back-to-heading t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-outline-next-item-safe #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3]] 2 (#$ . 49558)]) #@50 Call FUNC for every item of the current subtree. (defalias 'taskpaper-outline-map-tree #[(func) "\301\302\"\207" [func taskpaper-outline-map-descendants t] 3 (#$ . 50149)]) #@49 Call FUNC for every item between BEGIN and END. (defalias 'taskpaper-outline-map-region #[(func begin end) "\212\303! b\210\304\305!\203\n \210\306 \210`W\205%m?\205%\n \210\202)\207" [end begin func copy-marker outline-on-heading-p t taskpaper-outline-next-item-safe] 2 (#$ . 50329)]) #@47 Return non-nil if item at point has children. (defalias 'taskpaper-item-has-children-p #[nil "\302\211\212\303\304!\210\305 \210`\306 \210`) U*?\207" [eos eoi nil outline-back-to-heading t taskpaper-outline-end-of-item taskpaper-outline-end-of-subtree] 2 (#$ . 50630)]) #@110 Normalize outline indentation. The variable `tab-width' controls the amount of spaces per indentation level. (defalias 'taskpaper-outline-normalize-indentation #[nil "\214~\210eb\210\302\303\304\305#\205\"\306\307\310\311!!\"\312\313 \314\"!\210)\202)\207" [tab-width indent re-search-forward "^[ ]+" nil t floor string-width match-string 0 replace-match make-string 9] 4 (#$ . 50912) nil]) (byte-code "\300\301\302\303!\203\f\303\202 \304\305#\210\300\306\302\307!\203\307\202\310\311#\210\300\312\302\313!\203,\313\202-\314\315#\210\300\316\302\317!\203<\317\202=\320\321#\210\300\322\302\323!\203L\323\202M\324\325#\210\300\326\302\327!\203\\\327\202]\330\"\207" [defalias taskpaper-outline-show-all fboundp outline-show-all show-all "Show all items in the buffer." taskpaper-outline-show-item outline-show-entry show-entry "Show the current item." taskpaper-outline-show-children outline-show-children show-children "Show all direct subitems of the current item." taskpaper-outline-show-subtree outline-show-subtree show-subtree "Show all subitems of the current item." taskpaper-outline-hide-subtree outline-hide-subtree hide-subtree "Hide all subitems of the current item." taskpaper-outline-hide-sublevels outline-hide-sublevels hide-sublevels] 4) #@46 Show the current item and all its ancestors. (defalias 'taskpaper-outline-show-context #[nil "\303\212\304\305!\210\306 \210\3071\304\305!0\202\210\303\202E\205E S\211\310V\2050\311\312\313\nS\"\303\305#)\205E\314e`S]\212\315 \210`)\303#\210\202\n*\207" [outline-view-change-hook outline-level level-up nil outline-back-to-heading t taskpaper-outline-show-item (error) 0 re-search-backward format "^[ ]\\{0,%d\\}[^ \n]" outline-flag-region taskpaper-outline-end-of-item] 4 (#$ . 52193)]) #@183 Hide everything except the current item and its context. Shows only current item, its ancestors and top-level items. Essentially a slightly modified version of `outline-hide-other'. (defalias 'taskpaper-outline-hide-other #[nil "\300\301!\210\212\302 \210)\212\303 \210)\304 \207" [taskpaper-outline-hide-sublevels 1 taskpaper-outline-show-context taskpaper-outline-show-children recenter-top-bottom] 2 (#$ . 52700) nil]) #@28 Show only top-level items. (defalias 'taskpaper-outline-overview #[nil "eb\210\300\301!\207" [taskpaper-outline-hide-sublevels 1] 2 (#$ . 53128) nil]) #@104 Forward line, but move over invisible line ends. Essentially a much simplified version of `next-line'. (defalias 'taskpaper-next-line #[nil "\300\301!\210m?\205\302`S\303\"\205\300\301!\210\202\207" [beginning-of-line 2 get-char-property invisible] 3 (#$ . 53286) nil]) (defvar taskpaper-cycle-global-status 1) (make-variable-buffer-local 'taskpaper-cycle-global-status) #@216 Perform visibility cycling. When point is at the beginning of the buffer, or when called with a \[universal-argument] prefix argument, rotate the entire buffer. When point is on an item, rotate the current subtree. (defalias 'taskpaper-cycle #[(&optional arg) "\203\neb\210\306 \207o\2031 \n=\203% \307=\203%\310 \210\311\312!\210\313\211\207\314\313!\210\311\315!\210\307\211\207\212\316\313!\210\317\f!)\203\233\320 \210\321\322\211\211 \212\320 \210\212\323 \210`)\324 \210`\325 \210`) U\203p\311\326!\202\231 Y\203\204\327 \210\311\330!\210\331\211\202\231 \331=\203\223\332 \210\311\333!\202\231\334 \210\311\335!,\207\320 \207" [arg last-command this-command taskpaper-cycle-global-status outline-regexp eos taskpaper-cycle 2 taskpaper-outline-show-all taskpaper-unlogged-message "SHOW ALL" 1 taskpaper-outline-hide-sublevels "OVERVIEW" beginning-of-line looking-at outline-back-to-heading 0 nil taskpaper-next-line taskpaper-outline-end-of-item taskpaper-outline-end-of-subtree "LEAF ITEM" taskpaper-outline-show-children "CHILDREN" taskpaper-cycle-children taskpaper-outline-show-subtree "SUBTREE" taskpaper-outline-hide-subtree "FOLDED" eol eoi goal-column] 4 (#$ . 53670) "P"]) #@25 Set startup visibility. (defalias 'taskpaper-set-startup-visibility #[nil "\203\301 \207\302 \207" [taskpaper-startup-folded taskpaper-outline-overview taskpaper-outline-show-all] 1 (#$ . 54894)]) #@39 Narrow buffer to the current subtree. (defalias 'taskpaper-narrow-to-subtree #[nil "\303\211\212\304 \305\216\306 \210`\307 \210` }-\207" [end begin save-match-data-internal nil match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] outline-back-to-heading taskpaper-outline-end-of-subtree] 2 (#$ . 55100) nil]) (defalias 'taskpaper-mark-subtree 'outline-mark-subtree "Mark the current subtree.\nPut point at the start of the current subtree, and mark at the\nend.") #@64 Save all visible items between BEGIN and END to the kill ring. (defalias 'taskpaper-outline-copy-visible #[(begin end) "\212\214 }\210eb\210p\306\211\307\310\311\"r\fq\210\312\216pr q\210\313 \203=\314 \210`\315 \210`r q\210\316 \n #\210\317c\210)\320 \203j\306\321\206I`\322\"\323=\262\204=`\315 \210`r q\210\316 \n #\210\317c\210)\202=*\324\325 !.\207" [begin end start buffer #1=#:temp-buffer temp-buffer nil generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] outline-on-heading-p outline-back-to-heading taskpaper-outline-end-of-item insert-buffer-substring "\n" outline-next-heading get-char-property invisible outline kill-new buffer-string] 4 (#$ . 55614) "r"]) #@50 Fix cursor position after promoting or demoting. (defalias 'taskpaper-fix-position-after-promote #[nil "\300 \207" [back-to-indentation] 1 (#$ . 56352)]) #@48 Promote the current (possibly invisible) item. (defalias 'taskpaper-outline-promote #[nil "\304\305!\210\306 \307\216 *\211\310U\203\311\312!\210\313\n\314Z\315\"\316 \317\305\317\310%*\207" [save-match-data-internal outline-level level indent outline-back-to-heading t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 1 user-error "Already at top level" make-string 2 9 replace-match nil] 7 (#$ . 56512) nil]) #@47 Demote the current (possibly invisible) item. (defalias 'taskpaper-outline-demote #[nil "\304\305!\210\306 \307\216 *\310\n\311\"\312 \313\305\313\314%*\207" [save-match-data-internal outline-level level indent outline-back-to-heading t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] make-string 9 replace-match nil 1] 6 (#$ . 56976) nil]) #@51 Promote the current (possibly invisible) subtree. (defalias 'taskpaper-outline-promote-subtree #[nil "\300\301!\210\302 \207" [taskpaper-outline-map-tree taskpaper-outline-promote taskpaper-fix-position-after-promote] 2 (#$ . 57369) nil]) #@50 Demote the current (possibly invisible) subtree. (defalias 'taskpaper-outline-demote-subtree #[nil "\300\301!\210\302 \207" [taskpaper-outline-map-tree taskpaper-outline-demote taskpaper-fix-position-after-promote] 2 (#$ . 57614) nil]) (byte-code "\300\301\302\303#\210\300\304\305\306#\207" [defalias taskpaper-outline-move-subtree-up outline-move-subtree-up "Move the current subtree up past ARG items of the same level." taskpaper-outline-move-subtree-down outline-move-subtree-down "Move the current subtree down past ARG items of the same level."] 4) #@32 Insert new item at same level. (defalias 'taskpaper-new-item-same-level #[nil "\304\211\212\305\306!\203\307 \310\216 *\202\311\312 S\313\")n\203(\314 \202-\314 \210c*\207" [indent level save-match-data-internal outline-level nil outline-on-heading-p t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 1 make-string 9 newline] 3 (#$ . 58176) nil]) #@32 Insert new task at same level. (defalias 'taskpaper-new-task-same-level #[nil "\300 \210\301c\207" [taskpaper-new-item-same-level "- "] 1 (#$ . 58584) nil]) #@31 Remove indentation from ITEM. (defalias 'taskpaper-remove-indentation #[(item) "\301\302\303#\207" [item replace-regexp-in-string "^[ ]+" ""] 4 (#$ . 58747)]) #@33 Remove trailing tags from ITEM. (defalias 'taskpaper-remove-trailing-tags #[(item) "\302\303\304\"\305 #\207" [taskpaper-consecutive-tags-regexp item replace-regexp-in-string format "%s$" ""] 4 (#$ . 58914)]) #@33 Remove inline markup from ITEM. (defalias 'taskpaper-remove-inline-markup #[(item) "\303\304\305\"rq\210\306\216\307 \210 c\210\310\302!\210\305\311 \210)\312\311!\210\313ed\314#\210\315\316 !+\317\320 G\314 $\210 \207" [#1=#:temp-buffer item delay-mode-hooks generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer make-local-variable taskpaper-mode font-lock-default-function font-lock-default-fontify-region nil taskpaper-remove-markup-chars buffer-string set-text-properties 0] 5 (#$ . 59130)]) #@38 Return type of item at point or nil. (defalias 'taskpaper-item-type #[nil "\302\303 \304 \"\305!\306!\307\310\311\312#)\266\203\203#\310\202L\313\310\311\312#)\266\203\2037\314\202L\315\310\311\312#)\266\203\203K\316\202L\317)\207" [item inhibit-changing-match-data buffer-substring-no-properties line-beginning-position line-end-position taskpaper-remove-indentation taskpaper-remove-trailing-tags "^[ ]*$" nil t string-match "^[-+*] " "task" ":$" "project" "note"] 7 (#$ . 59692)]) #@31 Return text of item at point. (defalias 'taskpaper-item-text #[nil "\301\302 \303 \"\304!)\207" [item buffer-substring-no-properties line-beginning-position line-end-position taskpaper-remove-indentation] 3 (#$ . 60209)]) #@35 Remove type formatting from ITEM. (defalias 'taskpaper-remove-type-formatting #[(item) "\303\304\305#\306 \307\216\310\311\"\203\312\313\"\312\314\"P\2029\310\315\316\n\"\"\2038\312\313\"\312\314\"\312\317\"Q\2029*\207" [item save-match-data-internal taskpaper-consecutive-tags-regexp replace-regexp-in-string "[ ]+$" "" match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] string-match "^\\([ ]*\\)[-+*] +\\([^\n]*\\)$" match-string-no-properties 1 2 format "^\\([ ]*\\)\\([^\n]*\\):\\(%s\\)?$" 3] 5 (#$ . 60439)]) #@77 Format item at point as TYPE. Valid types are 'project', 'task', or 'note'. (defalias 'taskpaper-item-format #[(type) "\306 \307 \310 \"\311\n!\312 \313\216\f\314\267\202F\315\316\n\"\210\317\320\n\"\321\317\322\n\"Q\202K\315\323\324 \"\n\"\210\317\320\n\"\325\317\322\n\"Q\202K\202K\326\327\f\"\210* |\210\nc+\207" [begin end item save-match-data-internal type taskpaper-consecutive-tags-regexp line-beginning-position line-end-position buffer-substring-no-properties taskpaper-remove-type-formatting match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (task 26 project 45 note 67)) string-match "^\\([ ]*\\)\\([^\n]*\\)$" match-string-no-properties 1 "- " 2 format "^\\([^\n]*?\\)\\(%s\\)?[ ]*$" ":" error "Invalid item type: %s"] 5 (#$ . 61017)]) #@34 Format item at point as project. (defalias 'taskpaper-item-format-as-project #[nil "\300\301!\207" [taskpaper-item-format project] 2 (#$ . 61911) nil]) #@31 Format item at point as task. (defalias 'taskpaper-item-format-as-task #[nil "\300\301!\207" [taskpaper-item-format task] 2 (#$ . 62069) nil]) #@31 Format item at point as note. (defalias 'taskpaper-item-format-as-note #[nil "\300\301!\207" [taskpaper-item-format note] 2 (#$ . 62218) nil]) #@154 Return non-nil if POS is in a tag. If POS is omitted or nil, the value of point is used by default. This function does not set or modify the match data. (defalias 'taskpaper-in-tag-p #[(&optional pos) "\206`\212\305 \306\216\307\n\"\205 \307 \"?\205 \307\f\"?,\207" [pos save-match-data-internal taskpaper-tag-regexp taskpaper-markdown-link-regexp taskpaper-file-path-regexp match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-in-regexp] 3 (#$ . 62368)]) #@47 Return non-nil when NAME is a valid tag name. (defalias 'taskpaper-tag-name-p #[(name) "\304\305\"\n;\205 \n\306\307\310#)\266\203)\207" [taskpaper-tag-name-regexp re name inhibit-changing-match-data format "\\`%s\\'" nil t string-match] 7 (#$ . 62887)]) #@41 Escape special characters in tag VALUE. (defalias 'taskpaper-tag-value-escape #[(value) ";\203\301\302\303#\301\304\305#\301\306\307#\207" [value replace-regexp-in-string "\n+" " " "(" "\\\\(" ")" "\\\\)"] 4 (#$ . 63156)]) #@43 Unescape special characters in tag VALUE. (defalias 'taskpaper-tag-value-unescape #[(value) ";\203\301\302\303#\301\304\305#\207" [value replace-regexp-in-string "\\\\(" "(" "\\\\)" ")"] 4 (#$ . 63395)]) #@95 The special item attributes. These are implicit attributes that are not associated with tags. (defconst taskpaper-special-attributes '("type" "text") (#$ . 63613)) #@153 Get special attrbutes for the item at point. Return alist (NAME . VALUE) where NAME is the attribute name and VALUE is the attribute value, as strings. (defalias 'taskpaper-item-get-special-attributes #[nil "\303\211\211\304\305  B\nB\306\307  B\nB\211+\207" [value name attrs nil "type" taskpaper-item-type "text" taskpaper-item-text] 4 (#$ . 63784)]) #@154 Get explicit attrbutes for the item at point. Return alist (NAME . VALUE) where NAME is the attribute name and VALUE is the attribute value, as strings. (defalias 'taskpaper-item-get-explicit-attributes #[nil "\306\211\211\212\307\310!\210\311 \312\216\313\f\314 \315#\203;\316\310\224!\203\317\320!\317\321!\322! \235\204 B\nB\202+\n\237+\207" [value name attrs save-match-data-internal taskpaper-tag-regexp taskpaper-special-attributes nil beginning-of-line 1 match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] re-search-forward line-end-position t taskpaper-in-tag-p match-string-no-properties 2 3 taskpaper-tag-value-unescape] 4 (#$ . 64155)]) #@63 Remove attributes excluded from inheritance from alist ATTRS. (defalias 'taskpaper-remove-uninherited-attributes #[(attrs) "\306\211\203) \306\211\203% @\211@\n\235\204\f B A\211\204* \237* \207" [taskpaper-tags-exclude-from-inheritance excluded exattrs attrs attr --dolist-tail-- nil] 3 (#$ . 64866)]) #@18 Attribute cache. (defvar taskpaper-attribute-cache (make-hash-table :size 10000) (#$ . 65190)) (make-variable-buffer-local 'taskpaper-attribute-cache) #@24 Clear attribute cache. (defalias 'taskpaper-attribute-cache-clear #[nil "\301!\207" [taskpaper-attribute-cache clrhash] 2 (#$ . 65347)]) #@60 Push attribute list ATTRS into attribute cache, under KEY. (defalias 'taskpaper-attribute-cache-put #[(key attrs) "\303 \n#\207" [key attrs taskpaper-attribute-cache puthash] 4 (#$ . 65491)]) #@55 Retrieve attribute list for KEY from attribute cache. (defalias 'taskpaper-attribute-cache-get #[(key) "\302 \"\207" [key taskpaper-attribute-cache gethash] 3 (#$ . 65690)]) #@24 Build attribute cache. (defalias 'taskpaper-attribute-cache-build #[nil "\305 \210\306\307!\210\212eb\210\310P\311\312 \311\313#)\203*\314 \315\313!\316\f \"\210*\202*\306\317!\207" [outline-regexp re case-fold-search attrs key taskpaper-attribute-cache-clear message "Caching..." "^" nil re-search-forward t point-at-bol taskpaper-item-get-attributes taskpaper-attribute-cache-put "Caching...done"] 4 (#$ . 65871)]) #@216 Get attrbutes for item at point. Return read-only alist (NAME . VALUE) where NAME is the attribute name and VALUE is the attribute value, as strings. If INHERIT is non-nil also check higher levels of the hierarchy. (defalias 'taskpaper-item-get-attributes #[(&optional inherit) "\306 \307!\310\211\310\211 \203 \202b\311 \312 \203\\\212\3131/\314\315!0\2023\210\202[\203[ S\211\316V\205L\317\320\321S\"\310\315#)\203[\322\323\312 !\f\"\202$)\322\n \f# \324!\325!.\207" [key chattrs spattrs exattrs ihattrs attrs point-at-bol taskpaper-attribute-cache-get nil taskpaper-item-get-special-attributes taskpaper-item-get-explicit-attributes (error) outline-back-to-heading t 0 re-search-backward format "^[ ]\\{0,%d\\}[^ \n]" append taskpaper-remove-uninherited-attributes copy-sequence delete-dups inherit outline-level level-up list res] 5 (#$ . 66303)]) #@198 Get value of attribute NAME for item at point. Return the value as a string or nil if the attribute does not exist or has no value. If INHERIT is non-nil also check higher levels of the hierarchy. (defalias 'taskpaper-item-get-attribute #[(name &optional inherit) "\302!\204 \303\304\"\210\305\306 !\"A\207" [name inherit taskpaper-tag-name-p user-error "Invalid attribute name: %s" assoc taskpaper-item-get-attributes] 4 (#$ . 67202)]) #@118 Return non-nil if item at point has attribute NAME. If INHERIT is non-nil also check higher levels of the hierarchy. (defalias 'taskpaper-item-has-attribute #[(name &optional inherit) "\302!\204 \303\304\"\210\305\306 !\"\207" [name inherit taskpaper-tag-name-p user-error "Invalid attribute name: %s" assoc taskpaper-item-get-attributes] 4 (#$ . 67650)]) #@129 Remove all non-special attributes NAME from item at point. With optional argument VALUE, match only attributes with that value. (defalias 'taskpaper-item-remove-attribute #[(name) "\304!\204 \305\306\"\210 \235\203\305\307\"\210\310\311!\210\312 \313\216\314 \315 \316#\205@\317\311\224!\203\320\321!\232\203\322\224\322\225|\210\202*\207" [name taskpaper-special-attributes save-match-data-internal taskpaper-tag-regexp taskpaper-tag-name-p user-error "Invalid attribute name: %s" "Special attribute cannot be removed: %s" beginning-of-line 1 match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] re-search-forward line-end-position t taskpaper-in-tag-p match-string 2 0] 4 (#$ . 68017)]) #@110 Set non-special attribute NAME for item at point. With optional argument VALUE, set attribute to that value. (defalias 'taskpaper-item-set-attribute #[(name &optional value) "\303!\204 \304\305\"\210 \235\203\304\306\"\210\307!\210\n\203\"\310\n!\311 \210\312 \210n\204/\313c\210\n\203:\314\315\n#c\207\314\316\"c\207" [name taskpaper-special-attributes value taskpaper-tag-name-p user-error "Invalid attribute name: %s" "Special attribute cannot be set: %s" taskpaper-item-remove-attribute taskpaper-tag-value-escape taskpaper-outline-end-of-item delete-horizontal-space " " format "@%s(%s)" "@%s"] 4 (#$ . 68766)]) #@124 Get attrbutes for item string STR. Like `taskpaper-item-get-attributes' but uses argument string instead of item at point. (defalias 'taskpaper-string-get-attributes #[(str) "\302\303\304\"rq\210\305\216\306 \210 c\210eb\210\307 +\207" [#1=#:temp-buffer str generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-get-attributes] 3 (#$ . 69404)]) #@137 Get value of attribute NAME for item string STR. Like `taskpaper-item-get-attribute' but uses argument string instead of item at point. (defalias 'taskpaper-string-get-attribute #[(str name) "\303\304\305\"rq\210\306\216\307 \210 c\210eb\210\310\n!+\207" [#1=#:temp-buffer str name generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-get-attribute] 3 (#$ . 69828)]) #@142 Return non-nil if item string STR has attribute NAME. Like `taskpaper-item-has-attribute' but uses argument string instead of item at point. (defalias 'taskpaper-string-has-attribute #[(str name) "\303\304\305\"rq\210\306\216\307 \210 c\210eb\210\310\n!+\207" [#1=#:temp-buffer str name generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-has-attribute] 3 (#$ . 70275)]) #@171 Remove all non-special attributes NAME from item string STR. Like `taskpaper-item-remove-attribute' but uses argument string instead of item at point. Return new string. (defalias 'taskpaper-string-remove-attribute #[(str name) "\303\304\305\"rq\210\306\216\307 \210 c\210eb\210\310\n!\210\311 +\207" [#1=#:temp-buffer str name generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-remove-attribute buffer-string] 3 (#$ . 70727)]) #@159 Set non-special attribute NAME for item string STR. Like `taskpaper-item-set-attribute' but uses argument string instead of item at point. Return new string. (defalias 'taskpaper-string-set-attribute #[(str name &optional value) "\304\305\306\"rq\210\307\216\310 \210 c\210eb\210\311\n \"\210\312 +\207" [#1=#:temp-buffer str name value generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-set-attribute buffer-string] 3 (#$ . 71237)]) #@145 Convert attribute value VALUE to a list. Treat the value string as a comma-separated list of values and return the values as a list of strings. (defalias 'taskpaper-attribute-value-to-list #[(value) ";\205\302 \303\216\304\305\306#*\207" [value save-match-data-internal match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] split-string ",[[:space:]]*" nil] 4 (#$ . 71753)]) (defvar taskpaper-time-was-given nil) (make-variable-buffer-local 'taskpaper-time-was-given) #@47 Regular expression for whitespace characters. (defconst taskpaper-time-whitespace-regexp "\\`[ \n ]*" (#$ . 72268)) #@47 Regular expression non-whitespace characters. (defconst taskpaper-time-non-whitespace-regexp "\\`[^ \n ]*" (#$ . 72391)) #@48 Regular expression for relative date and time. (defconst taskpaper-time-relative-word-regexp "\\`\\(today\\|tomorrow\\|yesterday\\|now\\)\\>" (#$ . 72519)) #@46 Regular expression for relative time period. (defconst taskpaper-time-relative-period-regexp "\\`\\(this\\|next\\|last\\) +\\(year\\|quarter\\|month\\|week\\|day\\)\\>" (#$ . 72681)) #@45 Regular expression for relative month name. (defconst taskpaper-time-relative-month-regexp (byte-code "\301\302\303\304#\305Q\207" [parse-time-months "\\`\\(this\\|next\\|last\\) +\\(" mapconcat car "\\|" "\\)\\(?: +\\([0-9]?[0-9]\\)\\)?\\(?: \\|\\'\\)"] 5) (#$ . 72870)) #@42 Regular expression for relative weekday. (defconst taskpaper-time-relative-weekday-regexp (byte-code "\301\302\303\304#\305Q\207" [parse-time-weekdays "\\`\\(this\\|next\\|last\\) +\\(" mapconcat car "\\|" "\\)\\>"] 5) (#$ . 73149)) #@36 Regular expression for month name. (defconst taskpaper-time-month-regexp (byte-code "\301\302\303\304#\305Q\207" [parse-time-months "\\`\\(" mapconcat car "\\|" "\\)\\(?: +\\([0-9]?[0-9]\\)\\)?\\(?: \\|\\'\\)"] 5) (#$ . 73389)) #@33 Regular expression for weekday. (defconst taskpaper-time-weekday-regexp (byte-code "\301\302\303\304#\305Q\207" [parse-time-weekdays "\\`\\(" mapconcat car "\\|" "\\)\\>"] 5) (#$ . 73624)) #@39 Regular expression for ISO 8601 date. (defconst taskpaper-time-iso-date-regexp "\\`\\([0-9]?[0-9]?[0-9][0-9]\\)\\(?:-\\([0-9]?[0-9]\\)\\(?:-\\([0-9]?[0-9]\\)\\)?\\)?\\( \\|\\'\\)" (#$ . 73820)) #@44 Regular expression for ISO 8601 week date. (defconst taskpaper-time-iso-week-date-regexp "\\`\\([0-9]?[0-9]?[0-9][0-9]\\)-w\\([0-9]?[0-9]\\)\\(?:-\\([0-9]\\)\\)?\\( \\|\\'\\)" (#$ . 74020)) #@52 Regular expression for ISO 8601 date without year. (defconst taskpaper-time-iso-date-short-regexp "\\`--\\([0-9]?[0-9]\\)-\\([0-9]?[0-9]\\)\\( \\|\\'\\)" (#$ . 74216)) #@56 Regular expression for time in 12-hour clock notation. (defconst taskpaper-time-ampm-time-regexp "\\`\\([0-9]?[0-9]\\)\\(?::\\([0-9][0-9]\\)\\)?\\([ap]m?\\)\\>" (#$ . 74390)) #@56 Regular expression for time in 24-hour clock notation. (defconst taskpaper-time-time-regexp "\\`\\([0-9]?[0-9]\\):\\([0-9][0-9]\\)\\(?: \\|\\'\\)" (#$ . 74571)) #@41 Regular expression for duration offset. (defconst taskpaper-time-duration-offset-regexp (byte-code "\301\302\303\304#\305Q\207" [parse-time-weekdays "\\`\\([-+]\\) *\\([0-9]+\\) *\\([hdwmqy]\\|mins?\\|minutes?\\|hours?\\|days?\\|weeks?\\|months?\\|quarters?\\|years?\\|" mapconcat car "\\|" "\\)\\>"] 5) (#$ . 74738)) #@140 Expand 2-digit YEAR. Expand year into one of the next 30 years, if possible, or into a past one. Return unchanged any year larger than 99. (defalias 'taskpaper-time-expand-year #[(year) "\304Y\203\207\305\306\307 !8\211\304\245 \304\246Z\211\310V\203(\nS\304_\\\202< \311V\2036\n\304_\\\202<\nT\304_\\+\207" [year current century offset 100 5 decode-time current-time 30 -70] 4 (#$ . 75064)]) #@47 Convert relative date specifier to increment. (defalias 'taskpaper-time-relative-spec-to-inc #[(spec) "\301\267\202\f\302\207\303\207\304\207\305\306\"\207" [spec #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("this" 6 "next" 8 "last" 10)) 0 1 -1 error "Invalid relative date specifier: %s"] 3 (#$ . 75478)]) #@37 Parse ISO 8601 date representation. (defalias 'taskpaper-time-parse-iso-date #[(nowdecode time-str) "\3068\3078\3108\3118A@@\312\"\203]\313\314\315\316\"!!\311\225\203;\314\315\311\"!\202<\316\310\225\203L\314\315\310\"!\202M\316\317\211\317\320\321\322\211$ \n \f \257.B\207" [nowdecode second minute hour day month 5 4 3 2 string-match taskpaper-time-expand-year string-to-number match-string 1 0 replace-match "" t year taskpaper-time-iso-date-regexp time-str] 7 (#$ . 75838)]) #@42 Parse ISO 8601 week date representation. (defalias 'taskpaper-time-parse-iso-week-date #[(nowdecode time-str) "\3068\3078\3108\3118A@@\312\211\211\211\313\"\203\204\314\315\316\317\"!!\315\316\311\"!\310\225\203N\315\316\310\"!\202O\317\211\320U\203Z\321\202[\n\322\323 \n\fE!!\211@ A@\311 8\321\211\321\324\325\326\211$ \257.\nB\207" [nowdecode iso-date iso-wday iso-week iso-year second 5 4 3 2 nil string-match taskpaper-time-expand-year string-to-number match-string 1 7 0 calendar-gregorian-from-absolute calendar-iso-to-absolute replace-match "" t minute hour day month year taskpaper-time-iso-week-date-regexp time-str] 11 (#$ . 76370)]) #@55 Parse ISO 8601 date representation with year omitted. (defalias 'taskpaper-time-parse-iso-date-short #[(nowdecode time-str) "\3068\3078\3108\3118A@@\312\"\203@\313\314\315\"!\313\314\311\"!\316\211\316\317\320\321\211$ \n \f \257.B\207" [nowdecode second minute hour day month 5 4 3 2 string-match string-to-number match-string 1 0 replace-match "" t year taskpaper-time-iso-date-short-regexp time-str] 7 (#$ . 77090)]) #@27 Parse relative date word. (defalias 'taskpaper-time-parse-relative-word #[(nowdecode time-str) "\3068\3078\3108\3118A@@\312\313\"\2033\314\315\"\316\317\320\211$ \321\267\202]\322\211\322\202] T\322\211\322\202] S\322\211\322\202]\320\n \f \257.B\207" [nowdecode word second minute hour day 5 4 3 2 nil string-match match-string 1 replace-match "" t #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("today" 57 "tomorrow" 66 "yesterday" 78 "now" 90)) 0 month year taskpaper-time-relative-word-regexp time-str taskpaper-time-was-given] 8 (#$ . 77553)]) #@29 Parse relative time period. (defalias 'taskpaper-time-parse-relative-period #[(nowdecode time-str) "\3068\3078\3108\3118\3128A@@\313\211\211\211\314\"\203K\315\316\"\315\312\"\317\f!\320\321\322\211$ \323\267\202\314\n\\\316\211\324\211\324\202\314\325S\311\245!\311_T\n\311_\\\316\324\211\324\202\314\n\\\316\324\211\324\202\314\324U\203\244\326\316 Z\\\n\326_\\\324\211\324\202\314\n\\\324\211\324 \257. B\207" [nowdecode wday1 inc period spec second 6 5 4 3 2 nil string-match match-string 1 taskpaper-time-relative-spec-to-inc replace-match "" t #s(hash-table size 5 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("year" 81 "quarter" 104 "month" 134 "week" 154 "day" 190)) 0 floor 7 minute hour day month year wday taskpaper-time-relative-period-regexp time-str] 12 (#$ . 78202)]) #@47 Parse relative month name with optional date. (defalias 'taskpaper-time-parse-relative-month #[(nowdecode time-str) "\3068\3078\3108\3118A@@\312\211\313\"\203d\314\315\"\316\314\311\"\"A\310\225\203H\317\314\310\"!\202I\315\320\n! \\\321\211\321\322\323\324\211$ \f \257.B\207" [nowdecode inc spec second minute hour 5 4 3 2 nil string-match match-string 1 assoc string-to-number taskpaper-time-relative-spec-to-inc 0 replace-match "" t day month year taskpaper-time-relative-month-regexp time-str parse-time-months] 9 (#$ . 79133)]) #@25 Parse relative weekday. (defalias 'taskpaper-time-parse-relative-weekday #[(nowdecode time-str) "\3068\3078\3108\3118\3128A@@\313\211\211\314\"\203M\315\316\"\317\315\312\"\"A\320 !\321\322\323\211$\324U\203W\325\n\324U\203_\325\nZ\\ \325_\\\324\211\324\211 \257.\nB\207" [nowdecode inc wday1 spec second minute 6 5 4 3 2 nil string-match match-string 1 assoc taskpaper-time-relative-spec-to-inc replace-match "" t 0 7 hour day month year wday taskpaper-time-relative-weekday-regexp time-str parse-time-weekdays] 11 (#$ . 79732)]) #@37 Parse month name with optional day. (defalias 'taskpaper-time-parse-month #[(timedecode time-str) "\3068\3078\3108\3118A@@\312\"\203L\313\314\315\"\"A\311\225\203;\316\314\311\"!\202<\315\317\211\317\320\321\322\211$ \n \f \257.B\207" [timedecode second minute hour day month 5 4 3 2 string-match assoc match-string 1 string-to-number 0 replace-match "" t year taskpaper-time-month-regexp time-str parse-time-months] 7 (#$ . 80337)]) #@16 Parse weekday. (defalias 'taskpaper-time-parse-weekday #[(timedecode time-str) "\3068\3078\3108\3118A@@\312\211\313\"\203L\314\315\316\"\"A\317\320\321\322\211\211&!8\323\324\325\211$\n\322U\203T\326 \322U\203\\\326 \nZ\\\322\211\322\211\f \257.B\207" [timedecode wday1 wday second minute hour 5 4 3 2 nil string-match assoc match-string 1 6 decode-time encode-time 0 replace-match "" t 7 day month year taskpaper-time-weekday-regexp time-str parse-time-weekdays] 10 (#$ . 80818)]) #@13 Parse time. (defalias 'taskpaper-time-parse-time #[(timedecode time-str) "\3068\3078\3108\3118A@@\312\313\"\203S\314\315\316\"!\311\225\203;\314\315\311\"!\202<\317\317\320\315\310\"!\321\322\323\211$\202w\313\"\203w\314\315\316\"!\314\315\311\"!\317\321\322\323\211$ \324=\203\205\f\325U\203\205\317 \326=\203\225\f\325W\203\225\f\325\\\323\n \f \257.B\207" [timedecode ampm second minute hour day 5 4 3 2 nil string-match string-to-number match-string 1 0 string-to-char replace-match "" t 97 12 112 month year taskpaper-time-ampm-time-regexp time-str taskpaper-time-time-regexp taskpaper-time-was-given] 7 (#$ . 81366)]) #@24 Parse duration offset. (defalias 'taskpaper-time-parse-duration-offset #[(timedecode time-str) "\3068\3078\3108\3118A@@\312\211\211\211\211 !\313\"#\"\203]\314\315\316#\"!\317\315\311#\"!\211 \320U\203K\321\202L\316_\315\310#\"\322\323\324\211#$#\325 $\"\203\234\325 $\"A\326\327\330\331\211\211 !&!8\211\331U\203\205\332 \331U\203\215\332 \nZ\\\f\332_\\\202' \333\267\202\353\f\\\324%\202'\f\\\324%\202'\f\\\202'\f\332_\\\202' \f\\ \202' \f\310_\\ \202'!\f\\!\202'\325 $\"\203'\325 $\"A\326\327\330\331\211\211 !&!8\211\331U\203\332 \331U\203\332 \nZ\\\f\332_\\ !\257#. B\207" [timedecode wday1 wday unit inc dir 5 4 3 2 nil string-match string-to-char match-string 1 string-to-number 45 -1 replace-match "" t assoc 6 decode-time encode-time 0 7 #s(hash-table size 22 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("min" 162 "mins" 162 "minute" 162 "minutes" 162 "h" 174 "hour" 174 "hours" 174 "d" 186 "day" 186 "days" 186 "w" 195 "week" 195 "weeks" 195 "m" 206 "month" 206 "months" 206 "q" 215 "quarter" 215 "quarters" 215 "y" 226 "year" 226 "years" 226)) second minute hour day month year taskpaper-time-duration-offset-regexp time-str parse-time-weekdays taskpaper-time-was-given] 12 (#$ . 82065)]) #@183 Parse the time string TIME-STR. Return list (SEC MIN HOUR DAY MON YEAR DOW DST TZ). When TIMEDECODE is given, calculate date and time based on this time, otherwise use current time. (defalias 'taskpaper-parse-time-string #[(time-str &optional timedecode) "\306\307 !\310\310 \227\f\206  G\311V\203\264\312 \"\203'\313\314\310\211 $ G\311U\204 \310\315\312#)\266\203\203O\316 \"\211@A\211\202\312 \"\203f\317 \"\211@A\211\202 \310\315\312#)\266\203\203\207\320 \"\211@A\211\202 \310\315\312#)\266\203\203\250\321 \"\211@A\211\202 \310\315\312#)\266\203\203\311\322 \"\211@A\211\202! \310\315\312#)\266\203\203\352\323 \"\211@A\211\202\" \310\315\312#)\266\203\203 \324 \"\211@A\211\202# \310\315\312#)\266\203\203,\325\f \"\211@A\211\202$ \310\315\312#)\266\203\203M\326\f \"\211@A\211\202% \310\315\312#)\266\203\204q& \310\315\312#)\266\203\203\200\327\f \"\211@A\211\202' \310\315\312#)\266\203\203\241\330\f \"\211@A\211\202\312( \"\203\313\314\315\211 $\211\202\306\331\332\f\"!*\207" [temp nowdecode taskpaper-time-was-given time-str timedecode taskpaper-time-whitespace-regexp decode-time current-time nil 0 string-match replace-match "" t taskpaper-time-parse-iso-date taskpaper-time-parse-iso-week-date taskpaper-time-parse-iso-date-short taskpaper-time-parse-relative-word taskpaper-time-parse-relative-period taskpaper-time-parse-relative-month taskpaper-time-parse-relative-weekday taskpaper-time-parse-month taskpaper-time-parse-weekday taskpaper-time-parse-time taskpaper-time-parse-duration-offset apply encode-time taskpaper-time-iso-date-regexp inhibit-changing-match-data taskpaper-time-iso-week-date-regexp taskpaper-time-iso-date-short-regexp taskpaper-time-relative-word-regexp taskpaper-time-relative-period-regexp taskpaper-time-relative-month-regexp taskpaper-time-relative-weekday-regexp taskpaper-time-month-regexp taskpaper-time-weekday-regexp taskpaper-time-time-regexp taskpaper-time-ampm-time-regexp taskpaper-time-duration-offset-regexp taskpaper-time-non-whitespace-regexp] 8 (#$ . 83414)]) #@340 Parse and format time string. Return the formatted time string. When TIMEDECODE is given, calculate time based on this time, otherwise use current time. If the original time string specifies a time or if the optional argument WITH-TIME is non-nil, the formatted output contains the date and the time. Otherwise, only the date is included. (defalias 'taskpaper-expand-time-string #[(time-str &optional timedecode with-time) "\306 \"\n\204\f \203\307\202\310\311\f\312\313 \"\"*\207" [time-str timedecode with-time taskpaper-time-was-given fmt time taskpaper-parse-time-string "%Y-%m-%d %H:%M" "%Y-%m-%d" format-time-string apply encode-time] 5 (#$ . 85619)]) #@213 Convert a time string S to a float number of seconds. Return the float number of seconds since the beginning of the epoch. When TIMEDECODE is given, calculate time based on this time, otherwise use current time. (defalias 'taskpaper-time-string-to-seconds #[(time-str &optional timedecode) "\302\303\304\305 \"\"!\207" [time-str timedecode float-time apply encode-time taskpaper-parse-time-string] 6 (#$ . 86292)]) #@188 Convert S to a float number of seconds. If S is already a number of seconds, just return it. If S is a string, parse it as a time string and convert to float time. If S is nil, return 0. (defalias 'taskpaper-2ft #[(s) "\247\203\207;\203\3011\302!0\207\210\303\207\303\207" [s (error) taskpaper-time-string-to-seconds 0] 2 (#$ . 86715)]) #@230 Go to the calendar at the current date. If point is on a tag with value, interpret the value as time string and go to the corresponding date instead. A \[universal-argument] prefix argument can be used to force the current date. (defalias 'taskpaper-goto-calendar #[(&optional arg) "\306\211\211\211\211\211\307 \2036\310!\2036\311\312!\211\2038\313\n!\314\n!\315 8\312 8\316 8E\2028\306\317 \210\203J\204J\320!\202L\321 .\207" [date time value calendar-view-holidays-initially-flag calendar-view-diary-initially-flag calendar-move-hook nil taskpaper-in-tag-p taskpaper-in-regexp match-string-no-properties 3 taskpaper-tag-value-unescape taskpaper-parse-time-string 4 5 calendar calendar-goto-date calendar-goto-today taskpaper-tag-regexp arg] 7 (#$ . 87069) "P"]) #@134 Show date at point in calendar. If point is on a tag with value, interpret the value as time string and show the corresponding date. (defalias 'taskpaper-show-in-calendar #[nil "\302 \303 \304 \210\305 !\210\306!*\207" [sframe swin selected-window selected-frame taskpaper-goto-calendar select-window select-frame-set-input-focus] 2 (#$ . 87866) nil]) #@62 Return a list (month day year) of date at point in calendar. (defalias 'taskpaper-get-date-from-calendar #[nil "r\301q\210\302 \303\216\304 +\207" [save-match-data-internal "*Calendar*" match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] calendar-cursor-to-date] 1 (#$ . 88227)]) #@70 Insert time stamp corresponding to cursor date in *Calendar* buffer. (defalias 'taskpaper-date-from-calendar #[nil "\302 \303\304\211\211A@@\3058&\306\307\310 \"!*\207" [date time taskpaper-get-date-from-calendar encode-time 0 2 insert-before-markers format-time-string "%Y-%m-%d"] 8 (#$ . 88552) nil]) #@100 Temporary storage for date selected from calendar. Date is stored as internal time representation. (defvar taskpaper-calendar-selected-date nil (#$ . 88868)) #@35 Eval FORM in the calendar window. (defalias 'taskpaper-eval-in-calendar #[(form) "\304\305\306\"\211\205'\306\307!r\310\216\311\n@\312\"\210\313 !\210\314\315!?\205&\316\317!,)\207" [cwin inhibit-message save-selected-window--state form get-buffer-window "*Calendar*" t internal--before-with-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] select-window norecord eval boundp inhibilt-message message nil] 4 (#$ . 89032)]) #@66 Keymap for minibuffer commands when using `taskpaper-read-date'. (defvar taskpaper-read-date-minibuffer-local-map (byte-code "\302 \303 \"\210\304\305\306#\210\304\307\310#\210\304\311\312#\210\304\313\314#\210)\207" [map minibuffer-local-map make-sparse-keymap set-keymap-parent define-key "!" #[nil "\300\301!\210\302\303!\207" [taskpaper-eval-in-calendar (diary-mark-entries) message nil] 2 nil nil] [67108910] #[nil "\300\301!\207" [taskpaper-eval-in-calendar (calendar-goto-today)] 2 nil nil] ">" #[nil "\300\301!\207" [taskpaper-eval-in-calendar (calendar-scroll-left 1)] 2 nil nil] "<" #[nil "\300\301!\207" [taskpaper-eval-in-calendar (calendar-scroll-right 1)] 2 nil nil]] 4) (#$ . 89523)) #@67 Return to `taskpaper-read-date' with the date currently selected. (defalias 'taskpaper-calendar-select #[nil "\303 \205!\303 \304\305\211\211A@@\3068&\211*\307 \205!\310 \207" [date time taskpaper-calendar-selected-date calendar-cursor-to-date encode-time 0 2 active-minibuffer-window exit-minibuffer] 9 (#$ . 90235) nil]) #@146 Display the date prompt interpretation live in calendar. The function should be called from minibuffer as part of `after-change-functions' hook. (defalias 'taskpaper-read-date-recenter-calendar #[(&optional _begin _end _length) "\306p!\205F\307 d{\310!\311 8\312 8\313 8E\314\315\316\"\211\205E\316\317\320 !r\321\216\322@\323\"\210\324\n!\210\325\326!?\205D\327\317!-,\207" [str time date cwin calendar-move-hook inhibit-message minibufferp point-at-bol taskpaper-parse-time-string 4 3 5 get-buffer-window "*Calendar*" t nil internal--before-with-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] select-window norecord calendar-goto-date boundp inhibilt-message message save-selected-window--state] 5 (#$ . 90574)]) (defvar taskpaper-read-date-overlay nil) #@60 Display the date prompt interpretation live in minibuffer. (defalias 'taskpaper-read-date-display #[nil "\205E \203\f\304 !\210\305p!\205E\212\306\210d`Z\307W\203-e`\307Z]`{\310\232\204-\310c\210)\311 d{\312\n!\313\314 S\314 \"\315 \316#*\207" [taskpaper-read-date-display-live taskpaper-read-date-overlay str txt delete-overlay minibufferp 1 3 " " point-at-bol taskpaper-expand-time-string make-overlay point-at-eol taskpaper-overlay-display secondary-selection] 4 (#$ . 91408)]) #@332 Prompt the user for a date using PROMPT. Return formatted date as string. If the user specifies a time or if the optional argument WITH-TIME is non-nil, the formatted output contains the date and the time. Otherwise, only the date is included. If optional argument TO-TIME is non-nil return the time converted to an internal time. (defalias 'taskpaper-read-date #[(&optional prompt with-time to-time) "\306\211\211\211\211\206\n\307\306\212\310 \311\216 \203%\312 \210\313 \210\314!!\314\"!#$\315\216\316!\317\320#\210\316!\321\320#\210\306%\322\323\324\"\210\322\325\326\"\210\327\306&#.\330 !'%\206f\331\332'\"()\204w*\203{%\204{\333\202|\334+,\203\210(\202\216\335+(\".\n\207" [prompt text calendar-view-holidays-initially-flag calendar-view-diary-initially-flag calendar-move-hook calendar-setup nil "Date & time: " current-window-configuration #[nil "\301!\207" [#1=#:wconfig set-window-configuration] 2] calendar calendar-goto-today copy-keymap #[nil "\303\304\305\"\210\303\306\307\"\210\n\205\310\n!\210\311\211\207" [old-map calendar-mode-map taskpaper-read-date-overlay remove-hook post-command-hook taskpaper-read-date-display after-change-functions taskpaper-read-date-recenter-calendar delete-overlay nil] 3] define-key " " taskpaper-calendar-select [mouse-1] add-hook post-command-hook taskpaper-read-date-display after-change-functions taskpaper-read-date-recenter-calendar read-string taskpaper-parse-time-string apply encode-time "%Y-%m-%d %H:%M" "%Y-%m-%d" format-time-string mouse-autoselect-window #1# taskpaper-read-date-popup-calendar calendar-mode-map taskpaper-read-date-minibuffer-local-map minibuffer-local-map old-map taskpaper-calendar-selected-date taskpaper-read-date-history date time with-time taskpaper-time-was-given fmt to-time] 7 (#$ . 91909)]) #@63 Prompt the user for a date and insert the timestamp at point. (defalias 'taskpaper-read-date-insert-timestamp #[nil "\300\301\302\303 \"!\207" [insert-before-markers format "%s" taskpaper-read-date] 4 (#$ . 93746) nil]) #@100 Return a list of buffer tag names for completion. If optional POS is inside a tag, ignore the tag. (defalias 'taskpaper-get-buffer-tags #[(&optional pos) "\306\211\212\214~\210eb\210\307 \310\216\311 \306\312#\203<\313\314\224!\203\315\316!\f\2035\317\224\fX\2035\317\225\fY\204 B\202,\320 !\321!*\320 !\322\323\",\207" [tags tag save-match-data-internal taskpaper-tag-regexp pos list nil match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] re-search-forward t taskpaper-in-tag-p 1 match-string-no-properties 2 0 copy-sequence delete-dups sort string-lessp res] 4 (#$ . 93973)]) #@185 Complete tag name or query attribute at point. Complete tag name or query attribute using completions from ATTRS. If ATTRS is not given, use tag names from the current buffer instead. (defalias 'taskpaper-complete-tag-at-point #[(&optional attrs) "\206 \306\307`!!\310\311\312\n\"\313 !\203\314\315!\202\316\317`#\310$\320 !\211%\2035\321%!\210)\313 !\204@\322\323!\210\324\f\"\211$\325=\203R\326\327!\202\273$\204^\322\330\f\"\202\273\f$\230\204t#\fGZ#|\210$c\202\273&\203\265'(r\331 !q\210p\332 \210('\310\211)*\325\211+\325,-\333 \210\334\335!\210+\211./\336\337\f\"\f\"\210\340.!\210+\341\320 !\342\".\207" [attrs completion-ignore-case taskpaper-tag-name-char-regexp re pattern completion-buffer-name taskpaper-add-tag-prefix taskpaper-get-buffer-tags nil format "@%s*" taskpaper-in-regexp match-string-no-properties 0 "" "*Completions*" get-buffer-window delete-window user-error "Nothing to complete" try-completion t message "Sole completion" "No match for %s" get-buffer-create kill-all-local-variables erase-buffer run-hooks temp-buffer-setup-hook display-completion-list all-completions internal-temp-output-buffer-show set-window-dedicated-p soft end completion window completion-auto-help default-directory #1=#:old-dir buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only #2=#:buf standard-output] 5 (#$ . 94623) "*"]) #@75 Provide fast selection interface for tags. Return selected tag specifier. (defalias 'taskpaper-fast-tag-selection #[nil "\204\306\307!\210\212\310 \311\216\312\313\314!!\210\315 \210\316\317\320\321\322\"\"\211\323\\\324 \f\245\316\211'(\316\211)*\316+\325c\210(\326'(\211A(\242\211)\203\220)@+)A\211*\203|+\203|\327\330*!\331\332#\333\334+!\335\f\336Z+GZ\337\"\261\210'T\211' U\203B\325c\210\326'\202B\340c\210eb\210\341 \210\342\343!*\344*\"\211)@\211+\203\265+\345 \210\202\274\345 \210\346\211,. \207" [taskpaper-tag-alist #1=#:wconfig show-trailing-whitespace maxlen fwidth ncol error "No predefined tags" current-window-configuration #[nil "\301!\207" [#1# set-window-configuration] 2] switch-to-buffer-other-window get-buffer-create "*TaskPaper custom tags*" erase-buffer nil apply max mapcar #[(x) "@;\203 \301@!\207\302\207" [x string-width 0] 2] 4 window-width "\n" 0 propertize char-to-string face taskpaper-fast-select-key " " taskpaper-add-tag-prefix make-string 2 32 "\n\n" fit-window-to-buffer read-char-exclusive "Press key for tag:" rassoc kill-buffer t cnt tbl e c tg quit-flag] 7 (#$ . 96051)]) #@61 Set the tag for the item at point using fast tag selection. (defalias 'taskpaper-item-set-tag-fast-select #[nil "\306\307 #\310 \311\211\312 \f\"\204\313\314\f\"\210\315\316\f\"\315\317\f\"\320 !\321\n!\211\203\\\322\323\n\"\203\\\323\n\322\"\203I\211G\311O\266\202\202K\262\211\324\232\203X\325 \202\\\326\n!\327 \n\",\207" [taskpaper-tag-name-regexp taskpaper-tag-value-regexp value name tag re format "\\`@?\\(%s\\)\\(?:(\\(%s\\))\\)?\\'" taskpaper-fast-tag-selection nil string-match error "Invalid tag specifier: %s" match-string-no-properties 1 2 taskpaper-remove-tag-prefix taskpaper-tag-value-unescape string-prefix-p "%%" "" taskpaper-read-date taskpaper-expand-time-string taskpaper-item-set-attribute] 6 (#$ . 97221) nil]) #@22 Remove tag at point. (defalias 'taskpaper-remove-tag-at-point #[nil "\301 \203\302!\203\303\224\303\225|\207\304\305!\207" [taskpaper-tag-regexp taskpaper-in-tag-p taskpaper-in-regexp 0 user-error "No tag at point."] 2 (#$ . 97985) nil]) #@37 Toggle done state of item at point. (defalias 'taskpaper-item-toggle-done #[nil "\305\267\202\306\202\306\202\307\202\310\311\312! \313\235\205R\314\315!\203*\316\315!\202R \203=\212\214\317\303\320 \"*\204=\321\322!\210\323\324\f\"\210\325\315\n\205M\326\n\327 \"\"\210\330\331!*\207" [taskpaper-complete-save-date type fmt taskpaper-blocker-hook taskpaper-tags-to-remove-when-done #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 6 date 10 time 14)) "%Y-%m-%d" "%Y-%m-%d %H:%M" nil taskpaper-item-get-attribute "type" ("task" "project") taskpaper-item-has-attribute "done" taskpaper-item-remove-attribute run-hook-with-args-until-failure point-at-bol user-error "Completing is blocked" mapc #[(tag) "\301!\207" [tag taskpaper-item-remove-attribute] 2] taskpaper-item-set-attribute format-time-string current-time run-hooks taskpaper-after-completion-hook] 5 (#$ . 98234) nil]) #@91 Return t if two arg numbers are equal. Strings are converted to numbers before comparing. (defalias 'taskpaper-num= #[(a b) "\203 \203\302!\302 ! U\207\303\207" [a b string-to-number nil] 2 (#$ . 99176)]) #@102 Return t if first arg number is less than second. Strings are converted to numbers before comparing. (defalias 'taskpaper-num< #[(a b) "\203 \203\302!\302 ! W\207\303\207" [a b string-to-number nil] 2 (#$ . 99397)]) #@114 Return t if first arg number is less than or equal to second. Strings are converted to numbers before comparing. (defalias 'taskpaper-num<= #[(a b) "\203 \203\302!\302 ! X\207\303\207" [a b string-to-number nil] 2 (#$ . 99629)]) #@105 Return t if first arg number is greater than second. Strings are converted to numbers before comparing. (defalias 'taskpaper-num> #[(a b) "\203 \203\302!\302 ! V\207\303\207" [a b string-to-number nil] 2 (#$ . 99874)]) #@117 Return t if first arg number is greater than or equal to second. Strings are converted to numbers before comparing. (defalias 'taskpaper-num>= #[(a b) "\203 \203\302!\302 ! Y\207\303\207" [a b string-to-number nil] 2 (#$ . 100109)]) #@95 Return t if two arg numbers are not equal. Strings are converted to numbers before comparing. (defalias 'taskpaper-num<> #[(a b) "\203 \203\302!\302 ! U?\207\303\207" [a b string-to-number nil] 2 (#$ . 100357)]) #@61 Return t if two arg strings are equal. Case is significant. (defalias 'taskpaper-string= #[(a b) "\203\f \203\f \230\207\302\207" [a b nil] 2 (#$ . 100584)]) #@72 Return t if first arg string is less than second. Case is significant. (defalias 'taskpaper-string< #[(a b) "\203\f \203\f \231\207\302\207" [a b nil] 2 (#$ . 100752)]) #@84 Return t if first arg string is less than or equal to second. Case is significant. (defalias 'taskpaper-string<= #[(a b) "\203 \203 \231\206 \230\207\302\207" [a b nil] 2 (#$ . 100931)]) #@75 Return t if first arg string is greater than second. Case is significant. (defalias 'taskpaper-string> #[(a b) "\203 \203 \231?\205 \230?\207\302\207" [a b nil] 2 (#$ . 101133)]) #@87 Return t if first arg string is greater than or equal to second. Case is significant. (defalias 'taskpaper-string>= #[(a b) "\203 \203  \231?\207\302\207" [a b nil] 2 (#$ . 101327)]) #@64 Return t if two arg string are not equal. Case is significant. (defalias 'taskpaper-string<> #[(a b) "\203 \203  \230?\207\302\207" [a b nil] 2 (#$ . 101521)]) #@78 Return t if first arg string matches second arg regexp. Case is significant. (defalias 'taskpaper-string-match-p #[(a b) "\203 \203\304 \304\305\306#)\266\203)\207\304\207" [a b case-fold-search inhibit-changing-match-data nil t string-match] 7 (#$ . 101692)]) #@68 Return t if first arg string contains second. Case is significant. (defalias 'taskpaper-string-contain-p #[(a b) "\203 \203\304\305 !\211\304\306\307#)\266\203)\207\304\207" [a b case-fold-search inhibit-changing-match-data nil regexp-quote t string-match] 8 (#$ . 101970)]) #@74 Return t if second arg string is a prefix of first. Case is significant. (defalias 'taskpaper-string-prefix-p #[(a b) "\203 \203 \302 \"\207\303\207" [a b string-prefix-p nil] 3 (#$ . 102263)]) #@74 Return t if second arg string is a suffix of first. Case is significant. (defalias 'taskpaper-string-suffix-p #[(a b) "\203 \203 \302 \"\207\303\207" [a b string-suffix-p nil] 3 (#$ . 102468)]) #@53 Return t if two strings are equal. Case is ignored. (defalias 'taskpaper-istring= #[(a b) "\203 \203\227 \227 \230\207\302\207" [a b nil] 2 (#$ . 102673)]) #@68 Return t if first arg string is less than second. Case is ignored. (defalias 'taskpaper-istring< #[(a b) "\203 \203\227 \227 \231\207\302\207" [a b nil] 2 (#$ . 102844)]) #@80 Return t if first arg string is less than or equal to second. Case is ignored. (defalias 'taskpaper-istring<= #[(a b) "\203 \203\227 \227 \231\206 \230\207\302\207" [a b nil] 2 (#$ . 103030)]) #@71 Return t if first arg string is greater than second. Case is ignored. (defalias 'taskpaper-istring> #[(a b) "\203 \203\227 \227 \231?\205 \230?\207\302\207" [a b nil] 2 (#$ . 103241)]) #@83 Return t if first arg string is greater than or equal to second. Case is ignored. (defalias 'taskpaper-istring>= #[(a b) "\203 \203\227 \227 \231?\207\302\207" [a b nil] 2 (#$ . 103444)]) #@60 Return t if two arg string are not equal. Case is ignored. (defalias 'taskpaper-istring<> #[(a b) "\203 \203\227 \227 \230?\207\302\207" [a b nil] 2 (#$ . 103647)]) #@74 Return t if first arg string matches second arg regexp. Case is ignored. (defalias 'taskpaper-istring-match-p #[(a b) "\203 \203\304\227 \227\211\304\305\306#)\266\203)\207\304\207" [a b case-fold-search inhibit-changing-match-data nil t string-match] 8 (#$ . 103827)]) #@64 Return t if first arg string contains second. Case is ignored. (defalias 'taskpaper-istring-contain-p #[(a b) "\203# \203#\304\227 \227\305 !\211\304\306\307#)\266\203)\207\304\207" [a b case-fold-search inhibit-changing-match-data nil regexp-quote t string-match] 8 (#$ . 104117)]) #@70 Return t if second arg string is a prefix of first. Case is ignored. (defalias 'taskpaper-istring-prefix-p #[(a b) "\203 \203\227 \227\302 \"\207\303\207" [a b string-prefix-p nil] 3 (#$ . 104419)]) #@70 Return t if second arg string is a suffix of first. Case is ignored. (defalias 'taskpaper-istring-suffix-p #[(a b) "\203 \203\227 \227\302 \"\207\303\207" [a b string-suffix-p nil] 3 (#$ . 104633)]) #@245 Return t if two arg time strings are equal. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time= #[(a b) "\203 \203 \302!\302 !\303V\205! \303V\205! U\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 104848)]) #@256 Return t if first arg time string is less than second. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time< #[(a b) "\203 \203 \302!\302 !\303V\205! \303V\205! W\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 105248)]) #@268 Return t if first arg time string is less than or equal to second. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time<= #[(a b) "\203 \203 \302!\302 !\303V\205! \303V\205! X\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 105659)]) #@259 Return t if first arg time string is greater than second. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time> #[(a b) "\203 \203 \302!\302 !\303V\205! \303V\205! V\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 106083)]) #@271 Return t if first arg time string is greater than or equal to second. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time>= #[(a b) "\203 \203 \302!\302 !\303V\205! \303V\205! Y\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 106497)]) #@249 Return t if two arg time strings are not equal. Time string are converted to a float number of seconds before numeric comparing. If any argument is a float number, it will be treated as the float number of seconds since the beginning of the epoch. (defalias 'taskpaper-time<> #[(a b) "\203! \203!\302!\302 !\303V\205\" \303V\205\" U?\207\304\207" [a b taskpaper-2ft 0 nil] 2 (#$ . 106924)]) #@107 Return t if two arg cslists are equal. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num= #[(a b) "\203 \203\302!\302 !G GU\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num= nil] 4 (#$ . 107332)]) #@118 Return t if first arg cslist is less than second. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num< #[(a b) "\203 \203\302!\302 !G GW\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num< nil] 4 (#$ . 107637)]) #@130 Return t if first arg cslist is less than of equal to second. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num<= #[(a b) "\203 \203\302!\302 !G GX\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num<= nil] 4 (#$ . 107953)]) #@121 Return t if first arg cslist is greater than second. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num> #[(a b) "\203 \203\302!\302 !G GV\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num> nil] 4 (#$ . 108283)]) #@133 Return t if first arg cslist is greater than or equal to second. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num>= #[(a b) "\203 \203\302!\302 !G GY\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num>= nil] 4 (#$ . 108602)]) #@111 Return t if two arg cslists are not equal. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num<> #[(a b) "\203 \203 \302!\302 !G GU?\206!\303\304 #?\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-num= nil] 4 (#$ . 108935)]) #@118 Return t if first arg cslist is subset of second. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num-match-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar string-to-number cl-subsetp :test equal nil] 5 (#$ . 109247)]) #@118 Return t if second arg cslist is subset of first. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num-contain-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar string-to-number cl-subsetp :test equal nil] 5 (#$ . 109610)]) #@116 Return t if second arg cslist is head of first. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num-head-p #[(a b) "\203F \203F\304!\304 !\305\306\"\305\306 \"\307\211\2039 \2039\211A\242 B \211A\242\nB\202 \205D\n\205D \n\232*\207\307\207" [a b temp2 temp1 taskpaper-attribute-value-to-list mapcar string-to-number nil] 3 (#$ . 109975)]) #@116 Return t if second arg cslist is tail of first. Each list element is converted to number before numeric comparing. (defalias 'taskpaper-cslist-num-tail-p #[(a b) "\2030 \2030\302!\302 !\303\304\"\303\304 \":\203, \232\204,A\211\202 \232\207\305\207" [a b taskpaper-attribute-value-to-list mapcar string-to-number nil] 4 (#$ . 110391)]) #@61 Return t if two arg cslists are equal. Case is significant. (defalias 'taskpaper-cslist-string= #[(a b) "\203 \203\302!\302 !G GU\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string= nil] 4 (#$ . 110751)]) #@73 Return t if first arg cslist is less than second. Case is significant. (defalias 'taskpaper-cslist-string< #[(a b) "\203 \203\302!\302 !G GW\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string< nil] 4 (#$ . 111015)]) #@84 Return t if first arg cslist is less than or equal to second. Case is significant. (defalias 'taskpaper-cslist-string<= #[(a b) "\203 \203\302!\302 !G GX\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string<= nil] 4 (#$ . 111291)]) #@76 Return t if first arg cslist is greater than second. Case is significant. (defalias 'taskpaper-cslist-string> #[(a b) "\203 \203\302!\302 !G GV\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string> nil] 4 (#$ . 111580)]) #@87 Return t if first arg cslist is greater than or equal to second. Case is significant. (defalias 'taskpaper-cslist-string>= #[(a b) "\203 \203\302!\302 !G GY\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string>= nil] 4 (#$ . 111859)]) #@65 Return t if two arg cslists are not equal. Case is significant. (defalias 'taskpaper-cslist-string<> #[(a b) "\203 \203 \302!\302 !G GU?\206!\303\304 #?\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-string= nil] 4 (#$ . 112151)]) #@72 Return t if first arg cslist is subset of second. Case is significant. (defalias 'taskpaper-cslist-string-match-p #[(a b) "\203 \203\302!\302 !\303 \304\305$\207\306\207" [a b taskpaper-attribute-value-to-list cl-subsetp :test equal nil] 5 (#$ . 112422)]) #@72 Return t if second arg cslist is subset of first. Case is significant. (defalias 'taskpaper-cslist-string-contain-p #[(a b) "\203 \203\302!\302 !\303 \304\305$\207\306\207" [a b taskpaper-attribute-value-to-list cl-subsetp :test equal nil] 5 (#$ . 112693)]) #@70 Return t if second arg cslist is head of first. Case is significant. (defalias 'taskpaper-cslist-string-head-p #[(a b) "\203< \203<\304!\304 !\305\211\203/ \203/\211A\242 B \211A\242\nB\202 \205:\n\205: \n\232*\207\305\207" [a b temp2 temp1 taskpaper-attribute-value-to-list nil] 2 (#$ . 112966)]) #@70 Return t if second arg cslist is tail of first. Case is significant. (defalias 'taskpaper-cslist-string-tail-p #[(a b) "\203& \203&\302!\302 !:\203\" \232\204\"A\211\202 \232\207\303\207" [a b taskpaper-attribute-value-to-list nil] 3 (#$ . 113290)]) #@57 Return t if two arg cslists are equal. Case is ignored. (defalias 'taskpaper-cslist-istring= #[(a b) "\203 \203\302!\302 !G GU\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring= nil] 4 (#$ . 113561)]) #@68 Return t if first arg cslist is less than second. Case is ignored. (defalias 'taskpaper-cslist-istring< #[(a b) "\203 \203\302!\302 !G GW\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring< nil] 4 (#$ . 113823)]) #@80 Return t if first arg cslist is less than or equal to second. Case is ignored. (defalias 'taskpaper-cslist-istring<= #[(a b) "\203 \203\302!\302 !G GX\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring<= nil] 4 (#$ . 114096)]) #@71 Return t if first arg cslist is greater than second. Case is ignored. (defalias 'taskpaper-cslist-istring> #[(a b) "\203 \203\302!\302 !G GV\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring> nil] 4 (#$ . 114383)]) #@83 Return t if first arg cslist is greater than or equal to second. Case is ignored. (defalias 'taskpaper-cslist-istring>= #[(a b) "\203 \203\302!\302 !G GY\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring>= nil] 4 (#$ . 114659)]) #@61 Return t if two arg cslists are not equal. Case is ignored. (defalias 'taskpaper-cslist-istring<> #[(a b) "\203 \203 \302!\302 !G GU?\206!\303\304 #?\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-istring= nil] 4 (#$ . 114949)]) #@68 Return t if first arg cslist is subset of second. Case is ignored. (defalias 'taskpaper-cslist-istring-match-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar downcase cl-subsetp :test equal nil] 5 (#$ . 115218)]) #@68 Return t if second arg cslist is subset of first. Case is ignored. (defalias 'taskpaper-cslist-istring-contain-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar downcase cl-subsetp :test equal nil] 5 (#$ . 115526)]) #@66 Return t if second arg cslist is head of first. Case is ignored. (defalias 'taskpaper-cslist-istring-head-p #[(a b) "\203F \203F\304!\304 !\305\306\"\305\306 \"\307\211\2039 \2039\211A\242 B \211A\242\nB\202 \205D\n\205D \n\232*\207\307\207" [a b temp2 temp1 taskpaper-attribute-value-to-list mapcar downcase nil] 3 (#$ . 115836)]) #@66 Return t if second arg cslist is tail of first. Case is ignored. (defalias 'taskpaper-cslist-istring-tail-p #[(a b) "\2030 \2030\302!\302 !\303\304\"\303\304 \":\203, \232\204,A\211\202 \232\207\305\207" [a b taskpaper-attribute-value-to-list mapcar downcase nil] 4 (#$ . 116197)]) #@108 Return t if two arg cslists are equal. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time= #[(a b) "\203 \203\302!\302 !G GU\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time= nil] 4 (#$ . 116504)]) #@119 Return t if first arg cslist is less than second. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time< #[(a b) "\203 \203\302!\302 !G GW\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time< nil] 4 (#$ . 116812)]) #@131 Return t if first arg cslist is less than or equal to second. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time<= #[(a b) "\203 \203\302!\302 !G GX\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time<= nil] 4 (#$ . 117131)]) #@122 Return t if first arg cslist is greater than second. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time> #[(a b) "\203 \203\302!\302 !G GV\206\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time> nil] 4 (#$ . 117464)]) #@134 Return t if first arg cslist is greater than or equal to second. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time>= #[(a b) "\203 \203\302!\302 !G GY\205\303\304 #\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time>= nil] 4 (#$ . 117786)]) #@112 Return t if two arg cslists are not equal. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time<> #[(a b) "\203 \203 \302!\302 !G GU?\206!\303\304 #?\207\305\207" [a b taskpaper-attribute-value-to-list cl-every taskpaper-time= nil] 4 (#$ . 118122)]) #@119 Return t if first arg cslist is subset of second. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time-match-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar taskpaper-2ft cl-subsetp :test equal nil] 5 (#$ . 118437)]) #@119 Return t if second arg cslist is subset of first. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time-contain-p #[(a b) "\203! \203!\302!\302 !\303\304\"\303\304 \"\305 \306\307$\207\310\207" [a b taskpaper-attribute-value-to-list mapcar taskpaper-2ft cl-subsetp :test equal nil] 5 (#$ . 118799)]) #@117 Return t if second arg cslist is tail of first. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time-head-p #[(a b) "\203F \203F\304!\304 !\305\306\"\305\306 \"\307\211\2039 \2039\211A\242 B \211A\242\nB\202 \205D\n\205D \n\232*\207\307\207" [a b temp2 temp1 taskpaper-attribute-value-to-list mapcar taskpaper-2ft nil] 3 (#$ . 119163)]) #@117 Return t if second arg cslist is tail of first. Each list element is converted to time value before time comparing. (defalias 'taskpaper-cslist-time-tail-p #[(a b) "\2030 \2030\302!\302 !\303\304\"\303\304 \":\203, \232\204,A\211\202 \232\207\305\207" [a b taskpaper-attribute-value-to-list mapcar taskpaper-2ft nil] 4 (#$ . 119578)]) #@783 Sort items on a certain level. When point is at the beginning of the buffer, sort the top-level items. Else, the children of the current item are sorted. The GETKEY-FUNC specifies a function to be called with point at the beginning of the item. It must return either a string or a number that should serve as the sorting key for that item. The COMPARE-FUNC specifies a function to compare the sorting keys; it is called with two arguments, the sorting keys, and should return non-nil if the first key should sort before the second. Comparing items ignores case by default. However, with an optional argument WITH-CASE, the sorting considers case as well. The optional argument REVERSE will reverse the sort order. When sorting is done, call `taskpaper-after-sorting-items-hook'. (defalias 'taskpaper-sort-items-generic #[(getkey-func compare-func &optional with-case reverse) "deZ\306 U\204 ~\210\203\307\202\310\311\211o\203?`db\210n\204,\312\210\313 \210d\nb\210\314 \210\315 \204f\316 \210\202f`\317 \210\311f\320=\203Q\312u\210\202[n\204[\312\210\313 \210`\nb\210\321 \210\316 \210\n Y\203s\nb\210\322\323!\210\324\325!\210\214\n }\210\311\211\326\327\330\331\311&\210.\332\333!\210\324\334!\207" [with-case end begin case-func temp case-fold-search buffer-size identity downcase nil 1 newline taskpaper-outline-show-all outline-on-heading-p taskpaper-outline-next-item taskpaper-outline-end-of-subtree 10 taskpaper-outline-show-subtree user-error "Nothing to sort" message "Sorting items..." sort-subr #[nil "\300\301\302\303#\203\f\304\224b\207db\207" [re-search-forward "^[ ]*[^ \n]" nil t 0] 4] #[nil "\301 \302\216\3031\304\305!0\202\210db*\207" [save-match-data-internal match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] (error) taskpaper-outline-forward-same-level 1] 2] #[nil " \211;\203\f\n ! \207" [getkey-func temp case-func] 3] run-hooks taskpaper-after-sorting-items-hook "Sorting items...done" reverse compare-func] 7 (#$ . 119938)]) #@151 Return sorting key of item at point for alphabetical sorting. Remove indentation, type formatting and inline markup and return sorting key as string. (defalias 'taskpaper-item-sorting-key-alpha #[nil "\301 \302 {\303!\304!\305!\211)\207" [item line-beginning-position line-end-position taskpaper-remove-markup-chars taskpaper-remove-indentation taskpaper-remove-type-formatting] 3 (#$ . 121981)]) #@58 Return sorting key of item at point for sorting by type. (defalias 'taskpaper-item-sorting-key-type #[nil "\302\303!\304\305 \"A*\207" [prec type taskpaper-item-get-attribute "type" (("project" . 3) ("task" . 2) ("note" . 1)) assoc] 3 (#$ . 122391)]) #@156 Return sorting key of item string STR for alphabetical sorting. Like `taskpaper-item-sorting-key-alpha' but uses argument string instead of item at point. (defalias 'taskpaper-string-sorting-key-alpha #[(str) "\303\304\305\"rq\210\306\216\307 \210 c\210\310\302!\210\305\311 \210)\312\311!\210\313ed\314#\210eb\210\315 +\207" [#1=#:temp-buffer str delay-mode-hooks generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer make-local-variable taskpaper-mode font-lock-default-function font-lock-default-fontify-region nil taskpaper-item-sorting-key-alpha] 4 (#$ . 122652)]) #@150 Return sorting key of item string STR for sorting by type. Like `taskpaper-item-sorting-key-type' but uses argument string instead of item at point. (defalias 'taskpaper-string-sorting-key-type #[(str) "\302\303\304\"rq\210\305\216\306 \210 c\210eb\210\307 +\207" [#1=#:temp-buffer str generate-new-buffer " *temp*" t #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] erase-buffer taskpaper-item-sorting-key-type] 3 (#$ . 123287)]) #@106 Sort items on a certain level alphabetically. The optional argument REVERSE will reverse the sort order. (defalias 'taskpaper-sort-alpha #[(&optional reverse) "\301\302\303\304$\207" [reverse taskpaper-sort-items-generic (lambda nil (taskpaper-item-sorting-key-alpha)) taskpaper-string< nil] 5 (#$ . 123742) "P"]) #@175 Sort items on a certain level by type. Tasks will be sorted before notes and projects will be sorted before tasks. The optional argument REVERSE will reverse the sort order. (defalias 'taskpaper-sort-by-type #[(&optional reverse) "\301\302\303\304$\207" [reverse taskpaper-sort-items-generic (lambda nil (taskpaper-item-sorting-key-type)) > nil] 5 (#$ . 124064) "P"]) #@211 Return the outline path to the item at point. An outline path is a list of ancestors for the current item, in reverse order, as a list of strings. When SELF is non-nil, the path also includes the current item. (defalias 'taskpaper-item-get-outline-path #[(&optional self) "\305\211\212\306\307!\210\n\203\310\311!\211B\3121 \306\307!0\202$\210\202I\203I S\211\313V\205:\314\315\316\fS\"\305\307#)\203I\310\311!\211B\202)*\207" [olpath item self outline-level level-up nil outline-back-to-heading t taskpaper-item-get-attribute "text" (error) 0 re-search-backward format "^[ ]\\{0,%d\\}[^ \n]"] 5 (#$ . 124440)]) #@50 Format the outline path entry ENTRY for display. (defalias 'taskpaper-format-olpath-entry #[(entry) "\301!\302!\303\304\305#\211\207" [entry taskpaper-remove-type-formatting taskpaper-remove-trailing-tags replace-regexp-in-string "/" ":"] 5 (#$ . 125079)]) #@188 Format the outline path OLPATH for display. PREFIX is a prefix to be included in the returned string. SEPARATOR is inserted between the different entries of the path, the default is "/". (defalias 'taskpaper-format-outline-path #[(olpath &optional prefix separator) "\303\304\" \206\n\305\n\306\307 #P\207" [olpath separator prefix delq nil "/" mapconcat taskpaper-format-olpath-entry] 5 (#$ . 125349)]) #@174 Display the current outline path in the echo area. PREFIX is a prefix to be included in the displayed output. When SELF is non-nil, the path also includes the current item. (defalias 'taskpaper-item-display-outline-path #[(&optional prefix self) "\303 \205\304\212\214~\210\305\306 !\n\"*\307\310\")\207" [olpathf self prefix outline-on-heading-p nil taskpaper-format-outline-path taskpaper-item-get-outline-path taskpaper-unlogged-message "%s"] 3 (#$ . 125765) nil]) #@276 Produce a table with possible outline targets. Return a list of (OLPATH . POS) elements where OLPATH is the formatted outline path as string and POS is the corresponding buffer position. EXCLUDED-ENTRIES is a list of OLPATH elements, which will be excluded from the results. (defalias 'taskpaper-goto-get-targets #[(&optional excluded-entries) "\305P\306\211\212\214~\210eb\210\307\310!\210\311 \306\312#\2035\313\314\312!!\211\203\n\f\235\204\n\315 B B\202*\307\316!\210 \237+\207" [outline-regexp targets target re excluded-entries "^" nil message "Get targets..." re-search-forward t taskpaper-format-outline-path taskpaper-item-get-outline-path point-at-bol "Get targets...done"] 5 (#$ . 126245)]) #@251 Prompt the user for a location, using PROMPT. Return a cons cell (OLPATH . POS) where OLPATH is the formatted outline path as string and POS is the corresponding buffer position. When NO-EXCLUDE is set, do not exclude entries in the current subtree. (defalias 'taskpaper-goto-get-location #[(&optional prompt no-exclude) "\206\306\307\211\211\310 \203\f\204\311\312!\210\313 !\211\204%\314\315!\210\307\316\317\n\307\316$\320 \n\".\207" [prompt target targets excluded-entries no-exclude completion-ignore-case "Path: " nil outline-on-heading-p taskpaper-outline-map-tree #[nil "\301\302\303\304!!C\"\211\207" [excluded-entries append taskpaper-format-outline-path taskpaper-item-get-outline-path t] 5] taskpaper-goto-get-targets user-error "No targets" t completing-read assoc partial-completion-mode] 6 (#$ . 126967)]) #@46 Prompt the user for a location and go to it. (defalias 'taskpaper-goto #[nil "\302\303\304\"\211A~\210 b\210\305 \210\306 *\207" [loc pos taskpaper-goto-get-location "Goto: " t back-to-indentation taskpaper-outline-show-context] 4 (#$ . 127815) nil]) #@89 Duplicate the current subtree. Paste a copy of the current subtree as its next sibling. (defalias 'taskpaper-clone-subtree #[nil "\303\211\212\304 \305\216\306 \210`\307 \210\303f\310=\203\311u\210\202)n\204)\311\210\312 \210`\313 {!-\207" [end begin save-match-data-internal nil match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] outline-back-to-heading taskpaper-outline-end-of-subtree 10 1 newline insert-before-markers] 3 (#$ . 128074) nil]) #@91 Copy the current subtree into the kill ring. If CUT is non-nil, actually cut the subtree. (defalias 'taskpaper-copy-subtree #[(&optional cut) "\304\211\212\305 \306\216\307 \210`\310 \210\304f\311=\203\312u\210\202)n\204)\312\210\313 \210` \2036\314 \"\202:\315 \"-\207" [end begin save-match-data-internal cut nil match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] outline-back-to-heading taskpaper-outline-end-of-subtree 10 1 newline kill-region copy-region-as-kill] 3 (#$ . 128576) nil]) #@56 Cut the current subtree and put it into the kill ring. (defalias 'taskpaper-cut-subtree #[nil "\300\301!\207" [taskpaper-copy-subtree cut] 2 (#$ . 129126) nil]) #@252 Check if the current kill is a valid subtree. Return nil if the first item level is not the largest item level in the tree. So this will actually accept a set of subtrees as well. If optional TXT string is given, check it instead of the current kill. (defalias 'taskpaper-kill-is-subtree-p #[(&optional txt) "\306 \307\216 \206\n\203\310\311!\206\312\211\205%\313\314 \"\205%\315\225\315\224Z\315\224\206,\316T\f\205U\3172U\313\320 T#\211\203S\315\225\315\224Z\fW\2036\321\317\322\"\210\2026\3230-\207" [save-match-data-internal txt kill-ring kill start-level start match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] current-kill 0 "" string-match "\\`\\([ ]*[^ \n]\\)" 1 -1 exit "^\\([ ]*[^ \n]\\)" throw nil t] 5 (#$ . 129294)]) #@395 Paste the current kill as a subtree, with modification of level. If point is on a (possibly invisible) item, paste as child of the current item. You can force a different level by using a numeric prefix argument. If optional TEXT is given, use this text instead of the current kill. Place point at the beginning of pasted subtree. When REMOVE is non-nil, remove the subtree from the kill ring. (defalias 'taskpaper-paste-subtree #[(&optional level text remove) "\206 \205 \306\307!\211\204\310\311!\210\312!\204\310\313!\210\314\315\"\203-\316\225\316\224Z\202.\316\317\320!\203@\321 \322\216\f *\202A\307\"\205K\323\"!\211#\206W T\206W\316\211$\nZ\211%\307V\203h\324\202i\316&%\307V\203v\325\202w\326'\327\211()\330\331!\210n\204\215\316\210\332 \210`(\333!\210\334\327\320*\314#)\266\203\204\250\332 \210`)%\307U\204\331\214()}\210%\307U\204\322\335'ed#\210&%\\\211%\202\273eb\210d))(b\210\336\337!\203\351\340\341$\"\210. +\205\364 A\211\207" [text kill-ring old-level save-match-data-internal outline-level cur-level current-kill 0 user-error "Nothing to paste" taskpaper-kill-is-subtree-p "The text is not a (set of) tree(s)" string-match "^\\([ ]*[^ \n]\\)" 1 outline-on-heading-p t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] prefix-numeric-value -1 taskpaper-outline-demote taskpaper-outline-promote nil beginning-of-line 2 newline insert-before-markers "\n\\'" taskpaper-outline-map-region called-interactively-p any message "Clipboard pasted as level %d subtree." level force-level new-level shift delta func begin end inhibit-changing-match-data remove] 8 (#$ . 130091) "P"]) #@343 Move the subtree at point to another (possibly invisible) location. The subtree is filed below the target location as a subitem. Depending on `taskpaper-reverse-note-order', it will be either the first or last subitem. If ARG is non-nil, just copy the subtree. RFLOC can be a refile location in form (OLPATH POS) obtained in a different way. (defalias 'taskpaper-refile-subtree #[(&optional arg rfloc) "\206\306\307 \"\211@\nA@\307 \204/\f\203/\f`Y\203/\f\212\310 \210`)W\203/\311\312!\210\313 \210\212~\210\fb\210\314\315!\210\316 \317\216 *\204O\310 \210\320 T!\210) \204\\\321 \210\322\323!\205f\324\325 \",\207" [rfloc arg loc path pos level taskpaper-goto-get-location nil taskpaper-outline-end-of-subtree error "Cannot refile to item inside the current subtree" taskpaper-copy-subtree outline-back-to-heading t match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-paste-subtree taskpaper-cut-subtree called-interactively-p any message "Subtree refiled to %s." save-match-data-internal outline-level taskpaper-reverse-note-order] 4 (#$ . 131795) nil]) #@144 Copy the subtree at point to another location. Copying works like refiling, except that the subtree is not deleted from the original location. (defalias 'taskpaper-refile-subtree-copy #[nil "\300\301!\207" [taskpaper-refile-subtree t] 2 (#$ . 132927) nil]) #@169 Extract and expand the file name from archive LOCATION. Return file name for archive file. If LOCATION is not given, the value of `taskpaper-archive-location' is used. (defalias 'taskpaper-extract-archive-file #[(&optional location) "\206 \302\303\"\205*\304\224\304\225U\203\305\306 !\207\307\310\311\304\"\312\313\305\306 !!!\"!\207" [location taskpaper-archive-location string-match "\\(.*\\)::\\(.*\\)" 1 buffer-file-name buffer-base-buffer expand-file-name format match-string-no-properties file-name-sans-extension file-name-nondirectory] 7 (#$ . 133191)]) #@121 Extract the heading from archive LOCATION. If LOCATION is not given, the value of `taskpaper-archive-location' is used. (defalias 'taskpaper-extract-archive-heading #[(&optional location) "\206 \302\303\"\205\304\305\306\"\307\310\311\312 !!!\"\207" [location taskpaper-archive-location string-match "\\(.*\\)::\\(.*\\)" format match-string-no-properties 2 file-name-sans-extension file-name-nondirectory buffer-file-name buffer-base-buffer] 6 (#$ . 133770)]) #@132 Get project hierarchy for the item at point. Return formatted project hierarchy as string or nil, if there are no parent projects. (defalias 'taskpaper-archive-get-project #[nil "\304\211\212\214~\210\305\306!\210\3071\305\306!0\202\210\202H\203H\n S\211\310V\2051\311\312\313 S\"\304\306#)\203H\314\315!\316\232\203\f\314\317!\211B\202\f*\205P\320!*\207" [projects project outline-level level-up nil outline-back-to-heading t (error) 0 re-search-backward format "^[ ]\\{0,%d\\}[^ \n]" taskpaper-item-get-attribute "type" "project" "text" taskpaper-format-outline-path] 5 (#$ . 134245)]) #@353 Move the current subtree to the archive location. The archive can be a certain top-level heading in the current file, or in a different file. For details see the variable `taskpaper-archive-location'. The subtree is filed below the archive heading as a subitem. Depending on `taskpaper-reverse-note-order', it will be either the first or last subitem. (defalias 'taskpaper-archive-subtree #[nil "p\306\307\310 !\206\f\311\312!!\313\211\211\211\2111\3142!\3152!\f\204,\311\316!\210\fG\317V\203@\320\f!\206<\321\f!\202Bp\n\204K\311\322\f\"\210\212\323 \324 \210\nq\210\325\326!\204_\327\326!\210~\210eb\210\330 \210 ;\203\272 G\317V\203\272\331\332\333\334 !\"\313\335#\203\207\317\225b\210\202\234db\210\336 \210n\204\227\337\210\340 \210 \341\261\210\342 \210\343 3\344\2164 *5\204\262\345 \210\346T!\210\202\315db\210\336 \210n\204\312\337\210\340 \210\346 \2106\203\333 \203\333\347\350 \"\2101\n=\204\345\351 \210)\352\353!\210\313\21178\3357\354 \21087. \355\356!\205\357\360!\207" [level project buffer heading afile file abbreviate-file-name buffer-file-name buffer-base-buffer error "No file associated to buffer" nil taskpaper-extract-archive-file taskpaper-extract-archive-heading "Invalid `taskpaper-archive-location'" 0 find-buffer-visiting find-file-noselect "Cannot access file: %s" taskpaper-archive-get-project taskpaper-copy-subtree derived-mode-p taskpaper-mode call-interactively taskpaper-outline-show-all re-search-forward format "^%s" regexp-quote t delete-blank-lines 1 newline "\n" outline-back-to-heading match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-outline-end-of-subtree taskpaper-paste-subtree taskpaper-item-set-attribute "project" save-buffer run-hooks taskpaper-archive-hook taskpaper-cut-subtree called-interactively-p any message "Subtree archived." this-buffer taskpaper-archive-location save-match-data-internal outline-level taskpaper-reverse-note-order taskpaper-archive-save-context this-command old-this-command] 7 (#$ . 134859) nil]) #@479 Add entry TEXT to LOCATION in FILE. When FILE is specified, visit it and set this buffer as target buffer, otherwise fall back to the current buffer. Prompt user for entry TEXT and add it as child of the top-level LOCATION item. The entry is filed below the target location as a subitem. Depending on `taskpaper-reverse-note-order', it will be either the first or last subitem. When the location is omitted, the item is simply filed at the end of the file, as top-level item. (defalias 'taskpaper-add-entry #[(&optional text location file) "\206\306\307!p\310\211\311!\204\312\313!\210\f;\2031\fG\314V\2031\315\f!\206-\316\f!\2023p\n\204<\317\320\f\"\210r\nq\210\321\322!\204I\322 \210~\210eb\210\323 \210 ;\203\245 G\314V\203\245\324\325\326\327 !\"\310\330#\203q\314\225b\210\202\206db\210\331 \210n\204\201\332\210\333 \210 \334\261\210\335 \210\336 '\337\216( *)\204\234\340 \210\341 T\"\210\202\272db\210\331 \210n\204\265\332\210\333 \210\341\310\"\210 \n=\204\303\342 \210-\343\344!\205\315\345\346!\207" [text level buffer this-buffer file location read-string "Entry: " nil taskpaper-kill-is-subtree-p user-error "The text is not a (set of) tree(s)" 0 find-buffer-visiting find-file-noselect error "Cannot access file: %s" derived-mode-p taskpaper-mode taskpaper-outline-show-all re-search-forward format "^%s" regexp-quote t delete-blank-lines 1 newline "\n" outline-back-to-heading match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] taskpaper-outline-end-of-subtree taskpaper-paste-subtree save-buffer called-interactively-p any message "Entry added." save-match-data-internal outline-level taskpaper-reverse-note-order] 5 (#$ . 136943) nil]) #@42 List of overlays used for occur matches. (defvar taskpaper-occur-highlights nil (#$ . 138681)) (make-variable-buffer-local 'taskpaper-occur-highlights) #@30 Highlight from BEGIN to END. (defalias 'taskpaper-occur-add-highlights #[(begin end) "\304 \"\305\n\306\307#\210\305\n\310\311#\210\n B\211)\207" [begin end overlay taskpaper-occur-highlights make-overlay overlay-put face secondary-selection taskpaper-type taskpaper-occur] 4 (#$ . 138839)]) #@46 Remove the occur highlights from the buffer. (defalias 'taskpaper-occur-remove-highlights #[(&optional _begin _end) "\301\302\"\210\303\211\207" [taskpaper-occur-highlights mapc delete-overlay nil] 3 (#$ . 139140) nil]) #@81 Make a sparse tree showing items matching REGEXP. Return the number of matches. (defalias 'taskpaper-occur #[(&optional regexp) "\206\302\303!\211\304\232\203\305\306!\210\307 \210\310ed\311#\210eb\210\312\313\314\311#\2038 T\315\312\224\312\225\"\210\316 \210\202 \317\320\307\314\321$\210\322\323!\203U\324\325 \211\326U\203R\327\202S\330#\210 )\207" [regexp cnt read-regexp "Regexp: " "" user-error "Regexp cannot be empty" taskpaper-occur-remove-highlights outline-flag-region t 0 re-search-forward nil taskpaper-occur-add-highlights taskpaper-outline-show-context add-hook before-change-functions local called-interactively-p any message "%d %s" 1 "match" "matches"] 6 (#$ . 139368) nil]) #@208 Function for `next-error-function' to find sparse tree matches. N is the number of matches to move, when negative move backwards. This function always goes back to the starting point when no match is found. (defalias 'taskpaper-occur-next-match #[(&optional n _reset) "\305W\203\ne\202 d\305W\203\306\202\307\310!`\311\3122a\n`\313\"\211\203Z\f \232\203: b\210\314\315!\210\316\f\313\"\317=\203TS\211\305U\203T\fb\210\320\312`\"\210\fb\210\202$\fb\210\314\315!0-\207" [n limit search-func pos p1 0 previous-single-char-property-change next-single-char-property-change abs nil exit taskpaper-type user-error "No more matches" get-char-property taskpaper-occur throw] 4 (#$ . 140083)]) #@36 Regular expression for whitespace. (defconst taskpaper-query-whitespace-regexp "\\`[ \n ]*" (#$ . 140796)) #@35 Regular expression for attribute. (defconst taskpaper-query-attribute-regexp (format "\\(@%s+\\)" taskpaper-tag-name-char-regexp) (#$ . 140910)) #@54 Regular expression for non-word relational operator. (defconst taskpaper-query-operator-regexp "\\([<>~!]=\\|[<>=]\\)" (#$ . 141061)) #@45 Regular expression for relational modifier. (defconst taskpaper-query-modifier-regexp "\\(\\[\\(?:[isnd]l?\\|l\\)\\]\\)" (#$ . 141201)) #@46 Regular expression for double-quoted string. (defconst taskpaper-query-quoted-string-regexp "\\(\"\\(?:\\\\\"\\|[^\"]\\)*\"\\)" (#$ . 141343)) #@30 Regular expression for word. (defconst taskpaper-query-word-regexp "\\([^][@<>=~!()\" \n ]+\\)" (#$ . 141492)) #@29 Valid query word operators. (defconst taskpaper-query-word-operator '("and" "or" "not" "contains" "beginswith" "endswith" "matches") (#$ . 141610)) #@33 Valid query non-word operators. (defconst taskpaper-query-non-word-operator '("=" "<" ">" "<=" ">=" "!=" "~=") (#$ . 141764)) #@29 Valid query type shortcuts. (defconst taskpaper-query-word-shortcut '("project" "task" "note") (#$ . 141896)) #@35 Valid query relational operators. (defconst taskpaper-query-relation-operator '("=" "<" ">" "<=" ">=" "!=" "~=" "contains" "beginswith" "endswith" "matches") (#$ . 142012)) #@33 Valid query relation modifiers. (defconst taskpaper-query-relation-modifier '("[i]" "[s]" "[n]" "[d]" "[l]" "[il]" "[sl]" "[nl]" "[dl]") (#$ . 142191)) #@29 Valid Boolean NOT operator. (defconst taskpaper-query-boolean-not '("not") (#$ . 142349)) #@33 Valid Boolean binary operators. (defconst taskpaper-query-boolean-binary '("and" "or") (#$ . 142445)) #@45 Regular expression for opening parenthesis. (defconst taskpaper-query-lparen-regexp "\\((\\)" (#$ . 142553)) #@45 Regular expression for closing parenthesis. (defconst taskpaper-query-rparen-regexp "\\()\\)" (#$ . 142668)) #@34 Opening and closing parentheses. (defconst taskpaper-query-lparen-rparen '("(" ")") (#$ . 142783)) #@47 Return non-nil if TOKEN is a valid attribute. (defalias 'taskpaper-query-attribute-p #[(token) "\304\305\"\n;\205 \n\306\307\310#)\266\203)\207" [taskpaper-query-attribute-regexp re token inhibit-changing-match-data format "\\`%s\\'" nil t string-match] 7 (#$ . 142888)]) #@57 Return non-nil if TOKEN is a valid relational operator. (defalias 'taskpaper-query-relation-operator-p #[(token) ";\205 \235\207" [token taskpaper-query-relation-operator] 2 (#$ . 143174)]) #@57 Return non-nil if TOKEN is a valid relational modifier. (defalias 'taskpaper-query-relation-modifier-p #[(token) ";\205 \235\207" [token taskpaper-query-relation-modifier] 2 (#$ . 143374)]) #@51 Return non-nil if TOKEN is a valid word operator. (defalias 'taskpaper-query-word-operator-p #[(token) ";\205 \235\207" [token taskpaper-query-word-operator] 2 (#$ . 143574)]) #@58 Return non-nil if TOKEN is a valid Boolean NOT operator. (defalias 'taskpaper-query-boolean-not-p #[(token) ";\205 \235\207" [token taskpaper-query-boolean-not] 2 (#$ . 143760)]) #@61 Return non-nil if TOKEN is a valid Boolean binary operator. (defalias 'taskpaper-query-boolean-binary-p #[(token) ";\205 \235\207" [token taskpaper-query-boolean-binary] 2 (#$ . 143949)]) #@53 Return non-nil if TOKEN is the opening parenthesis. (defalias 'taskpaper-query-lparen-p #[(token) ";\205\301\232\207" [token "("] 2 (#$ . 144147)]) #@53 Return non-nil if TOKEN is the closing parenthesis. (defalias 'taskpaper-query-rparen-p #[(token) ";\205\301\232\207" [token ")"] 2 (#$ . 144305)]) #@51 Return non-nil if TOKEN is a valid type shortcut. (defalias 'taskpaper-query-type-shortcut-p #[(token) ";\205 \235\207" [token taskpaper-query-word-shortcut] 2 (#$ . 144463)]) #@49 Return non-nil if TOKEN is a valid search term. (defalias 'taskpaper-query-search-term-p #[(token) ";\205,\301!?\205,\302!?\205,\303!?\205,\304!?\205,\305!?\205,\306!?\207" [token taskpaper-query-attribute-p taskpaper-query-word-operator-p taskpaper-query-relation-operator-p taskpaper-query-relation-modifier-p taskpaper-query-lparen-p taskpaper-query-rparen-p] 2 (#$ . 144649)]) #@147 Read query string STR into tokens. Return list of substrings. Each substring is a run of valid characters repsesenting different types ot tokens. (defalias 'taskpaper-query-read-tokenize #[(str) "\306\307\211\211\fG\306V\203\305\310 \f\"\203\311\312\307\211\f$\fG\306U\204\313\f!\314=\203Z\310\315\"P\f\"\203S\316\317\f\"\311\312\307\211\f$\203L\nB\307 \nB\202\320\321!\210\202\313\f!\322>\203\220\310\315#P\f\"\203\211\316\317\f\"\311\312\307\211\f$\203\202\nB\307 \nB\202\320\323!\210\202\313\f!\324=\203\306\310\315$P\f\"\203\277\316\317\f\"\311\312\307\211\f$\203\270\nB\307 \nB\202\320\325!\210\202\313\f!\326=\203\377\310\315%P\f\"\203\370\316\317\f\"\311\312\307\211\f$\203\356\nB\307 T \nB\202\320\327!\210\202\313\f!\330=\203E\310\315&P\f\"\203>\316\317\f\"\311\312\307\211\f$\203'\nB\307 \306U\2034\320\331!\210\2027 S \nB\202\320\332!\210\202\313\f!\333=\203{\310\315'P\f\"\203t\316\317\f\"\311\312\307\211\f$\203m\nB\307 \nB\202\320\334!\210\202\310\315(P\f\"\203\276\316\317\f\"\311\312\307\211\f$\335 !\204\235\336 !\203\256\203\247\nB\307 \nB\202\203\271\337 Q\202\272 \202\320\340!\210\202\203\315\nB \306V\203\327\320\341!\210\n\237,\207" [st val tokens depth str taskpaper-query-whitespace-regexp 0 nil string-match replace-match "" string-to-char 64 "\\`" match-string-no-properties 1 error "Error while reading attribute" (60 62 61 33 126) "Error while reading relational operator" 91 "Error while reading relational modifier" 40 "Error while reading opening parenthesis" 41 "Unbalanced closing parenthesis" "Error while reading closing parenthesis" 34 "Error while reading quoted string" taskpaper-query-word-operator-p taskpaper-query-type-shortcut-p " " "Error while reading word" "Unbalanced opening parenthesis" taskpaper-query-attribute-regexp taskpaper-query-operator-regexp taskpaper-query-modifier-regexp taskpaper-query-lparen-regexp taskpaper-query-rparen-regexp taskpaper-query-quoted-string-regexp taskpaper-query-word-regexp] 5 (#$ . 145050)]) #@34 Expand type shortcuts in TOKENS. (defalias 'taskpaper-query-expand-type-shortcuts #[(tokens) "\305\211\211\211\f\203O\f\211A\242\f@\306 !\203F\307\n!\204F\310\n!\204F\305\311B\312B B \203\313 !\204\314B\202  B\202\237,\207" [expanded next prev token tokens nil taskpaper-query-type-shortcut-p taskpaper-query-relation-operator-p taskpaper-query-relation-modifier-p "@type" "=" taskpaper-query-boolean-binary-p "and"] 4 (#$ . 147166)]) #@64 Convert relational operator OP and modifier MOD into function. (defalias 'taskpaper-query-relop-to-func #[(op &optional mod) "\302\267\2020 \303\267\202\304\207\305\207\306\207\307\207\310\207\310\207\311\207\312\207\313\207\304\207 \314\267\2028\315\207\316\207\317\207\320\207\321\207\321\207\322\207\323\207\324\207\315\207 \325\267\202R\326\207\327\207\330\207\331\207\332\207\332\207\333\207\334\207\335\207\326\207 \336\267\202l\337\207\340\207\341\207\342\207\343\207\343\207\344\207\345\207\346\207\337\207 \347\267\202\206\350\207\351\207\352\207\353\207\354\207\354\207\355\207\356\207\357\207\350\207 \360\267\202\240\361\207\362\207\363\207\364\207\365\207\365\207\366\207\367\207\370\207\361\207 \371\267\202\266\372\207\373\207\374\207\374\207\375\207\376\207\377\207\372\207 \201@\267\202\334\201A\207\201B\207\201C\207\201C\207\201D\207\201E\207\201F\207\201A\207 \201G\267\202\201H\207\201I\207\201J\207\201J\207\201K\207\201L\207\201M\207\201H\207 \201N\267\202,\201O\207\201P\207\201Q\207\201Q\207\201R\207\201S\207\201T\207\201O\207\201U\201V\"\207" [op mod #s(hash-table size 11 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("=" 6 "<" 32 "<=" 58 ">" 84 ">=" 110 "!=" 136 "contains" 162 "beginswith" 184 "endswith" 224 "matches" 264 "~=" 264)) #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 12 "s" 14 "n" 16 "d" 18 "l" 20 "il" 22 "sl" 24 "nl" 26 "dl" 28)) taskpaper-istring= taskpaper-string= taskpaper-num= taskpaper-time= taskpaper-cslist-istring= taskpaper-cslist-string= taskpaper-cslist-num= taskpaper-cslist-time= #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 38 "s" 40 "n" 42 "d" 44 "l" 46 "il" 48 "sl" 50 "nl" 52 "dl" 54)) taskpaper-istring< taskpaper-string< taskpaper-num< taskpaper-time< taskpaper-cslist-istring< taskpaper-cslist-string< taskpaper-cslist-num< taskpaper-cslist-time< #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 64 "s" 66 "n" 68 "d" 70 "l" 72 "il" 74 "sl" 76 "nl" 78 "dl" 80)) taskpaper-istring<= taskpaper-string<= taskpaper-num<= taskpaper-time<= taskpaper-cslist-istring<= taskpaper-cslist-string<= taskpaper-cslist-num<= taskpaper-cslist-time<= #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 90 "s" 92 "n" 94 "d" 96 "l" 98 "il" 100 "sl" 102 "nl" 104 "dl" 106)) taskpaper-istring> taskpaper-string> taskpaper-num> taskpaper-time> taskpaper-cslist-istring> taskpaper-cslist-string> taskpaper-cslist-num> taskpaper-cslist-time> #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 116 "s" 118 "n" 120 "d" 122 "l" 124 "il" 126 "sl" 128 "nl" 130 "dl" 132)) taskpaper-istring>= taskpaper-string>= taskpaper-num>= taskpaper-time>= taskpaper-cslist-istring>= taskpaper-cslist-string>= taskpaper-cslist-num>= taskpaper-cslist-time>= #s(hash-table size 9 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 142 "s" 144 "n" 146 "d" 148 "l" 150 "il" 152 "sl" 154 "nl" 156 "dl" 158)) taskpaper-istring<> taskpaper-string<> taskpaper-num<> taskpaper-time<> taskpaper-cslist-istring<> taskpaper-cslist-string<> taskpaper-cslist-num<> taskpaper-cslist-time<> #s(hash-table size 7 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 168 "s" 170 "l" 172 "il" 174 "sl" 176 "nl" 178 "dl" 180)) taskpaper-istring-contain-p taskpaper-string-contain-p taskpaper-cslist-istring-contain-p taskpaper-cslist-string-contain-p taskpaper-cslist-num-contain-p taskpaper-cslist-time-contain-p #s(hash-table size 7 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 192 "s" 196 "l" 200 "il" 204 "sl" 208 "nl" 212 "dl" 216)) taskpaper-istring-prefix-p taskpaper-string-prefix-p taskpaper-cslist-istring-head-p taskpaper-cslist-string-head-p taskpaper-cslist-num-head-p taskpaper-cslist-time-head-p #s(hash-table size 7 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 232 "s" 236 "l" 240 "il" 244 "sl" 248 "nl" 252 "dl" 256)) taskpaper-istring-suffix-p taskpaper-string-suffix-p taskpaper-cslist-istring-tail-p taskpaper-cslist-string-tail-p taskpaper-cslist-num-tail-p taskpaper-cslist-time-tail-p #s(hash-table size 7 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("i" 272 "s" 276 "l" 280 "il" 284 "sl" 288 "nl" 292 "dl" 296)) taskpaper-istring-match-p taskpaper-string-match-p taskpaper-cslist-istring-match-p taskpaper-cslist-string-match-p taskpaper-cslist-num-match-p taskpaper-cslist-time-match-p error "Invalid relational operator: %s"] 3 (#$ . 147639)]) #@39 Convert Boolean operator to function. (defalias 'taskpaper-query-bool-to-func #[(bool) "\301\267\202\f\302\207\303\207\304\207\305\306\"\207" [bool #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("or" 6 "and" 8 "not" 10)) or and not error "Invalid Boolean operator: %s"] 3 (#$ . 152324)]) #@103 Order of precedence for binary Boolean operators. Operators with lower precedence bind more strongly. (defconst taskpaper-query-precedence-boolean '(("and" . 0) ("or" . 1)) (#$ . 152664)) #@155 Parse next predicate expression in token list TOKENS. Return a cons of the constructed Lisp form implementing the matcher and the rest of the token list. (defalias 'taskpaper-query-parse-predicate #[(tokens) "\306\211\211\211\211\307 @!\203 @\310\306O A\311 @!\203' @ A\312 @!\2037 @\310\313O A\314 @!\203U\315 @!\316=\203O @\310\313O\202Q @ A\f\206Z\317 \206`\320\n\206f\321\322 \n\" \203t\323 ! \203\202\n\324\232\203\202\325 ! \204\217\326\f\327BB\202\230 \330\f\331BB E -B\207" [form val mod op attr tokens nil taskpaper-query-attribute-p 1 taskpaper-query-relation-operator-p taskpaper-query-relation-modifier-p -1 taskpaper-query-search-term-p string-to-char 34 "text" "contains" "i" taskpaper-query-relop-to-func taskpaper-unescape-double-quotes "d" taskpaper-2ft taskpaper-item-has-attribute (t) taskpaper-item-get-attribute (t)] 5 (#$ . 152859)]) #@159 Parse next unary Boolean expression in token list TOKENS. Return a cons of the constructed Lisp form implementing the matcher and the rest of the token list. (defalias 'taskpaper-query-parse-boolean-unary #[(tokens) "\305\211\211\211\306\f@!\203\f@\fA\f\2031\307\f@!\203'\310\f!\202+\311\f! @ A\n\2039\312\n!\n\203H \203H\n D\202U \203Q \202U\313\314!\210\f,B\207" [form right bool temp tokens nil taskpaper-query-boolean-not-p taskpaper-query-lparen-p taskpaper-query-parse-parentheses taskpaper-query-parse-predicate taskpaper-query-bool-to-func error "Invalid Boolean unary expression"] 4 (#$ . 153759)]) #@382 Parse next binary Boolean expression in token list TOKENS. Return a cons of the constructed Lisp form implementing the matcher and the rest of the token list. PREC is the current precedence for Boolean operators. LEFT is a Lisp form representing the left side of the Boolean expression. This function implements the top-down recursive parsing algorithm known as Pratt's algorithm. (defalias 'taskpaper-query-parse-boolean-binary #[(tokens prec &optional left) "\306\211\211\211\211 \203,\204,\307 @!\203!\310 !\202%\311 !\f@\fA\312 @!\2039 @ A \203s \203s\203s\307 @!\203T\310 !\202m\313 \"A\211V\203i\314 \n\"\202l\311 !\f@\fA \203{\315 !\203\221 \203\221 \203\221  E\202\244\203\240 \204\240\202\244\316\317!\210 -B\207" [form right cprec bool temp tokens nil taskpaper-query-lparen-p taskpaper-query-parse-parentheses taskpaper-query-parse-boolean-unary taskpaper-query-boolean-binary-p assoc taskpaper-query-parse-boolean-binary taskpaper-query-bool-to-func error "Invalid Boolean binary expression" left taskpaper-query-precedence-boolean prec] 6 (#$ . 154399)]) #@159 Parse next parenthetical expression in token list TOKENS. Return a cons of the constructed Lisp form implementing the matcher and the rest of the token list. (defalias 'taskpaper-query-parse-parentheses #[(tokens) "\303\211\304\n@!\203\nA\202\305\306!\210\n\203A\307\n@!\204A\310\n\311#\211@ A\307\n@!\204\312\n@!\204\305\313!\210\202\307\n@!\203N\nA\202R\305\314!\210\n*B\207" [left temp tokens nil taskpaper-query-lparen-p error "Opening parenthesis expected" taskpaper-query-rparen-p taskpaper-query-parse-boolean-binary 0 taskpaper-query-boolean-binary-p "Boolean binary operator or closing parenthesis expected" "Closing parenthesis expected"] 5 (#$ . 155531)]) #@81 Parse token list TOKENS. Return constructed Lisp form implementing the matcher. (defalias 'taskpaper-query-parse #[(tokens) "\303\211\n\203&\304\n\305#\211@ A\211\203\306\n@!\204\307\310!\210\202*\207" [left temp tokens nil taskpaper-query-parse-boolean-binary 0 taskpaper-query-boolean-binary-p error "Boolean binary operator expected"] 5 (#$ . 156227)]) #@198 Parse query string QUERY. Return constructed Lisp form implementing the matcher. The matcher is to be evaluated at an outline item and returns non-nil if the item matches the selection string STR. (defalias 'taskpaper-query-matcher #[(query) "\302\303 !\304!\211\205\305!)\207" [tokens query nil taskpaper-query-read-tokenize taskpaper-query-expand-type-shortcuts taskpaper-query-parse] 3 (#$ . 156604)]) #@61 Return non-nil if item at point matches query string QUERY. (defalias 'taskpaper-query-item-match-p #[(query) "\301\302!!\207" [query eval taskpaper-query-matcher] 3 (#$ . 157022)]) #@37 Fontify query string in minibuffer. (defalias 'taskpaper-query-fontify-query #[nil "\212\306eb\210\307\310 \311\"\306\312#\203\313\314\224\314\225\315\316$\210\202eb\210\307\310\317\n \f#!\306\312#\203:\313\314\224\314\225\315\316$\210\202 eb\210\307\320\321 \"\306\312#\203T\313\314\224\314\225\315\322$\210\202=eb\210\307\306\312#\205l\313\323\224\323\225\315\322$\210\202W*\207" [case-fold-search taskpaper-query-word-operator taskpaper-query-non-word-operator taskpaper-query-relation-modifier taskpaper-query-lparen-rparen taskpaper-tag-name-regexp nil re-search-forward regexp-opt words t put-text-property 0 face taskpaper-query-secondary-text append format "@%s" default 1 taskpaper-query-quoted-string-regexp] 6 (#$ . 157211)]) #@206 Propertize query string live in minibuffer. Incrementally read query string, validate it and propertize accordingly. The function should be called from minibuffer as part of `after-change-functions' hook. (defalias 'taskpaper-read-query-propertize #[(&optional _begin _end _length) "\300p!\205#\3011\302\303 d\304C#\210\305 \210\306\307 !0\207\210\310\303 d\304\311$\207" [minibufferp (error) remove-text-properties point-at-bol face taskpaper-query-fontify-query taskpaper-query-matcher minibuffer-contents-no-properties put-text-property taskpaper-query-error] 5 (#$ . 157968)]) #@143 Create a sparse tree according to MATCHER. MATCHER is a Lisp form to be evaluated at an outline item and returns non-nil if the item matches. (defalias 'taskpaper-match-sparse-tree #[(matcher) "\304 \210\305ed\306#\210\307Peb\210\212\310\311 \310\306#)\205,\306\212\312 !*\203\313 \210\202*\207" [outline-regexp re case-fold-search matcher taskpaper-occur-remove-highlights outline-flag-region t "^" nil re-search-forward eval taskpaper-outline-show-context] 4 (#$ . 158559)]) #@165 Prompt user for search query. Validate input and provide tab completion for attributes in minibuffer. Return query string. PROMPT can overwrite the default prompt. (defalias 'taskpaper-query-read-query #[(&optional prompt) "\306\307\310 \"!\311 \206\312\313\314 \"\210\315 \316\317#\210\315 \320\321#\210\315 \322\323#\210\324 !\325\326\216\327\330\331\"\210\332 \313#)\n.\207" [taskpaper-special-attributes prompt str map attrs minibuffer-local-map taskpaper-add-tag-prefix append taskpaper-get-buffer-tags make-sparse-keymap "Query: " nil set-keymap-parent define-key " " #[nil "\301!\207" [attrs taskpaper-complete-tag-at-point] 2 nil nil] "" #[nil "\300 \207" [delete-minibuffer-contents] 1 nil nil] "" #[nil "\300 \207" [abort-recursive-edit] 1 nil nil] copy-keymap 0.5 #[nil "\300\301\302\"\207" [remove-hook after-change-functions taskpaper-read-query-propertize] 3] add-hook after-change-functions taskpaper-read-query-propertize read-string minibuffer-message-timeout taskpaper-query-history] 4 (#$ . 159052)]) #@55 Create a sparse tree according to query string QUERY. (defalias 'taskpaper-query #[(&optional query) "\206\302 \303\304!\210\305!\211\203\306 !\210\202\307 \210)\303\310!\207" [query matcher taskpaper-query-read-query message "Querying..." taskpaper-query-matcher taskpaper-match-sparse-tree taskpaper-outline-show-all "Querying...done"] 3 (#$ . 160099) nil]) #@32 Evaluate query in main window. (defalias 'taskpaper-iquery-query #[nil "\303p!\205A\304 \205A\305 \3061\307!0\202\210\310\311\304 !r\312\216\313\n@\314\"\210 \203>\31519\316 !0\202@\210\310\202@\317 -\207" [str matcher save-selected-window--state minibufferp minibuffer-selected-window minibuffer-contents-no-properties (error) taskpaper-query-matcher nil internal--before-with-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] select-window norecord (error) taskpaper-match-sparse-tree taskpaper-outline-show-all] 3 (#$ . 160475)]) #@41 The idle timer object for I-query mode. (defvar taskpaper-iquery-idle-timer nil (#$ . 161083)) #@218 Create a sparse tree according to query string. Query results are updated incrementally as you type, showing items, that matches. If non-nil, QUERY is an initial query string. PROMPT can overwrite the default prompt. (defalias 'taskpaper-iquery #[(&optional query prompt) "\306 \206\307\310\311\312 \"!\313p!\314\315  \"\210\316 \317\320#\210\316 \321\322#\210\316 \323\324#\210\325 !\326! \327\216\330 \210\331\"\332\333##\334\335\336\311#\210\337$%#.\207" [prompt taskpaper-special-attributes str win attrs map make-sparse-keymap "I-query: " taskpaper-add-tag-prefix append taskpaper-get-buffer-tags get-buffer-window nil set-keymap-parent define-key " " #[nil "\301!\207" [attrs taskpaper-complete-tag-at-point] 2 nil nil] "" #[nil "\300 \207" [delete-minibuffer-contents] 1 nil nil] "" #[nil "\300 \207" [abort-recursive-edit] 1 nil nil] copy-keymap 0.5 #[nil "\301\302\303\"\210\304!\210\305 \207" [taskpaper-iquery-idle-timer remove-hook after-change-functions taskpaper-read-query-propertize cancel-timer taskpaper-attribute-cache-clear] 3] taskpaper-attribute-cache-build run-with-idle-timer t taskpaper-iquery-query add-hook after-change-functions taskpaper-read-query-propertize read-string minibuffer-local-map minibuffer-message-timeout taskpaper-iquery-delay taskpaper-iquery-idle-timer query taskpaper-query-history] 6 (#$ . 161185) nil]) #@57 Return a list of embedded buffer queries for selection. (defalias 'taskpaper-get-buffer-queries #[nil "\304\211\211\212\214~\210eb\210\305 \306\216\307\310\304\311#\203N\312\313\224!\203\314\315!\211\203 \316\232\204\314\317!\320\321\322\n!!!\211\203\n\316\232\204\n BB\202,\237+\207" [queries query desc save-match-data-internal nil match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] re-search-forward "@search" t taskpaper-in-tag-p 1 taskpaper-item-get-attribute "search" "" "text" taskpaper-remove-trailing-tags taskpaper-remove-type-formatting taskpaper-remove-inline-markup] 5 (#$ . 162568)]) #@40 Query buffer using predefined queries. (defalias 'taskpaper-query-read-select #[nil "\306\307 \310\311\312\313\"\"\"\311\211\211\204\314\315!\210\311\316\317\320 \311\316$*\321\n \"A\2035\322 !\2028\323 !+\207" [taskpaper-custom-queries query desc queries completion-ignore-case partial-completion-mode append taskpaper-get-buffer-queries delq nil mapcar cdr error "No predefined queries" t completing-read "Select query: " assoc taskpaper-iquery taskpaper-query taskpaper-iquery-default] 8 (#$ . 163234) nil]) #@84 Provide fast selection interface for custom queries. Return selected query string. (defalias 'taskpaper-query-fast-selection #[nil "\204\306\307!\210\212\310 \311\216\312\313\314!!\210\315 \210\316\317!\210\320\320\211\211\211 !\321c\210!\211A!\242\211 \203u @;\203K\322\323 @\"c\210\202, @ A@\324 8 \203,\f\203, \203,\322\325\326\327 !\330\331#\f#c\210\202,\321c\210eb\210\332 \210\333\334!\335 \" \324 8\211\203\230 \336 \210\202\237\336 \210\337\211\".\207" [taskpaper-custom-queries #1=#:wconfig show-trailing-whitespace qs desc c error "No custom queries" current-window-configuration #[nil "\301!\207" [#1# set-window-configuration] 2] switch-to-buffer-other-window get-buffer-create "*TaskPaper custom queries*" erase-buffer toggle-truncate-lines 1 nil "\n" format "\n%s\n\n" 2 "%s %s\n" propertize char-to-string face taskpaper-fast-select-key fit-window-to-buffer read-char-exclusive "Press key for query:" assoc kill-buffer t e tbl quit-flag] 6 (#$ . 163765)]) #@46 Query buffer using fast selection interface. (defalias 'taskpaper-query-fast-select #[nil "\302  \203 \303!\202\304!)\207" [query taskpaper-iquery-default taskpaper-query-fast-selection taskpaper-iquery taskpaper-query] 2 (#$ . 164781) nil]) #@225 Query buffer for tag at point. When point is on the "@search" tag, execute query stored in the tag value. For other tags when point is on the tag name, query for the tag name, otherwise query for the name-value combination. (defalias 'taskpaper-query-tag-at-point #[nil "\305 \203f\306!\203f\307\310!\307\311!\312\n! \313\232\203%\n\203%\n\202V \203>`\310\224Y\203>`\310\225X\203>\314\315 \"\202V \203R\n\203R\316\n!\314\317 \n#\202V\314\315 \"\f\203a\320 !\202d\321 !,\207\322\323!\207" [taskpaper-tag-regexp name value query taskpaper-iquery-default taskpaper-in-tag-p taskpaper-in-regexp match-string-no-properties 2 3 taskpaper-tag-value-unescape "search" format "@%s" taskpaper-escape-double-quotes "@%s = \"%s\"" taskpaper-iquery taskpaper-query user-error "No tag at point"] 4 (#$ . 165036) nil]) #@34 Ispell setup for TaskPaper-mode. (defalias 'taskpaper-ispell-setup #[nil "\304\305C\"\210\304\305 C\"\210\304\305\nC\"\210\304\305 C\"\207" [taskpaper-tag-regexp taskpaper-uri-browser-regexp taskpaper-email-regexp taskpaper-file-path-regexp add-to-list ispell-skip-region-alist] 3 (#$ . 165866)]) #@60 Function used for `flyspell-generic-check-word-predicate'. (defalias 'taskpaper-mode-flyspell-verify #[nil "\304!?\205\304 !?\205\304\n!?\205\304 !?\207" [taskpaper-tag-regexp taskpaper-uri-browser-regexp taskpaper-email-regexp taskpaper-file-path-regexp taskpaper-in-regexp] 2 (#$ . 166170)]) (put 'taskpaper-mode 'flyspell-mode-predicate 'taskpaper-mode-flyspell-verify) #@60 Unhide the current position to show the bookmark location. (defalias 'taskpaper-bookmark-jump-unhide #[nil "\300\301!\2050\302\303\206 `\304\"\305=\262\204.\212e`S]b\210\302\303\206$`\304\"\305=\262)\2050\306 \207" [derived-mode-p taskpaper-mode nil get-char-property invisible outline taskpaper-outline-show-context] 4 (#$ . 166556)]) (byte-code "\300\301\302\"\210\300\303\304\"\207" [eval-after-load "bookmark" #[nil "\300\301!\203 \302\301\303\"\207\304\305\306\307\310$\210\311\305\310\"\210\305\207" [boundp bookmark-after-jump-hook add-hook taskpaper-bookmark-jump-unhide ad-add-advice bookmark-jump (taskpaper-make-visible nil t (advice lambda nil "Make the position visible." (taskpaper-bookmark-jump-unhide))) after nil ad-activate] 5] "imenu" #[nil "\300\301\302\"\207" [add-hook imenu-after-jump-hook #[nil "\300\301!\205\302 \207" [derived-mode-p taskpaper-mode taskpaper-outline-show-context] 2]] 3]] 3) #@38 Demote item at point or indent line. (defalias 'taskpaper-tab #[nil "\300 \203 \301\302!\207\301\303!\207" [outline-on-heading-p call-interactively taskpaper-outline-demote indent-for-tab-command] 2 (#$ . 167492) nil]) #@24 Promote item at point. (defalias 'taskpaper-shifttab #[nil "\300 \205\301\302!\207" [outline-on-heading-p call-interactively taskpaper-outline-promote] 2 (#$ . 167718) nil]) (defvar taskpaper-mode-transpose-word-syntax-table (byte-code "\302!\303\304\305 #\210\303\306\305 #\210 )\207" [text-mode-syntax-table st make-syntax-table modify-syntax-entry 42 "w p" 95] 4)) #@38 Transpose words in TaskPaper buffer. (defalias 'taskpaper-transpose-words #[nil "\203 \202 \n\306 p\307\216\310 !\210\311\312!,\207" [taskpaper-use-inline-emphasis taskpaper-mode-transpose-word-syntax-table taskpaper-mode-syntax-table st #1=#:buffer #2=#:table syntax-table #[nil "rq\210\302 !)\207" [#1# #2# set-syntax-table] 2] set-syntax-table call-interactively transpose-words] 2 (#$ . 168096) nil]) (taskpaper-remap taskpaper-mode-map 'transpose-words 'taskpaper-transpose-words) (defvar taskpaper-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [taskpaper-mode-hook variable-documentation put "Hook run after entering TaskPaper mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp taskpaper-mode-map definition-name taskpaper-mode] 4) (defvar taskpaper-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [taskpaper-mode-abbrev-table taskpaper-mode-map variable-documentation put purecopy "Keymap for `taskpaper-mode'." boundp taskpaper-mode-syntax-table definition-name taskpaper-mode (lambda (def-tmp-var) (defvar taskpaper-mode-syntax-table def-tmp-var)) make-syntax-table "Syntax table for `taskpaper-mode'." (lambda (def-tmp-var) (defvar taskpaper-mode-abbrev-table def-tmp-var)) define-abbrev-table nil "Abbrev table for `taskpaper-mode'." derived-mode-parent outline-mode] 5) #@262 Major mode for editing and querying files in TaskPaper format. TaskPaper mode is implemented on top of Outline mode. Turning on TaskPaper mode runs the normal hook `text-mode-hook', and then `outline-mode-hook' and `taskpaper-mode-hook'. \{taskpaper-mode-map} (defalias 'taskpaper-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2036 \321 =\203<\322\f\323 \"\210)\324@\325\"\204V@A=\204V\326@\325AC#\210\327 !\210\330\f!\210@A\331 \210\332 \333\334#\210\332 \335\334#\210\332 \336\334#\210\311\312\327 !\210\337\307BC\306C!BL*\210\340\341!\210D\203\236\340\342!\210\202\242\343\342!\210\344\345BC\306C!BL*\210\346\347BC\306C!BL*\210\350\307BC\306C!BL*\210\351\352$\353QBC\306C!BL*\210\354\355BC\306C!BL*\210\356$BC\306C!BL*\210\357\360BC\306C!BL*\210\361 \210\362\363BC\306C!BL*\210\364\307BC\306C!BL*\210\365\366BC\306C!BL*\210\330\f!\210\306\367!\210\3707\371E\372ECF\306\373!\210\374;\375 \210\306\376!\210G>\377 \210H\203r\201I \210\201J\201K\201L\371\307$\210\201J\201K\201M\371\307$\210\201J\201K\201N\371\307$\210\201J\201K\201O\"\210\201P\201Q!\210)\201R\201Q!\207" [delay-mode-hooks major-mode mode-name taskpaper-mode-map taskpaper-mode-syntax-table parent make-local-variable t outline-mode taskpaper-mode "TaskPaper" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table kill-all-local-variables define-key [menu-bar headings] undefined [menu-bar hide] [menu-bar show] line-move-ignore-invisible add-to-invisibility-spec (outline . t) taskpaper-markup remove-from-invisibility-spec outline-regexp "\\([ ]*\\)[^ \n]" outline-heading-end-regexp "\n" outline-blank-line paragraph-start "\f\\|[ ]*$\\|\\(?:" "\\)" paragraph-separate "[ \f]*$" auto-fill-inhibit-regexp adaptive-fill-regexp "[ ]*\\(\\(?:[-+*]+\\|[0-9]+\\.\\)[ ]*\\)*" taskpaper-set-font-lock-defaults font-lock-unfontify-region-function taskpaper-unfontify-region indent-tabs-mode indent-line-function indent-to-left-margin next-error-function taskpaper-occur-next-match nil 1 outline-isearch-open-invisible-function #[(&rest _) "\300 \207" [taskpaper-outline-show-context] 1] taskpaper-ispell-setup require-final-newline taskpaper-set-startup-visibility taskpaper-mode-abbrev-table local-abbrev-table value var taskpaper-hide-markup taskpaper-project-regexp imenu-generic-expression mode-require-final-newline taskpaper-startup-with-inline-images taskpaper-display-inline-images add-hook change-major-mode-hook taskpaper-outline-show-all taskpaper-remove-inline-images taskpaper-occur-remove-highlights (lambda nil (remove-from-invisibility-spec 'taskpaper-markup) nil t) run-hooks taskpaper-mode-hook run-mode-hooks] 6 (#$ . 169802) nil]) (byte-code "\301\302\303\"\210\304\305\306#\210\304\307\306#\210\304\310\311#\210\304\312\311#\210\304\313\311#\210\304\314\315#\210\304\316\317#\210\304\320\321#\210\304\322\323#\210\304\324\323#\210\304\325\326#\210\304\327\330#\210\304\331\332#\210\304\333\334#\210\304\335\336#\210\304\337\336#\210\304\340\341#\210\304\342\341#\210\304\343\341#\210\304\344\345#\210\304\346\347#\210\304\350\351#\210\304\352\353#\210\304\354\355#\210\304\356\357#\210\304\360\361#\210\304\362\363#\210\304\364\365#\210\304\366\367#\210\304\370\371#\210\304\372\373#\210\304\374\375#\210\304\376\347#\210\304\377\201@#\210\304\201A\201B#\210\304\201C\201D#\210\304\201E\201F#\210\304\201G\201H#\210\304\201I\201J#\210\304\201K\201L#\210\304\201M\201N#\210\304\201O\201P#\210\304\201Q\201R#\210\304\201S\201T#\210\304\201U\201V#\210\304\201W\201X#\210\304\201Y\201Z#\210\304\201[\201\\#\210\304\201]\201^#\210\304\201_\201`#\210\304\201a\201b#\210\304\201c\201d#\210\304\201e\201f#\210\304\201g\201h#\210\304\201i\201j#\210\304\201k\201l#\210\304\201m\201n#\210\304\201o\201p#\210\304\201q\201r#\207" [taskpaper-mode-map add-to-list auto-mode-alist ("\\.taskpaper\\'" . taskpaper-mode) define-key " " taskpaper-tab [tab] [S-tab] taskpaper-shifttab [backtab] [S-iso-lefttab] [C-tab] taskpaper-cycle [C-up] taskpaper-outline-backward-same-level [C-down] taskpaper-outline-forward-same-level " " taskpaper-new-item-same-level [return] [M-up] taskpaper-outline-move-subtree-up [M-down] taskpaper-outline-move-subtree-down [M-left] taskpaper-outline-promote-subtree [M-right] taskpaper-outline-demote-subtree [134217741] taskpaper-new-task-same-level [M-return] [134217737] taskpaper-complete-tag-at-point [M-tab] " " [S-up] taskpaper-outline-up-level "" taskpaper-outline-show-all " " taskpaper-show-in-calendar "#" taskpaper-narrow-to-subtree "*" taskpaper-outline-hide-other ">" taskpaper-goto-calendar "<" taskpaper-date-from-calendar "." taskpaper-read-date-insert-timestamp "@" taskpaper-item-set-tag-fast-select "/" taskpaper-occur "?" taskpaper-query-read-select "!" taskpaper-query-fast-select ":" taskpaper-item-display-outline-path "" "" taskpaper-outline-overview "" taskpaper-occur-remove-highlights "" taskpaper-item-toggle-done "\n" taskpaper-goto "\f" taskpaper-insert-file-link-at-point " " taskpaper-mark-subtree "" taskpaper-open-link-at-point " " taskpaper-iquery "" taskpaper-query "" taskpaper-remove-tag-at-point "" taskpaper-query-tag-at-point "" taskpaper-refile-subtree [3 134217847] taskpaper-refile-subtree-copy "p" taskpaper-item-format-as-project "t" taskpaper-item-format-as-task "n" taskpaper-item-format-as-note "a" taskpaper-sort-alpha "t" taskpaper-sort-by-type "a" taskpaper-archive-subtree "v" taskpaper-outline-copy-visible "" taskpaper-clone-subtree "" taskpaper-cut-subtree [3 24 134217847] taskpaper-copy-subtree "" taskpaper-paste-subtree " " taskpaper-toggle-markup-hiding "" taskpaper-toggle-inline-images] 4) #@26 Menu for TaskPaper mode. (defvar taskpaper-mode-menu nil (#$ . 175866)) (byte-code "\301\302\303\304$\210\305\306\307\310\311\312\313\314&\210\305\315\316\317\311\312\313\320&\210\305\321\307\322\311\312\313\323&\210\305\324\307\325\311\312\313\326&\210\305\327\307\330\311\312\313\323&\210\305\331\307\332\311\312\313\333&\210\305\334\335\336\311\312\313\337&\210\305\340\307\341\311\312\313\323&\207" [taskpaper-mode-map easy-menu-do-define taskpaper-mode-menu "Menu for TaskPaper mode." ("TaskPaper" ("Format" ["Format Item as Project" taskpaper-item-format-as-project :active (outline-on-heading-p)] ["Format Item as Task" taskpaper-item-format-as-task :active (outline-on-heading-p)] ["Format Item as Note" taskpaper-item-format-as-note :active (outline-on-heading-p)] "--" ["Hide Inline Markup" taskpaper-toggle-markup-hiding :style toggle :selected taskpaper-hide-markup]) ("Visibility" ["Cycle Visibility" taskpaper-cycle :active (outline-on-heading-p)] ["Cycle Visibility (Global)" (taskpaper-cycle t)] ["Hide Other" taskpaper-outline-hide-other :active (outline-on-heading-p)] ["Overview" taskpaper-outline-overview] ["Show All" taskpaper-outline-show-all]) ("Navigation" ["Up Level" taskpaper-outline-up-level :active (outline-on-heading-p)] ["Forward Same Level" taskpaper-outline-forward-same-level :active (outline-on-heading-p)] ["Backward Same Level" taskpaper-outline-backward-same-level :active (outline-on-heading-p)] "--" ["Display Outline Path" taskpaper-item-display-outline-path :active (outline-on-heading-p)] "--" ["Go To..." taskpaper-goto]) ("Structure Editing" ["Promote Item" taskpaper-outline-promote :active (outline-on-heading-p)] ["Demote Item" taskpaper-outline-demote :active (outline-on-heading-p)] "--" ["Promote Subtree" taskpaper-outline-promote-subtree :active (outline-on-heading-p)] ["Demote Subtree" taskpaper-outline-demote-subtree :active (outline-on-heading-p)] "--" ["Move Subtree Up" taskpaper-outline-move-subtree-up :active (outline-on-heading-p)] ["Move Substree Down" taskpaper-outline-move-subtree-down :active (outline-on-heading-p)] "--" ["Copy Subtree" taskpaper-copy-subtree :active (outline-on-heading-p)] ["Cut Subtree" taskpaper-cut-subtree :active (outline-on-heading-p)] ["Paste Subtree" taskpaper-paste-subtree :active (and kill-ring (current-kill 0))] ["Duplicate Subtree" taskpaper-clone-subtree :active (outline-on-heading-p)] "--" ["Mark Subtree" taskpaper-mark-subtree :active (outline-on-heading-p)] ["Narrow to Subtree" taskpaper-narrow-to-subtree :active (outline-on-heading-p)] "--" ["Sort Children Alphabetically" taskpaper-sort-alpha :active (or (bobp) (outline-on-heading-p))] ["Sort Children by Type" taskpaper-sort-by-type :active (or (bobp) (outline-on-heading-p))] "--" ["Refile Subtree..." taskpaper-refile-subtree :active (outline-on-heading-p)] ["Refile Subtree (Copy)..." taskpaper-refile-subtree-copy :active (outline-on-heading-p)] "--" ["Archive Subtree" taskpaper-archive-subtree :active (outline-on-heading-p)] "--" ["Copy Visible Items" taskpaper-outline-copy-visible :active (region-active-p)]) ("Tags" ["Complete Tag" taskpaper-complete-tag-at-point :active (taskpaper-in-regexp (format "@%s*" taskpaper-tag-name-char-regexp))] ["Select Tag..." taskpaper-item-set-tag-fast-select] ["Remove Tag" taskpaper-remove-tag-at-point :active (taskpaper-in-regexp taskpaper-tag-regexp)] "--" ["Toggle Done" taskpaper-item-toggle-done :active (outline-on-heading-p)]) ("Date & Time" ["Show Date in Calendar" taskpaper-show-in-calendar :active (taskpaper-in-regexp taskpaper-tag-regexp)] ["Access Calendar" taskpaper-goto-calendar] ["Insert Date from Calendar" taskpaper-date-from-calendar :active (get-buffer "*Calendar*")] ["Insert Time Stamp..." taskpaper-read-date-insert-timestamp]) ("Links & Images" ["Insert File Link..." taskpaper-insert-file-link-at-point] ["Show Inline Images" taskpaper-toggle-inline-images :style toggle :selected taskpaper-inline-image-overlays]) ("Search" ["Start Incremental Search..." taskpaper-iquery] ["Start Non-incremental Search..." taskpaper-query] ["Select Search Query..." taskpaper-query-read-select] ["Select Custom Search Query..." taskpaper-query-fast-select] "--" ["Filter by Regexp..." taskpaper-occur] ["Remove Highlights" taskpaper-occur-remove-highlights :active taskpaper-occur-highlights]) ("Agenda View" ["Create Agenda View..." taskpaper-agenda-search] ["Select Agenda View..." taskpaper-agenda-select]) "--" ("Documentation" ["Show Version" taskpaper-mode-version] ["Browse Manual" taskpaper-mode-manual]) "--" ["Customize..." (customize-browse 'taskpaper)]) custom-declare-variable taskpaper-agenda-files nil "List of files to be used for agenda display.\nIf an entry is a directory, all files in that directory that are\nmatched by `taskpaper-agenda-file-regexp' will be part of the\nfile list." :group taskpaper :type list taskpaper-agenda-file-regexp "^[^.].*\\.taskpaper\\'" "Regular expression to match files for `taskpaper-agenda-files'.\nIf any element in the list in that variable contains a directory\ninstead of a normal file, all files in that directory that are\nmatched by this regular expression will be included." regexp taskpaper-agenda-skip-unavailable-files "Non-nil means, silently skip unavailable agenda files" boolean taskpaper-agenda-sorting-predicate "Predicate function for sorting items in Agenda buffer.\nIf non-nil, it is called with two arguments, the items to\ncompare, and should return non-nil if the first item should sort\nbefore the second one." symbol taskpaper-agenda-start-with-follow-mode "The initial value of Follow mode in a newly created agenda window." taskpaper-agenda-after-show-hook "Normal hook run after an item has been shown from the agenda.\nPoint is in the buffer where the item originated." hook taskpaper-agenda-window-setup 'reorganize-frame "How the agenda buffer should be displayed.\nPossible values for this option are:\n\n current-window Show agenda in the current window, keeping other windows\n other-window Show agenda in other window\n only-window Show agenda in the current window, deleting other windows\n other-frame Show agenda in other frame\n reorganize-frame Show only the current window and the agenda window" (choice (const :tag "Current window" current-window) (const :tag "Other window" other-window) (const :tag "Current window only" only-window) (const :tag "Other frame" other-frame) (const :tag "Current window and agenda window" reorganize-frame)) taskpaper-agenda-restore-windows-after-quit "Non-nil means, restore window configuration upon exiting agenda.\nBefore the window configuration is changed for displaying the\nagenda, the current status is recorded. When the agenda is exited\nand this option is set, the old state is restored. If\n`taskpaper-agenda-window-setup' is `other-frame', the value of\nthis option will be ignored."] 8) (defconst taskpaper-agenda-buffer-name "*TaskPaper Agenda*") (defvar taskpaper-agenda-pre-window-conf nil) (defvar taskpaper-agenda-pre-follow-window-conf nil) #@45 Recent matcher form for agenda re-building. (defvar taskpaper-agenda-matcher-form nil (#$ . 182920)) (make-variable-buffer-local 'taskpaper-agenda-matcher-form) #@40 Buffers created to visit agenda files. (defvar taskpaper-agenda-new-buffers nil (#$ . 183087)) (defvar taskpaper-agenda-follow-mode taskpaper-agenda-start-with-follow-mode) #@55 Return non-nil if current buffer is an agenda buffer. (defalias 'taskpaper-agenda-buffer-p #[nil "\301\302!\205\n\303 \232\207" [taskpaper-agenda-buffer-name derived-mode-p taskpaper-agenda-mode buffer-name] 2 (#$ . 183266)]) #@43 Throw an error when not in agenda buffer. (defalias 'taskpaper-agenda-buffer-error #[nil "\300\301!\207" [error "Not in TaskPaper Agenda buffer"] 2 (#$ . 183500)]) #@61 Throw an error when a command is not allowed in the agenda. (defalias 'taskpaper-agenda-error #[nil "\300\301!\207" [user-error "Command not allowed in this line"] 2 (#$ . 183670)]) #@46 Set mode name to indicate all mode settings. (defalias 'taskpaper-agenda-set-mode-name #[nil "\302\203 \303\202\n\304\305 E\211\207" [taskpaper-agenda-follow-mode mode-name "TP-Agenda" " Follow" "" force-mode-line-update] 3 (#$ . 183858)]) #@31 Get the list of agenda files. (defalias 'taskpaper-agenda-files #[nil "<\203 \202\f\303\304!\305\306\307\310 \"\"\n\203!\311\312\307\313 \"\" )\207" [taskpaper-agenda-files files taskpaper-agenda-skip-unavailable-files error "Invalid value of `taskpaper-agenda-files'" apply append mapcar #[(f) "\302!\203\f\303\304 #\207C\207" [f taskpaper-agenda-file-regexp file-directory-p directory-files t] 4] delq nil #[(file) "\301!\205\207" [file file-readable-p] 2]] 5 (#$ . 184108)]) #@113 Return non-nil, if FILE is an agenda file. If FILE is omitted, use the file associated with the current buffer. (defalias 'taskpaper-agenda-file-p #[(&optional file) "\206\302 \211\205\303 !\304\303\305 \"\235)\207" [file fname buffer-file-name file-truename mapcar taskpaper-agenda-files] 5 (#$ . 184609)]) #@133 Get an agenda buffer visiting FILE. If the buffer needs to be created, add it to the list of buffers which might be released later. (defalias 'taskpaper-agenda-get-file-buffer #[(file) "\303!\211\203\f \202\304!\211\203 \nB )\207" [file buf taskpaper-agenda-new-buffers taskpaper-find-base-buffer-visiting find-file-noselect] 3 (#$ . 184930)]) #@341 Return list of items from agenda files matching MATCHER. Cycle through agenda files and collect items matching MATCHER. MATCHER is a Lisp form to be evaluated at an item; returning a non-nil value qualifies the item for inclusion. Return list of items flatten and linked back to the corresponding buffer position where the item originated. (defalias 'taskpaper-agenda-collect-items #[(matcher) "\306 \307\211\211\211\211 \211A\242\211\203w\310\f!\203#\311\f!\202'\312\313\f\"r q\210\314\315!\2047\312\316\f\"\210\317P\212\214~\210eb\210\307\320\307\321#)\203s\321\212\322!*\203D\323\324 !\325\326!\327 \330\n#\211B\202D,\202 \237.\207" [items item marker buffer file files taskpaper-agenda-files nil file-exists-p taskpaper-agenda-get-file-buffer error "Non-existent agenda file: %s" derived-mode-p taskpaper-mode "Agenda file is not in TaskPaper mode: %s" "^" re-search-forward t eval taskpaper-new-marker point-at-bol taskpaper-item-get-attribute "text" propertize taskpaper-marker outline-regexp re case-fold-search matcher] 7 (#$ . 185291)]) #@37 Sort list of items for Agenda view. (defalias 'taskpaper-agenda-sort-init #[(list) "\211\203 \303\n \"\202\n)\207" [taskpaper-agenda-sorting-predicate sfunc list sort] 4 (#$ . 186379)]) #@73 Insert items matching MATCHER in agenda buffer. Return number of items. (defalias 'taskpaper-agenda-insert-items #[(matcher) "\305 \204\306 \210\307\310!\311 \210eb\210 \2035\312 !\212 \313\211\2034\f@\211\314\261\210\fA\211\204%+ G*\207" [matcher items inhibit-read-only item --dolist-tail-- taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error t taskpaper-agenda-collect-items erase-buffer taskpaper-agenda-sort-init nil "\n"] 4 (#$ . 186576)]) #@36 Re-buid the current agenda buffer. (defalias 'taskpaper-agenda-redo #[nil "\302 \204\303 \210\205.\304\305\306!\210\307!\305\310!\210 \205-\305\311 \211\312U\203+\313\202,\314#)\207" [taskpaper-agenda-matcher-form cnt taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error nil message "Re-building agenda buffer..." taskpaper-agenda-insert-items "Re-building agenda buffer...done" "%d %s" 1 "item" "items"] 5 (#$ . 187046) nil]) #@26 Go to the item at point. (defalias 'taskpaper-agenda-goto #[nil "\304 \204\305 \210\306\307\310 \")\206\311 \312 !\313 !\314\n!\210~\210\315 \210 b\210+\316\317!\207" [prop marker buffer pos taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error taskpaper-marker get-text-property point-at-bol taskpaper-agenda-error marker-buffer marker-position switch-to-buffer-other-window push-mark run-hooks taskpaper-agenda-after-show-hook] 3 (#$ . 187492) nil]) #@52 Go to the item at points and delete other windows. (defalias 'taskpaper-agenda-switch-to #[nil "\304 \204\305 \210\306\307\310 \")\206\311 \312 !\313 !\n\204&\314\315!\210\316\n!\210\317 \210~\210 b+\207" [prop marker buffer pos taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error taskpaper-marker get-text-property point-at-bol taskpaper-agenda-error marker-buffer marker-position user-error "Trying to switch to non-existent buffer" pop-to-buffer-same-window delete-other-windows] 3 (#$ . 187961) nil]) #@62 Display the TaskPaper file which contains the item at point. (defalias 'taskpaper-agenda-show #[nil "\301 \204\302 \210\303 \304 \210\305!)\207" [win taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error selected-window taskpaper-agenda-goto select-window] 2 (#$ . 188486) nil]) #@44 Display to the item at point and recenter. (defalias 'taskpaper-agenda-show-recenter #[nil "\301 \204\302 \210\303 \304 \210\305 \210\306!)\207" [win taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error selected-window taskpaper-agenda-goto recenter select-window] 2 (#$ . 188777) nil]) #@26 Show Follow mode window. (defalias 'taskpaper-agenda-do-context-action #[nil "\303\304\305 \")\306 !\205\307 !\205\n\205\310 )\207" [prop m taskpaper-agenda-follow-mode taskpaper-marker get-text-property point-at-bol markerp marker-buffer taskpaper-agenda-show] 3 (#$ . 189077)]) #@41 Toggle Follow mode in an agenda buffer. (defalias 'taskpaper-agenda-follow-mode #[nil "\302 \204\303 \210\204\304 ?\211\204\305 !\210\306 \210\307 \210\310\311\203*\312\202+\313\"\207" [taskpaper-agenda-follow-mode taskpaper-agenda-pre-follow-window-conf taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error current-window-configuration set-window-configuration taskpaper-agenda-set-mode-name taskpaper-agenda-do-context-action message "Follow mode is %s" "on" "off"] 4 (#$ . 189372) nil]) #@117 Move cursor to the next line. Display the TaskPaper file which contains the item at point if Follow mode is active. (defalias 'taskpaper-agenda-next-line #[nil "\300 \204\301 \210\302\303!\210\304 \207" [taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error call-interactively next-line taskpaper-agenda-do-context-action] 2 (#$ . 189885) nil]) #@121 Move cursor to the previous line. Display the TaskPaper file which contains the item at point if Follow mode is active. (defalias 'taskpaper-agenda-previous-line #[nil "\300 \204\301 \210\302\303!\210\304 \207" [taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error call-interactively previous-line taskpaper-agenda-do-context-action] 2 (#$ . 190241) nil]) #@45 Quit the agenda and kill the agenda buffer. (defalias 'taskpaper-agenda-quit #[nil "\304 \204\305 \210p \306=\203\307 \210\2025\n\203' \203'\310\n!\210\311\2025 \312=\2045\313 \2045\314 \210\315!)\207" [buf taskpaper-agenda-window-setup taskpaper-agenda-pre-window-conf taskpaper-agenda-restore-windows-after-quit taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error other-frame delete-frame set-window-configuration nil current-window one-window-p delete-window kill-buffer] 2 (#$ . 190608) nil]) #@218 Exit the agenda, killing TaskPaper buffers loaded by the agenda. Like `taskpaper-agenda-quit', but kill any buffers that were created by the agenda. TaskPaper buffers visited directly by the user will not be touched. (defalias 'taskpaper-agenda-exit #[nil "\301 \204\302 \210\303!\210\304 \207" [taskpaper-agenda-new-buffers taskpaper-agenda-buffer-p taskpaper-agenda-buffer-error taskpaper-release-buffers taskpaper-agenda-quit] 2 (#$ . 191129) nil]) #@37 Keymap for `taskpaper-agenda-mode'. (defvar taskpaper-agenda-mode-map (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\314#\210\302\315\316#\210\302\317\320#\210\302\321\316#\210\302\322\320#\210\302\323\324#\210\302\325\326#\210\302\327\330#\210\302\331\332#\210\302\333\334#\210\302\335\336#\210\302\337\340#\210\302\341\342#\210\302\343\344#\210\302\345\346#\210\302\347\350#\210\302\351\352#\210\302\353\354#\210\302\355\356#\210)\207" [map make-sparse-keymap define-key "r" taskpaper-agenda-redo "a" taskpaper-outline-show-all "c" taskpaper-show-in-calendar ">" taskpaper-goto-calendar "F" taskpaper-agenda-follow-mode "p" taskpaper-agenda-previous-line "n" taskpaper-agenda-next-line [up] [down] " " taskpaper-agenda-show " " taskpaper-agenda-goto "L" taskpaper-agenda-show-recenter " " taskpaper-agenda-switch-to "I" taskpaper-iquery "Q" taskpaper-query "S" taskpaper-query-fast-select "t" taskpaper-query-tag-at-point "/" taskpaper-occur "" taskpaper-occur-remove-highlights "v" taskpaper-outline-copy-visible "o" delete-other-windows "q" taskpaper-agenda-quit "x" taskpaper-agenda-exit] 4) (#$ . 191590)) #@78 Setup agenda buffer in the window. ABUF is the buffer for the agenda window. (defalias 'taskpaper-agenda-prepare-window #[(abuf) "\303  \304\267\202/\305\n!\210\202/\306\n!\210\202/\307\n!\210\202/\310 \210\305\n!\210\202/\310 \210\306\n!\210p\n\232?\2059\305\n!\207" [taskpaper-agenda-pre-window-conf taskpaper-agenda-window-setup abuf current-window-configuration #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (current-window 9 other-window 16 other-frame 23 only-window 30 reorganize-frame 40)) pop-to-buffer-same-window switch-to-buffer-other-window switch-to-buffer-other-frame delete-other-windows] 2 (#$ . 192782)]) #@36 Build agenda buffer using MATCHER. (defalias 'taskpaper-agenda-build #[(matcher) "\306\307\310!\210\311\312 !!\210\313 \210\314\315 \210\316 !\210\317\f!\320\f\307\321!\210\2058\307\322\211\323U\2036\324\2027\325#)\207" [cnt taskpaper-agenda-buffer-name major-mode taskpaper-agenda-mode-map matcher buffer-read-only nil message "Building agenda..." taskpaper-agenda-prepare-window get-buffer-create taskpaper-mode taskpaper-agenda-mode taskpaper-agenda-set-mode-name use-local-map taskpaper-agenda-insert-items t "Building agenda...done" "%d %s" 1 "item" "items" taskpaper-agenda-matcher-form] 5 (#$ . 193457)]) #@42 Promt for query string and build agenda. (defalias 'taskpaper-agenda-search #[nil "\301\302\303!!\304!)\207" [matcher taskpaper-query-matcher taskpaper-query-read-query "Agenda query: " taskpaper-agenda-build] 3 (#$ . 194086) nil]) #@46 Promts for query selection and build agenda. (defalias 'taskpaper-agenda-select #[nil "\301\302 !\303!)\207" [matcher taskpaper-query-matcher taskpaper-query-fast-selection taskpaper-agenda-build] 2 (#$ . 194326) nil]) (provide 'taskpaper-mode)