组织捕获和计时行为不端

时间:2014-02-13 23:04:11

标签: emacs org-mode gtd

我相信你们中的一些人可能已经(从我最近的一系列问题)中收集到我正在设置emacs的组织模式并走过布伦特·汉森令人印象深刻的组织set up。他是一个时髦的狂热分子,我喜欢他为跟踪项目花费的时间而做的很多事情。

我(想)在设置方面并没有搞砸,但每当我试图完成任务时,我都会收到大量乱码的错误(下面报道)。我试图看看是否有一些模式可以解决错误但却无法发现它们。它们似乎经常发生,但不是所有的时间都使得调试它们更加痛苦。

通常情况下,当我从一个任务中退出时(但有时也是我的时钟),我会收到这样的消息

save-excursion: Wrong number of arguments: #[(drawer pos) "rÂ!
Ã!pq~bÄÅ    ÆQÇ\"$ÈÉ!+" [pos drawer markerp marker-buffer org-in-regexp "^[     ]*:" ":[    ]*
[   ]*:END:[    ]*
?" 2 replace-match ""] 4 ("/Users/krishnan/.emacs.d/elpa/org-20140210/org.elc" . 450779)], 1
[a-z..]:Set [SPC]:clear [2 times]

与往常一样,我很乐意跟进可能有助于发现错误来源的问题。我无法看出是否包含我的整个.emacs等标准做法,但我很乐意根据需要发布跟进信息。

非常感谢提前!

编辑1:关注@ iqbal-ansari,我做了M-x toggle-debug-on-error,产生了以下垃圾:

Debugger entered--Lisp error: (wrong-number-of-arguments #[(drawer pos) "r\302!\203
\303!\202pq\210\212\214~\210b\210\304\305   \306Q\307\"\205$\310\311!+\207" [pos drawer markerp marker-buffer org-in-regexp "^[     ]*:" ":[    ]*
[   ]*:END:[    ]*
?" 2 replace-match ""] 4 ("/Users/krishnan/.emacs.d/elpa/org-20140210/org.elc" . 450779)] 1)
  org-remove-empty-drawer-at(307)
  (save-excursion (beginning-of-line 0) (org-remove-empty-drawer-at (point)))
  bh/remove-empty-drawer-on-clock-out()
  #[(f) " \207" [f] 1](bh/remove-empty-drawer-on-clock-out)
  mapc(#[(f) " \207" [f] 1] (org-clock-remove-empty-clock-drawer bh/remove-empty-drawer-on-clock-out bh/clock-out-maybe))
  byte-code("\306 \204\307\310\"    \311 \210\203\312\313\314\"\210\202\315\316!\210\f\2035\317\320r\321
!q\210@)\322\314\323%\2027A\324B!\322\211\211\211\211\211CDEFGHIAIJ\212\325 q\210\214~\210
b\210\326\327!\210\330\331KP!\203~\332\327!L\232\203~\332\333!H\202\216\203\212\312\313\322\"\210\202\216\334\335!\210\336\225b\210`\337 |\210\340c\210\341M\206\242I\342\343#G\344\345\346\347G!\"!\344\345\346\347H!\"!ZF\350F\351\245!EFE\351_ZF\350F\352\245!DF\211\352_ZF\353\354\355ED#\261\210N\205\364ED\\\336U\211C\203\326\327!\210`\337 |\210\330\356!\203d`TV\203\357\327!\210
\322\211\223\210O\322\211\223\210P\2033\360\361\322\211\211\211\362\363\314!\364Q&\210Q\203@\365Q!\210\322QR\203M\365R!\210\322R\307\310\"  A\203\234\212\366\314!\210\314\322ST\367A!\203\205\330U!\210A\332\333!!\211V\203\201\370V!\210)\202\233A\203\233\330W\331A\371R!\204\233\370A!\210+\311 \210\372\373\374E\352_D\\!\375QGC\203\267\376\202\270\377#\210XEYZ\232\203\335[\201]=\203\335S\203\335\307\201^E\"E\201_\201`E\"\210)\306 ?\205\362\322\211\\.\n\207" [global-mode-string org-frame-title-format-backup frame-title-format fail-quietly switch-to-state org-clock-marker org-clocking-p delq org-mode-line-string force-mode-line-update throw exit t user-error "No active clock" completing-read "Switch to state: " marker-buffer nil "DONE" org-current-time org-clocking-buffer beginning-of-line 1 looking-at "[  ]*" match-string 2 error "Clock start time is gone" 0 point-at-eol "--" org-insert-time-stamp with-hm inactive org-float-time apply encode-time org-parse-time-string floor 3600 60 " => " format "%2d:%02d" "\n" delete-char org-add-log-setup clock-out ...] 10)
  org-clock-out()
  org-clock-out-if-current()
  run-hooks(org-after-todo-state-change-hook)
  byte-code("\306\307!\210\310\311P!\203\312 \210\307\310\n!\203\313\225Sb\210\310\314\315Q!\204)\310\316!\210\304 \317 \304 @\320\216\321\322\323\307\211$*ABBCCDDE\313\232\203X\322E\324\202ZFF\325\326!G\313\224H\327G!I\330IJ\"\211KA@L\331K8M\332K8NG\206\212\333O\307PGQ\235\211RAST\203\303E\334\232\203\255U\335=\204\276E\204\303U\203\303U\335=\204\303\336 \202E\337\232\203\341U\203\324T\204\341\340\341\342\343Q\"\322\307$\202E\344=\203\376G\203\370S\205S@\202Q@\202E\345=\203/RQ\232?\205G\203\"\346QGSG\347#Q8\202Q#\350#!@)\202U\307=\203DE\351\232\203D\322\211E\206E\203\310E\333\232\203T\322\202E\352=\203_\322\202E\353=\203qM\206V@\202E\354=\203\210IW\235A@\206W@\202E\355=\203\246\356W!WIW\235A@\206\242W@)\202EQ\235@\206E;\203\275\357\360E\"\202\361E!SQ8\202R\204\330I\206Q@\202GN\232\203\344\322\202S\204\355\322\202L\362>\203XY=\203S@\202SG\313V\205M\206V@\202S@Z\363\364ZO#\206&Z\211Z\2034\365Z\365Q\2025\365[\366\367\370G\371Z\372
\257\\\322\211]^=\203\230GV\235?_\212\304 @\373\216\212\214~\210\374\375\\\"-\204\230\376\377!\203\201\357\201jGZ`$\210\202\230\201k\201jGZ`$\210\201l\201m\322\"\210\201n\f!\210\201o[\307\211#\210\201pH!\204\276\201k\201q\201r[!\"\210I\204\342\327Z!I\330IJ\"\211KA@L\331K8M\332K8NE\201s>\203\201k\201t\346aG\201u\330Za\"a>G#aG\201v\201w\330Za\"\365#$\210ZV\235?_ZV\235\205,GV\235?^A\203:\201xA!\210D\204DB\203\357F\307=\204\357E\201y>\204\357\330ZD\"A@\206g\347\330GD\"8\211]\324=\203{F\324=\203{\201z]Z\204\205b\203\232Z\203\244Zc\235\203\244Gc\235\204\244\201{\322\211\201|#\210^\203\324B\203\324\201{\201|\201} \"\210]\204\324B\324=\203\324\201~\353ZG\201\324%\210Z\203\357]\203\357\201~\201\200ZG\201]%\210\201\201Z!\210d\203e\204\201\202\322\307\"\210f\203\201\203 \210\201\204\201\205!\210E\203,ZV\235\204,\327Z!I\201\206\317 \201\207 \201\210I$\210^\203a\201\211\201g!\203Z\304 @\201\212\216\201\213 g*\201\214Z!\210\201\215 \203\235n\204\235\212\201\216\326!\210\310h!)\203\235`\347\211\225\206\204\326\225\\W\203\235\347\225\206\220\326\225b\210\310\365!\203\235\201\217 \210i\203\256\212\201\220\201i\\\"\210) \205\264\312 .\207" [org-comment-string commentp org-outline-regexp org-todo-regexp match-data startpos org-back-to-heading t looking-at "^\\*+ " org-toggle-comment 0 " +" "\\( +\\|[  ]*$\\)" "\\(?: *\\|[    ]*$\\)" point-at-bol ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) org-entry-get nil "LOGGING" note match-string 1 org-get-todo-sequence-head assoc 3 4 "" (4) prefix org-fast-todo-selection (4) org-icompleting-read "State: " mapcar list right left - 2 last (4) none done nextset previousset reverse user-error "State `%s' not valid in this file" prefix-numeric-value ...] 10)
  org-todo(nil)
  call-interactively(org-todo)
  org-agenda-todo(nil)
  call-interactively(org-agenda-todo nil nil)

2 个答案:

答案 0 :(得分:15)

问题是由函数(org-remove-empty-drawer-at (point))中的行bh/remove-empty-drawer-on-clock-out引起的。如果您阅读函数org-remove-empty-drawer-at的文档(执行 Ch f org-remove-empty-drawer-at RET ,它会说该函数接受两个参数drawerpoint,而函数bh/remove-empty-drawer-on-clock-out只传递一个参数(点)。这会导致您报告的错误。似乎代码是为旧版本的org-编写的模式。

这是一个临时解决方案,删除行

(add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append)
从您的init文件

(并重新启动emacs)。这将消除错误。

<强>更新

我(我认为)是解决问题的永久解决方案。函数org-remove-empty-drawer-at的第一个参数是要删除的抽屉的名称,从Brent Hansen的setup看来他似乎想要删除空的'LOGBOOK'抽屉,在这种情况下修改函数{{1如下

bh/remove-empty-drawer-on-clock-out

请注意,参数“LOGBOOK”已添加到对函数(defun bh/remove-empty-drawer-on-clock-out () (interactive) (save-excursion (beginning-of-line 0) (org-remove-empty-drawer-at "LOGBOOK" (point)))) 的调用中。此外,您现在也不需要删除该行

org-remove-empty-drawer-at

来自你的初始文件。

答案 1 :(得分:9)

更新为(defun bh/remove-empty-drawer-on-clock-out () (interactive) (save-excursion (beginning-of-line 0) (org-remove-empty-drawer-at (point)))) (add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append) 后面临此问题。在更新之前,由于user2053036的回答,它已经在我的Emacs 24.4(Linux操作系统,从源代码构建)上工作。

在此版本中看起来不再需要额外的参数。我的工作初始化文件现在看起来像:

TARGET_SOUNDS_WORDS_ARRAY =TARGET_SOUNDS_DATA.targetWords[userInput][0].words