Como registrar horas offline rapidamente?

Às vezes, prefiro trabalhar offline. Posso cronometrá-lo e anotá-lo, evitando inicializar meu computador.

Gosto de usar uma tabela e org-update-all-dblocks para calcular minhas horas do dia. É muito conveniente para mim, porque posso passar vários minutos ao longo do dia fazendo trabalho para um cliente.

Se eu quiser adicionar rapidamente minhas horas off-line e atualizar a tabela, org-mode já tem uma função para isso? Sei que posso org-clock-in e org-clock-out para gerar um relógio e, em seguida, redigite-o manualmente e use org-update-all-dblocks para recalcular, mas o ideal é que eu possa chamar uma única função que me pergunte por quantos minutos desejo inserir. Provavelmente deveria apenas use a hora e a data atuais como o início, mesmo que isso aparentemente entre em conflito com o trabalho que eu começo a fazer depois de adicionar as horas offline.

Seria ainda melhor se org-mode tinha um conceito de horas off-line que entendia que eu poderia saber a data, mas provavelmente não registrei a hora do dia e, portanto, a hora do dia poderia ser deixada de fora, mas ainda calculada em uma tabela de relógio.

Se eu tiver que escrever algum q uick e dirty elisp, que funções seriam úteis para mim além das acima? Acho que as peças que estou perdendo são algo para pegar o relógio mais recente, algo para adicionar minutos a ele e algo para solicitar um número de minutos.

Resposta

O comando a seguir insere a entrada típica do logbook da organização, um intervalo de tempo iniciando em N minutos atrás:

(defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (let* ((ctime (cdr (decode-time (current-time)))) (min (car ctime)) (start (apply "encode-time 0 (- min n) (cdr ctime)))) (org-insert-time-stamp start t t "CLOCK: ") (insert "--") (org-insert-time-stamp (current-time) t t))) 

Resposta

A resposta de mutbuerger “me ajudou muito. É minha primeira vez programando em elisp diferente de configuração. Sua resposta foi quase certa, mas eu ainda queria a funcionalidade normal de entrada e saída para encontrar ou criar o livro de registro no título mais próximo e adicionar um observação.

Minha solução corrigida foi esta:

(defun offset-current-time (n) (let* ((ctime (cdr (decode-time (current-time)))) (minutes (car ctime))) (apply "encode-time 0 (- minutes n) (cdr ctime)))) (defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (org-clock-in nil (offset-current-time n)) (org-clock-out)) (defadvice org-clock-out (after org-clock-out-after activate) (org-update-all-dblocks)) (add-hook "org-mode-hook (lambda () ; Keys for org mode ;snip (define-key evil-normal-state-map (kbd "gl") "org-insert-clock-range) ;snip )) 

Resposta

Eu gerencio horários off-line com uma caixa de ferramentas de funções personalizadas para manipular os registros do relógio na sintaxe da própria Org e um script para converter uma notação de texto simples abreviada para a sintaxe da Org.

Funções em https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :

  • org-clock-split-current-interval (Eu limitei isso a C-c o s): se houver um intervalo na linha atual, no qual realmente duas tarefas foram realizadas, facilite a divisão em dois intervalos.
  • org-clock-change-hh-mm (vinculado a C-c o :): deixando o dia inalterado, adapte as horas / minutos de um registro de relógio. Caso de uso típico : copie uma linha de registro do relógio de outro lugar, adapte-a de acordo com o tempo trabalhado offline.

Script: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl

Meu fluxo de trabalho para usá-lo:

  1. registrar os tempos offline em um arquivo de texto, por exemplo no meu celular
  2. sincronizar este arquivo com o meu PC
  3. no PC, executar org-offline-to-clock.pl BEFORE > AFTER
  4. validar com diff BEFORE AFTER
  5. se estiver satisfeito, mv AFTER BEFORE
  6. mova as linhas selecionadas para meu arquivo org real.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *