aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2020-05-31 01:15:36 +1200
committerTom Ryder <tom@sanctum.geek.nz>2020-05-31 01:20:33 +1200
commit598090797c2cb3a4fe945d2eacd3eca42a0cfe5d (patch)
tree96daceb67ab452bdb98cbc63d78112454c20c370
downloadvim-put-date-598090797c2cb3a4fe945d2eacd3eca42a0cfe5d.tar.gz
vim-put-date-598090797c2cb3a4fe945d2eacd3eca42a0cfe5d.zip
First version from tejr dotfiles v9.12.0v0.1.0
-rw-r--r--README.md27
-rw-r--r--VERSION1
-rw-r--r--autoload/put_date.vim24
-rw-r--r--doc/put_date.txt44
-rw-r--r--plugin/put_date.vim6
5 files changed, 102 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..469b518
--- /dev/null
+++ b/README.md
@@ -0,0 +1,27 @@
+put\_date.vim
+=============
+
+This plugin provides a convenience wrapper around `strftime()` to insert the
+current date and time in the buffer, defaulting to RFC2822 format, and
+requiring neither percent signs nor quoting for any specified format.
+
+ :PutDate
+ Sun, 31 May 2020 01:04:41 +1200
+ :PutDate d/m/Y
+ 31/05/2020
+
+An attempt to use the UTC time zone rather than the local time zone is made if
+a bang is added:
+
+ :PutDate!
+ Sat, 30 May 2020 13:04:14 +0000
+ :PutDate!
+ 13
+
+License
+-------
+
+Copyright (c) [Tom Ryder][1]. Distributed under the same terms as Vim itself.
+See `:help license`.
+
+[1]: https://sanctum.geek.nz/
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..6e8bf73
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.1.0
diff --git a/autoload/put_date.vim b/autoload/put_date.vim
new file mode 100644
index 0000000..b0b0b54
--- /dev/null
+++ b/autoload/put_date.vim
@@ -0,0 +1,24 @@
+" RFC2822 format string for strftime()
+let s:rfc_2822 = '%a, %d %b %Y %T %z'
+
+" Write a date to the buffer, UTC or local, in the specified format,
+" defaulting to RFC2822; formats are provided without the leading % signs
+" before each letter, like PHP date()
+"
+function! put_date#(line, utc, format) abort
+ let line = a:line
+ let utc = a:utc
+ let format = strlen(a:format)
+ \ ? substitute(a:format, '\a', '%&', 'g')
+ \ : s:rfc_2822
+ if utc
+ if exists('$TZ')
+ let tz = $TZ
+ endif
+ let $TZ = 'UTC'
+ endif
+ execute line.'put =strftime(format)'
+ if exists('tz')
+ let $TZ = tz
+ endif
+endfunction
diff --git a/doc/put_date.txt b/doc/put_date.txt
new file mode 100644
index 0000000..9fb7021
--- /dev/null
+++ b/doc/put_date.txt
@@ -0,0 +1,44 @@
+*put_date.txt* For Vim version 7.0 Last change: 2020 May 31
+
+DESCRIPTION *put_date*
+
+This plugin provides a convenience wrapper around `strftime()` to insert the
+current date and time in the buffer, defaulting to RFC2822 format, and
+requiring neither percent signs nor quoting for any specified format.
+>
+ :PutDate
+ Sun, 31 May 2020 01:04:41 +1200
+ :PutDate d/m/Y
+ 31/05/2020
+<
+An attempt to use the UTC time zone rather than the local time zone is made if
+a bang is added:
+>
+ :PutDate!
+ Sat, 30 May 2020 13:04:14 +0000
+ :PutDate!
+ 13
+<
+This time zone switching only works reliably on Unix with Vim v8.2, or Vim 8.1
+with patch 1567:
+
+REQUIREMENTS *put_date-requirements*
+
+This plugin only loads if 'compatible' is not set. Strictly speaking, it also
+depends on the underlying system's implementation of the POSIX `strftime(3)`
+function, just as Vim's own |strftime()| does. It will not behave identically
+between systems.
+
+In particular, the time zone switching only works reliably on Unix, and it's
+broken there between patches 8.1.1313 and 8.1.1567. See |version8.txt| for
+details. At the time of writing, it's still broken on Windows since 8.1.1313.
+
+AUTHOR *put_date-author*
+
+Written and maintained by Tom Ryder <tom@sanctum.geek.nz>.
+
+LICENSE *put_date-license*
+
+Licensed for distribution under the same terms as Vim itself (see |license|).
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/plugin/put_date.vim b/plugin/put_date.vim
new file mode 100644
index 0000000..7848e95
--- /dev/null
+++ b/plugin/put_date.vim
@@ -0,0 +1,6 @@
+if exists('loaded_put_date') || &compatible || !exists('*strftime')
+ finish
+endif
+let loaded_put_date = 1
+command! -bang -bar -nargs=* -range PutDate
+ \ call put_date#(<q-line1>, <q-bang> ==# '!', <q-args>)