1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-12-29 11:02:33 +00:00

Cleaning up the code.

This is an ongoing program, more to come.
This commit is contained in:
Carsten Dominik 2008-04-03 15:27:33 +02:00
parent dc0fe33f67
commit 617dc871aa
5 changed files with 70 additions and 84 deletions

View File

@ -1,6 +1,12 @@
2008-04-03 Carsten Dominik <dominik@science.uva.nl> 2008-04-03 Carsten Dominik <dominik@science.uva.nl>
* doc/org.texi (Using the property API): Document the API for
multi-valued properties.
* lisp/org.el (org-modules): Add entry for org-bibtex.el. * lisp/org.el (org-modules): Add entry for org-bibtex.el.
(org-completion-fallback-command): Moved into `org-completion'
group.
(org-clock-heading-function): Moved to `org-progress' group.
* lisp/org-bibtex.el (org-create-file-search-in-bibtex): New file, * lisp/org-bibtex.el (org-create-file-search-in-bibtex): New file,
a combination of the BibTeX that used to be in org.el, and the a combination of the BibTeX that used to be in org.el, and the

View File

@ -8673,6 +8673,21 @@ Get all property keys in the current buffer.
Insert a property drawer at point. Insert a property drawer at point.
@end defun @end defun
@defun org-entry-add-to-multivalued-property pom property value
Treat the value of the property PROPERTY as a whitespace-separated list of
values and make sure that VALUE is in this list.
@end defun
@defun org-entry-remove-from-multivalued-property pom property value
Treat the value of the property PROPERTY as a whitespace-separated list of
values and make sure that VALUE is @emph{not} in this list.
@end defun
@defun org-entry-member-in-multivalued-property pom property value
Treat the value of the property PROPERTY as a whitespace-separated list of
values and check if VALUE is in this list.
@end defun
@node History and Acknowledgments, Main Index, Extensions and Hacking, Top @node History and Acknowledgments, Main Index, Extensions and Hacking, Top
@appendix History and Acknowledgments @appendix History and Acknowledgments
@cindex acknowledgments @cindex acknowledgments

View File

@ -2686,7 +2686,7 @@ of what a project is and how to check if it stuck, customize the variable
MATCH is being ignored." MATCH is being ignored."
(interactive) (interactive)
(let* ((org-agenda-skip-function 'org-agenda-skip-subtree-when-regexp-matches) (let* ((org-agenda-skip-function 'org-agenda-skip-subtree-when-regexp-matches)
;; FIXME: we could have used org-agenda-skip-if here. ;; We could have used org-agenda-skip-if here.
(org-agenda-overriding-header "List of stuck projects: ") (org-agenda-overriding-header "List of stuck projects: ")
(matcher (nth 0 org-stuck-projects)) (matcher (nth 0 org-stuck-projects))
(todo (nth 1 org-stuck-projects)) (todo (nth 1 org-stuck-projects))
@ -2960,7 +2960,6 @@ the documentation of `org-diary'."
'help-echo 'help-echo
(format "mouse-2 or RET jump to org file %s" (format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name)))) (abbreviate-file-name buffer-file-name))))
;; FIXME: get rid of the \n at some point but watch out
(regexp (concat "^\\*+[ \t]+\\(" (regexp (concat "^\\*+[ \t]+\\("
(if org-select-this-todo-keyword (if org-select-this-todo-keyword
(if (equal org-select-this-todo-keyword "*") (if (equal org-select-this-todo-keyword "*")
@ -3967,7 +3966,6 @@ written as 2-digit years."
"Switch to daily view for agenda. "Switch to daily view for agenda.
With argument MONTH, switch to that month." With argument MONTH, switch to that month."
(interactive "P") (interactive "P")
;; FIXME: allow month like 812 to mean 2008 december
(org-agenda-change-time-span 'month month)) (org-agenda-change-time-span 'month month))
(defun org-agenda-year-view (&optional year) (defun org-agenda-year-view (&optional year)
"Switch to daily view for agenda. "Switch to daily view for agenda.
@ -4052,12 +4050,12 @@ so that the date SD will be in that range."
sd)))) sd))))
(cons sd nd))) (cons sd nd)))
;; FIXME: does not work if user makes date format that starts with a blank
(defun org-agenda-next-date-line (&optional arg) (defun org-agenda-next-date-line (&optional arg)
"Jump to the next line indicating a date in agenda buffer." "Jump to the next line indicating a date in agenda buffer."
(interactive "p") (interactive "p")
(org-agenda-check-type t 'agenda 'timeline) (org-agenda-check-type t 'agenda 'timeline)
(beginning-of-line 1) (beginning-of-line 1)
;; This does not work if user makes date format that starts with a blank
(if (looking-at "^\\S-") (forward-char 1)) (if (looking-at "^\\S-") (forward-char 1))
(if (not (re-search-forward "^\\S-" nil t arg)) (if (not (re-search-forward "^\\S-" nil t arg))
(progn (progn
@ -4088,9 +4086,11 @@ so that the date SD will be in that range."
;; FIXME this is currently not used. ;; FIXME this is currently not used.
(defun org-highlight-until-next-command (beg end &optional buffer) (defun org-highlight-until-next-command (beg end &optional buffer)
"Move the highlight overlay to BEG/END, remove it before the next command."
(org-highlight beg end buffer) (org-highlight beg end buffer)
(add-hook 'pre-command-hook 'org-unhighlight-once)) (add-hook 'pre-command-hook 'org-unhighlight-once))
(defun org-unhighlight-once () (defun org-unhighlight-once ()
"Remove the highlight from its position, and this function from the hook."
(remove-hook 'pre-command-hook 'org-unhighlight-once) (remove-hook 'pre-command-hook 'org-unhighlight-once)
(org-unhighlight)) (org-unhighlight))
@ -4522,7 +4522,6 @@ the same tree node, and the headline of the tree node in the Org-mode file."
(org-agenda-change-all-lines newhead hdmarker) (org-agenda-change-all-lines newhead hdmarker)
(beginning-of-line 1)))) (beginning-of-line 1))))
;; FIXME: should fix the tags property of the agenda line. ;; FIXME: should fix the tags property of the agenda line.
(defun org-agenda-set-tags () (defun org-agenda-set-tags ()
"Set tags for the current headline." "Set tags for the current headline."

View File

@ -405,7 +405,7 @@ Org-mode file."
:group 'org-export) :group 'org-export)
(defcustom org-export-html-coding-system nil (defcustom org-export-html-coding-system nil
"FIXME" "Coding system for HTML export, defaults to buffer-file-coding-system."
:group 'org-export-html :group 'org-export-html
:type 'coding-system) :type 'coding-system)

View File

@ -185,12 +185,6 @@ to add the symbol `xyz', and the package must have a call to
(const :tag "C toc: Table of contents for Org-mode buffer" org-toc) (const :tag "C toc: Table of contents for Org-mode buffer" org-toc)
(repeat :tag "External packages" :inline t (symbol :tag "Package")))) (repeat :tag "External packages" :inline t (symbol :tag "Package"))))
;; FIXME: Needs a separate group...
(defcustom org-completion-fallback-command 'hippie-expand
"The expansion command called by \\[org-complete] in normal context.
Normal means, no org-mode-specific context."
:group 'org
:type 'function)
(defgroup org-startup nil (defgroup org-startup nil
"Options concerning startup of Org-mode." "Options concerning startup of Org-mode."
@ -1325,7 +1319,7 @@ are matched against file names, and values."
"Targets for refiling entries with \\[org-refile]. "Targets for refiling entries with \\[org-refile].
This is list of cons cells. Each cell contains: This is list of cons cells. Each cell contains:
- a specification of the files to be considered, either a list of files, - a specification of the files to be considered, either a list of files,
or a symbol whose function or value fields will be used to retrieve or a symbol whose function or variable value will be used to retrieve
a file name or a list of file names. Nil means, refile to a different a file name or a list of file names. Nil means, refile to a different
heading in the current buffer. heading in the current buffer.
- A specification of how to find candidate refile targets. This may be - A specification of how to find candidate refile targets. This may be
@ -1339,7 +1333,6 @@ This is list of cons cells. Each cell contains:
headlines that are refiling targets. headlines that are refiling targets.
- a cons cell (:level . N). Any headline of level N is considered a target. - a cons cell (:level . N). Any headline of level N is considered a target.
- a cons cell (:maxlevel . N). Any headline with level <= N is a target." - a cons cell (:maxlevel . N). Any headline with level <= N is a target."
;; FIXME: what if there are a var and func with same name???
:group 'org-remember :group 'org-remember
:type '(repeat :type '(repeat
(cons (cons
@ -1516,7 +1509,6 @@ the following lines anywhere in the buffer:
((and (listp org-log-done) (memq 'done org-log-done)) ((and (listp org-log-done) (memq 'done org-log-done))
(setq org-log-done 'note))) (setq org-log-done 'note)))
;; FIXME: document
(defcustom org-log-note-clock-out nil (defcustom org-log-note-clock-out nil
"Non-nil means, recored a note when clocking out of an item. "Non-nil means, recored a note when clocking out of an item.
This can also be configured on a per-file basis by adding one of This can also be configured on a per-file basis by adding one of
@ -1624,6 +1616,14 @@ The value should be the state to which the entry should be switched."
(const :tag "Don't force a state" nil) (const :tag "Don't force a state" nil)
(string :tag "State"))) (string :tag "State")))
(defcustom org-clock-heading-function nil
"When non-nil, should be a function to create `org-clock-heading'.
This is the string shown in the mode line when a clock is running.
The function is called with point at the beginning of the headline."
:group 'org-progress
:type 'function)
(defgroup org-priorities nil (defgroup org-priorities nil
"Priorities in Org-mode." "Priorities in Org-mode."
:tag "Org Priorities" :tag "Org Priorities"
@ -1694,7 +1694,7 @@ of minutes to shift."
(integer :tag "when inserting times") (integer :tag "when inserting times")
(integer :tag "when modifying times"))) (integer :tag "when modifying times")))
;; Make sure old customizations of this variable don't lead to problems. ;; Normalize old customizations of this variable.
(when (integerp org-time-stamp-rounding-minutes) (when (integerp org-time-stamp-rounding-minutes)
(setq org-time-stamp-rounding-minutes (setq org-time-stamp-rounding-minutes
(list org-time-stamp-rounding-minutes (list org-time-stamp-rounding-minutes
@ -1798,13 +1798,6 @@ moved to the new date."
:group 'org-time :group 'org-time
:type 'boolean) :type 'boolean)
(defcustom org-clock-heading-function nil
"When non-nil, should be a function to create `org-clock-heading'.
This is the string shown in the mode line when a clock is running.
The function is called with point at the beginning of the headline."
:group 'org-time ; FIXME: Should we have a separate group????
:type 'function)
(defgroup org-tags nil (defgroup org-tags nil
"Options concerning tags in Org-mode." "Options concerning tags in Org-mode."
:tag "Org Tags" :tag "Org Tags"
@ -2283,6 +2276,19 @@ Use customize to modify this, or restart Emacs after changing it."
(string :tag "HTML end tag") (string :tag "HTML end tag")
(option (const verbatim))))) (option (const verbatim)))))
;;; Miscellaneous options
(defgroup org-completion nil
"Completion in Org-mode."
:tag "Org Completion"
:group 'org)
(defcustom org-completion-fallback-command 'hippie-expand
"The expansion command called by \\[org-complete] in normal context.
Normal means, no org-mode-specific context."
:group 'org-completion
:type 'function)
;;; The faces ;;; The faces
(defgroup org-faces nil (defgroup org-faces nil
@ -2634,7 +2640,6 @@ month and 365.24 days for a year)."
(number :tag "Fraction of head-warning time passed") (number :tag "Fraction of head-warning time passed")
(sexp :tag "Face")))) (sexp :tag "Face"))))
;; FIXME: this is not a good face yet.
(defface org-agenda-restriction-lock (defface org-agenda-restriction-lock
(org-compatible-face nil (org-compatible-face nil
'((((class color) (min-colors 88) (background light)) (:background "yellow1")) '((((class color) (min-colors 88) (background light)) (:background "yellow1"))
@ -2679,7 +2684,6 @@ If it is less than 8, the level-1 face gets re-used for level N+1 etc."
(defvar mark-active) (defvar mark-active)
;; Various packages ;; Various packages
;; FIXME: get the argument lists for the UNKNOWN stuff
(declare-function calendar-absolute-from-iso "cal-iso" (&optional date)) (declare-function calendar-absolute-from-iso "cal-iso" (&optional date))
(declare-function calendar-forward-day "cal-move" (arg)) (declare-function calendar-forward-day "cal-move" (arg))
(declare-function calendar-goto-date "cal-move" (date)) (declare-function calendar-goto-date "cal-move" (date))
@ -3266,7 +3270,7 @@ Respect keys that are already there."
(push (cons k c) new)))) (push (cons k c) new))))
(nreverse new))) (nreverse new)))
;;; Some variables ujsed in various places ;;; Some variables used in various places
(defvar org-window-configuration nil (defvar org-window-configuration nil
"Used in various places to store a window configuration.") "Used in various places to store a window configuration.")
@ -4193,12 +4197,6 @@ If KWD is a number, get the corresponding match group."
(>= (match-end 0) pos)))) (>= (match-end 0) pos))))
t t
(eq org-cycle-emulate-tab t)) (eq org-cycle-emulate-tab t))
; (if (and (looking-at "[ \n\r\t]")
; (string-match "^[ \t]*$" (buffer-substring
; (point-at-bol) (point))))
; (progn
; (beginning-of-line 1)
; (and (looking-at "[ \t]+") (replace-match ""))))
(call-interactively (global-key-binding "\t"))) (call-interactively (global-key-binding "\t")))
(t (save-excursion (t (save-excursion
@ -4633,26 +4631,6 @@ but create the new hedline after the current line."
;; insert right here ;; insert right here
nil) nil)
(t (t
; ;; in the middle of the line
; (org-show-entry)
; (if (org-get-alist-option org-M-RET-may-split-line 'headline)
; (if (and
; (org-on-heading-p)
; (looking-at ".*?\\([ \t]+\\(:[[:alnum:]_@:]+:\\)\\)[ \r\n]"))
; ;; protect the tags
;; (let ((tags (match-string 2)) pos)
; (delete-region (match-beginning 1) (match-end 1))
; (setq pos (point-at-bol))
; (newline (if blank 2 1))
; (save-excursion
; (goto-char pos)
; (end-of-line 1)
; (insert " " tags)
; (org-set-tags nil 'align)))
; (newline (if blank 2 1)))
; (newline (if blank 2 1))))
;; in the middle of the line ;; in the middle of the line
(org-show-entry) (org-show-entry)
(let ((split (let ((split
@ -5102,9 +5080,9 @@ If optional TREE is given, use this text instead of the kill ring."
(delete-region (point-at-bol) (point))) (delete-region (point-at-bol) (point)))
;; Paste ;; Paste
(beginning-of-line 1) (beginning-of-line 1)
(org-back-over-empty-lines) ;; FIXME: correct fix???? (org-back-over-empty-lines)
(setq beg (point)) (setq beg (point))
(insert-before-markers txt) ;; FIXME: correct fix???? (insert-before-markers txt)
(unless (string-match "\n\\'" txt) (insert "\n")) (unless (string-match "\n\\'" txt) (insert "\n"))
(setq end (point)) (setq end (point))
(goto-char beg) (goto-char beg)
@ -7195,6 +7173,7 @@ With three \\[universal-argument] prefixes, negate the meaning of
(apply 'completing-read args))) (apply 'completing-read args)))
;;; Opening/following a link ;;; Opening/following a link
(defvar org-link-search-failed nil) (defvar org-link-search-failed nil)
(defun org-next-link () (defun org-next-link ()
@ -7767,7 +7746,7 @@ on the system \"/user@host:\"."
(t nil))) (t nil)))
;;;; Hooks for remember.el, and refiling ;;;; Refiling
(defun org-get-org-file () (defun org-get-org-file ()
"Read a filename, with default directory `org-directory'." "Read a filename, with default directory `org-directory'."
@ -7790,8 +7769,6 @@ on the system \"/user@host:\"."
(throw 'exit (cdr entry)))) (throw 'exit (cdr entry))))
nil))))) nil)))))
;;;; Refiling
(defvar org-refile-target-table nil (defvar org-refile-target-table nil
"The list of refile targets, created by `org-refile'.") "The list of refile targets, created by `org-refile'.")
@ -7883,9 +7860,8 @@ on the system \"/user@host:\"."
(defun org-refile (&optional goto default-buffer) (defun org-refile (&optional goto default-buffer)
"Move the entry at point to another heading. "Move the entry at point to another heading.
The list of target headings is compiled using the information in The list of target headings is compiled using the information in
`org-refile-targets', which see. This list is created upon first use, and `org-refile-targets', which see. This list is created before each use
you can update it by calling this command with a double prefix (`C-u C-u'). and will therefore always be up-to-date.
FIXME: Can we find a better way of updating?
At the target location, the entry is filed as a subitem of the target heading. At the target location, the entry is filed as a subitem of the target heading.
Depending on `org-reverse-note-order', the new subitem will either be the Depending on `org-reverse-note-order', the new subitem will either be the
@ -7894,10 +7870,7 @@ first of the last subitem.
With prefix arg GOTO, the command will only visit the target location, With prefix arg GOTO, the command will only visit the target location,
not actually move anything. not actually move anything.
With a double prefix `C-c C-c', go to the location where the last refiling With a double prefix `C-c C-c', go to the location where the last refiling
operation has put the subtree. operation has put the subtree."
With a double prefix argument, the command can be used to jump to any
heading in the current buffer."
(interactive "P") (interactive "P")
(let* ((cbuf (current-buffer)) (let* ((cbuf (current-buffer))
(filename (buffer-file-name (buffer-base-buffer cbuf))) (filename (buffer-file-name (buffer-base-buffer cbuf)))
@ -8229,15 +8202,6 @@ this is nil.")
(defvar org-setting-tags nil) ; dynamically skiped (defvar org-setting-tags nil) ; dynamically skiped
;; FIXME: better place
(defun org-property-or-variable-value (var &optional inherit)
"Check if there is a property fixing the value of VAR.
If yes, return this value. If not, return the current value of the variable."
(let ((prop (org-entry-get nil (symbol-name var) inherit)))
(if (and prop (stringp prop) (string-match "\\S-" prop))
(read prop)
(symbol-value var))))
(defun org-parse-local-options (string var) (defun org-parse-local-options (string var)
"Parse STRING for startup setting relevant for variable VAR." "Parse STRING for startup setting relevant for variable VAR."
(let ((rtn (symbol-value var)) (let ((rtn (symbol-value var))
@ -8876,7 +8840,7 @@ the current entry. If not, assume that it can be inserted at point."
(goto-char org-log-note-marker) (goto-char org-log-note-marker)
(org-switch-to-buffer-other-window "*Org Note*") (org-switch-to-buffer-other-window "*Org Note*")
(erase-buffer) (erase-buffer)
(if (memq org-log-note-how '(time state)) ; FIXME: time or state???????????? (if (memq org-log-note-how '(time state))
(org-store-log-note) (org-store-log-note)
(let ((org-inhibit-startup t)) (org-mode)) (let ((org-inhibit-startup t)) (org-mode))
(insert (format "# Insert note for %s. (insert (format "# Insert note for %s.
@ -8940,10 +8904,6 @@ the current entry. If not, assume that it can be inserted at point."
(move-marker org-log-note-return-to nil) (move-marker org-log-note-return-to nil)
(and org-log-post-message (message "%s" org-log-post-message))) (and org-log-post-message (message "%s" org-log-post-message)))
;; FIXME: what else would be useful?
;; - priority
;; - date
(defun org-sparse-tree (&optional arg) (defun org-sparse-tree (&optional arg)
"Create a sparse tree, prompt for the details. "Create a sparse tree, prompt for the details.
This command can create sparse trees. You first need to select the type This command can create sparse trees. You first need to select the type
@ -10021,6 +9981,14 @@ If the property is not present at all, nil is returned."
(org-match-string-no-properties 1) (org-match-string-no-properties 1)
""))))))) "")))))))
(defun org-property-or-variable-value (var &optional inherit)
"Check if there is a property fixing the value of VAR.
If yes, return this value. If not, return the current value of the variable."
(let ((prop (org-entry-get nil (symbol-name var) inherit)))
(if (and prop (stringp prop) (string-match "\\S-" prop))
(read prop)
(symbol-value var))))
(defun org-entry-delete (pom property) (defun org-entry-delete (pom property)
"Delete the property PROPERTY from entry at point-or-marker POM." "Delete the property PROPERTY from entry at point-or-marker POM."
(org-with-point-at pom (org-with-point-at pom
@ -10504,7 +10472,6 @@ This is the compiled version of the format.")
(setq ov (org-columns-new-overlay (setq ov (org-columns-new-overlay
beg (setq beg (1+ beg)) string beg (setq beg (1+ beg)) string
(list color 'org-column))) (list color 'org-column)))
;;; (list (get-text-property (point-at-bol) 'face) 'org-column)))
(org-overlay-put ov 'keymap org-columns-map) (org-overlay-put ov 'keymap org-columns-map)
(org-overlay-put ov 'org-columns-key property) (org-overlay-put ov 'org-columns-key property)
(org-overlay-put ov 'org-columns-value (cdr ass)) (org-overlay-put ov 'org-columns-value (cdr ass))
@ -10716,7 +10683,7 @@ Where possible, use the standard interface for changing this line."
(nth 3 (assoc key org-columns-current-fmt-compiled))) (nth 3 (assoc key org-columns-current-fmt-compiled)))
(org-columns-update key)))) (org-columns-update key))))
(defun org-edit-headline () ; FIXME: this is not columns specific (defun org-edit-headline () ; FIXME: this is not columns specific. Make interactive????? Use from agenda????
"Edit the current headline, the part without TODO keyword, TAGS." "Edit the current headline, the part without TODO keyword, TAGS."
(org-back-to-heading) (org-back-to-heading)
(when (looking-at org-todo-line-regexp) (when (looking-at org-todo-line-regexp)
@ -11453,8 +11420,7 @@ at the cursor, it will be modified."
(org-insert-time-stamp time (or org-time-was-given arg) (org-insert-time-stamp time (or org-time-was-given arg)
nil nil nil (list org-end-time-was-given)))))) nil nil nil (list org-end-time-was-given))))))
;; FIXME: can we use this for something else???? ;; FIXME: can we use this for something else, like computing time differences?
;; like computing time differences?????
(defun org-get-compact-tod (s) (defun org-get-compact-tod (s)
(when (string-match "\\(\\([012]?[0-9]\\):\\([0-5][0-9]\\)\\)\\(-\\(\\([012]?[0-9]\\):\\([0-5][0-9]\\)\\)\\)?" s) (when (string-match "\\(\\([012]?[0-9]\\):\\([0-5][0-9]\\)\\)\\(-\\(\\([012]?[0-9]\\):\\([0-5][0-9]\\)\\)\\)?" s)
(let* ((t1 (match-string 1 s)) (let* ((t1 (match-string 1 s))
@ -12453,7 +12419,6 @@ in the timestamp determines what will be changed."
(memq org-ts-what '(day month year))) (memq org-ts-what '(day month year)))
(org-recenter-calendar (time-to-days time)))))) (org-recenter-calendar (time-to-days time))))))
;; FIXME: does not yet work for lead times
(defun org-modify-ts-extra (s pos n dm) (defun org-modify-ts-extra (s pos n dm)
"Change the different parts of the lead-time and repeat fields in timestamp." "Change the different parts of the lead-time and repeat fields in timestamp."
(let ((idx '(("d" . 0) ("w" . 1) ("m" . 2) ("y" . 3) ("d" . -1) ("y" . 4))) (let ((idx '(("d" . 0) ("w" . 1) ("m" . 2) ("y" . 3) ("d" . -1) ("y" . 4)))
@ -15699,6 +15664,7 @@ Show the heading too, if it is currently invisible."
"Restrict future agenda commands to the location at point in speedbar. "Restrict future agenda commands to the location at point in speedbar.
To get rid of the restriction, use \\[org-agenda-remove-restriction-lock]." To get rid of the restriction, use \\[org-agenda-remove-restriction-lock]."
(interactive) (interactive)
(require 'org-agenda)
(let (p m tp np dir txt w) (let (p m tp np dir txt w)
(cond (cond
((setq p (text-property-any (point-at-bol) (point-at-eol) ((setq p (text-property-any (point-at-bol) (point-at-eol)
@ -15743,7 +15709,7 @@ To get rid of the restriction, use \\[org-agenda-remove-restriction-lock]."
(lambda () (org-show-context 'org-goto))))) (lambda () (org-show-context 'org-goto)))))
;;; Fixes and Hacks ;;; Fixes and Hacks for problems with other packages
;; Make flyspell not check words in links, to not mess up our keymap ;; Make flyspell not check words in links, to not mess up our keymap
(defun org-mode-flyspell-verify () (defun org-mode-flyspell-verify ()