Incremento de días / meses / fechas, etc. dentro del búfer

7

En un documento de texto, durante la edición, a menudo necesito aumentar / disminuir los datos del calendario. Entonces, el viernes deberá convertirse en lunes, diciembre deberá convertirse en marzo, etc.

O el 28 de abril después de agregar 5 se convertirá en 03 de mayo, e incluso el 31 de diciembre de 2017 después de agregar 15 se convertirá en 15 de enero de 2018.

¿Hay alguna manera de lograr esto colocando el cursor en la palabra / número deseado y presionando algunas teclas para que aumente o disminuya?

Entonces, mientras que el viernes, presioné algo para decir 'Agregar 3' y se convirtió en lunes, etc. Mientras que el 28 de 28 de abril, presioné algo para decir 'Agregar 5' y se convirtió en 03 de mayo. Pero mientras que el 28 de abril, toqué algo para decir 'Restar 2', se convierte en 28 de febrero, etc.

Solo para que te hagas una idea, vim tiene un complemento de velocidad que hace exactamente lo que busco.

deshmukh
fuente
Podría considerar usar el modo org para exportar a latex. orgmode.org/manual/LaTeX-export.html#LaTeX-export Luego puede usar los atajos incorporados en el modo org para aumentar sus especificaciones de fecha. orgmode.org/manual/Creating-timestamps.html#Creating-timestamps es lo que estoy haciendo de todos modos ..
Dieter.Wilhelm
Esto no es exactamente lo que está buscando y no es una solución completa, pero calc puede aumentar las fechas. Para obtener una descripción general, consulte nullprogram.com/blog/2009/06/23. Usando eso y tal vez algo como el modo incrustado de calc, puede combinar algo que haga exactamente lo que desea.
izkon el

Respuestas:

0

La respuesta utiliza calendar-day-name-arrayy calendar-month-name-arrayque se establecen en calendar.el y se envían con Emacs:

;; calendar-day-name-array ==> ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]

;; calendar-month-name-array ==> ["January" "February" "May" "April" "May" "June" "July" "August" "September" "October" "November" "December"]

(require 'calendar)

(defun ar-shift--intern (arg thisarray)
    (let* ((name (substring-no-properties (word-at-point)))
       (bounds (bounds-of-thing-at-point 'word))
       (beg (car-safe bounds))
       (end (cdr-safe bounds))
       (counter 0)
       (laenge (length thisarray))
       (orig (point)) 
       idxr dlr
       (datelist (progn (while (< counter laenge)
                  (push (aref thisarray counter) dlr)
                  (setq counter (1+ counter)))
                (nreverse dlr)))
       (idx (progn
          (dolist (ele datelist)
            (unless idxr
              (when (string= ele name)
            (setq idxr counter))
              (setq counter (1+ counter))))
          idxr))
       (replaceform (aref thisarray
                  (if (< (+ arg idx) laenge)
                  (+ arg idx)
                (% (+ arg idx) laenge)))))
      (if (and beg end)
      (progn
        (delete-region beg end)
        (insert replaceform)
        (goto-char orig))
    (error "Don't see a date at point"))))

(defun ar-shift-day-atpt (arg)
   "Raise name of day at point ARG times.

Decrease with negative ARG"
   (interactive "p")
   (ar-shift--intern arg  calendar-day-name-array))

(defun ar-shift-month-atpt (arg)
  "Raise name of month at point ARG times.

Decrease with negative ARG"
  (interactive "p")
  (ar-shift--intern arg calendar-month-name-array))

También aumente o disminuya los enteros positivos: https://github.com/andreas-roehler/numbers-at-point

Andreas Röhler
fuente
Gracias. Pero esto deja algunas lagunas. Le sugiero que busque speeddating para vim para tener una mejor idea.
deshmukh