Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xplr for openSUSE:Factory checked in 
at 2023-01-14 00:03:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xplr (Old)
 and      /work/SRC/openSUSE:Factory/.xplr.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xplr"

Sat Jan 14 00:03:24 2023 rev:4 rq:1058222 version:0.20.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/xplr/xplr.changes        2023-01-05 
15:01:28.309216034 +0100
+++ /work/SRC/openSUSE:Factory/.xplr.new.32243/xplr.changes     2023-01-14 
00:04:13.378062214 +0100
@@ -1,0 +2,12 @@
+Fri Jan 13 11:12:53 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to v0.20.2:
+  * Updated UI to be more light theme and NO_COLOR friendly.
+  * Fixed creating files inside multiple subdirectories (e.g.
+    foo/bar/test.txt) (thanks to @soryeigeton for reporting and help
+    debugging).
+  * Added new hooks (contribution by @emsquid).
+  * on_mode_switch
+  * on_layout_switch
+
+-------------------------------------------------------------------

Old:
----
  v0.20.1.tar.gz
  v0.20.1.tar.gz.asc

New:
----
  v0.20.2.tar.gz
  v0.20.2.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xplr.spec ++++++
--- /var/tmp/diff_new_pack.uvJ2Zm/_old  2023-01-14 00:04:14.062066199 +0100
+++ /var/tmp/diff_new_pack.uvJ2Zm/_new  2023-01-14 00:04:14.066066223 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package xplr
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           xplr
-Version:        0.20.1
+Version:        0.20.2
 Release:        0
 Summary:        TUI file explorer
 License:        MIT

++++++ v0.20.1.tar.gz -> v0.20.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/.github/workflows/cd.yml 
new/xplr-0.20.2/.github/workflows/cd.yml
--- old/xplr-0.20.1/.github/workflows/cd.yml    2022-12-04 10:33:06.000000000 
+0100
+++ new/xplr-0.20.2/.github/workflows/cd.yml    2023-01-13 08:38:25.000000000 
+0100
@@ -3,7 +3,7 @@
 on:
   push:
     tags:
-      - 'v*.*.*'
+      - "v*.*.*"
   workflow_dispatch:
 
 jobs:
@@ -18,23 +18,22 @@
           - ubuntu-20.04
         rust: [stable]
         include:
-
           # See the list: https://github.com/cross-rs/cross
 
           - os: macos-latest
             artifact_prefix: macos
             target: x86_64-apple-darwin
-            binary_postfix: ''
+            binary_postfix: ""
 
           - os: ubuntu-latest
             artifact_prefix: linux
             target: x86_64-unknown-linux-gnu
-            binary_postfix: ''
+            binary_postfix: ""
 
           - os: ubuntu-20.04
             artifact_prefix: linux-musl
             target: x86_64-unknown-linux-musl
-            binary_postfix: ''
+            binary_postfix: ""
 
           # Will see later
 
@@ -65,7 +64,7 @@
       - name: Installing needed Ubuntu dependencies
         if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-20.04'
         run: |
-          sudo apt-get update
+          sudo apt-get update --fix-missing
           sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev 
libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
 
       - name: Checking out sources
@@ -142,7 +141,7 @@
           override: true
 
       - run: |
-          sudo apt-get update
+          sudo apt-get update --fix-missing
           sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev 
libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
 
       - uses: actions-rs/cargo@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/.github/workflows/ci.yml 
new/xplr-0.20.2/.github/workflows/ci.yml
--- old/xplr-0.20.1/.github/workflows/ci.yml    2022-12-04 10:33:06.000000000 
+0100
+++ new/xplr-0.20.2/.github/workflows/ci.yml    2023-01-13 08:38:25.000000000 
+0100
@@ -35,15 +35,15 @@
           - os: macos-latest
             artifact_prefix: macos
             target: x86_64-apple-darwin
-            binary_postfix: ''
+            binary_postfix: ""
           - os: ubuntu-latest
             artifact_prefix: linux
             target: x86_64-unknown-linux-gnu
-            binary_postfix: ''
+            binary_postfix: ""
           - os: ubuntu-20.04
             artifact_prefix: linux-musl
             target: x86_64-unknown-linux-musl
-            binary_postfix: ''
+            binary_postfix: ""
 
     env:
       RUST_BACKTRACE: full
@@ -64,7 +64,7 @@
       - name: Installing needed Ubuntu dependencies
         if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-20.04'
         run: |
-          sudo apt-get update
+          sudo apt-get update --fix-missing
           sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev 
libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
 
       - name: Build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/Cargo.lock new/xplr-0.20.2/Cargo.lock
--- old/xplr-0.20.1/Cargo.lock  2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/Cargo.lock  2023-01-13 08:38:25.000000000 +0100
@@ -39,17 +39,17 @@
 
 [[package]]
 name = "anyhow"
-version = "1.0.66"
+version = "1.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
+checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
 
 [[package]]
 name = "assert_cmd"
-version = "2.0.7"
+version = "2.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3"
+checksum = "9834fcc22e0874394a010230586367d4a3e9f11b560f469262678547e1d2575e"
 dependencies = [
- "bstr 1.0.1",
+ "bstr 1.1.0",
  "doc-comment",
  "predicates",
  "predicates-core",
@@ -63,7 +63,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.1.19",
  "libc",
  "winapi",
 ]
@@ -91,9 +91,9 @@
 
 [[package]]
 name = "bstr"
-version = "1.0.1"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fca0852af221f458706eb0725c03e4ed6c46af9ac98e6a689d5e634215d594dd"
+checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
 dependencies = [
  "memchr",
  "once_cell",
@@ -121,9 +121,9 @@
 
 [[package]]
 name = "cc"
-version = "1.0.77"
+version = "1.0.78"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
+checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
 
 [[package]]
 name = "cfg-if"
@@ -317,9 +317,9 @@
 
 [[package]]
 name = "cxx"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "bdf07d07d6531bfcdbe9b8b739b104610c6508dcc4d63b410585faf338241daf"
+checksum = "51d1075c37807dcf850c379432f0df05ba52cc30f279c5cfc43cc221ce7f8579"
 dependencies = [
  "cc",
  "cxxbridge-flags",
@@ -329,9 +329,9 @@
 
 [[package]]
 name = "cxx-build"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d2eb5b96ecdc99f72657332953d4d9c50135af1bac34277801cc3937906ebd39"
+checksum = "5044281f61b27bc598f2f6647d480aed48d2bf52d6eb0b627d84c0361b17aa70"
 dependencies = [
  "cc",
  "codespan-reporting",
@@ -344,15 +344,15 @@
 
 [[package]]
 name = "cxxbridge-flags"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ac040a39517fd1674e0f32177648334b0f4074625b5588a64519804ba0553b12"
+checksum = "61b50bc93ba22c27b0d31128d2d130a0a6b3d267ae27ef7e4fae2167dfe8781c"
 
 [[package]]
 name = "cxxbridge-macro"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6"
+checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -399,9 +399,9 @@
 
 [[package]]
 name = "erased-serde"
-version = "0.3.23"
+version = "0.3.24"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "54558e0ba96fbe24280072642eceb9d7d442e32c7ec0ea9e7ecd7b4ea2cf4e11"
+checksum = "e4ca605381c017ec7a5fef5e548f1cfaa419ed0f6df6367339300db74c92aa7d"
 dependencies = [
  "serde",
 ]
@@ -458,10 +458,19 @@
 ]
 
 [[package]]
+name = "hermit-abi"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "humansize"
-version = "2.1.2"
+version = "2.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4e682e2bd70ecbcce5209f11a992a4ba001fea8e60acf7860ce007629e6d2756"
+checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7"
 dependencies = [
  "libm",
 ]
@@ -512,9 +521,9 @@
 
 [[package]]
 name = "itoa"
-version = "1.0.4"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
 
 [[package]]
 name = "js-sys"
@@ -533,9 +542,9 @@
 
 [[package]]
 name = "libc"
-version = "0.2.138"
+version = "0.2.139"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
 
 [[package]]
 name = "libm"
@@ -545,9 +554,9 @@
 
 [[package]]
 name = "link-cplusplus"
-version = "1.0.7"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
+checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
 dependencies = [
  "cc",
 ]
@@ -582,9 +591,9 @@
 
 [[package]]
 name = "luajit-src"
-version = "210.4.3+resty8384278"
+version = "210.4.5+resty2cf5186"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "19ee5d5afddf1ec76ffa55ca7c3001f2f8a703834beba53c56a38ea6641cef44"
+checksum = "27b7992a40e602786272d84c6f2beca44a588ededcfd57b48ec6f82008a7cb97"
 dependencies = [
  "cc",
 ]
@@ -640,9 +649,9 @@
 
 [[package]]
 name = "mlua"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4351dbcc863fb6249c81b3bd0c8001214e9d4d44d22cabda17026353a77fe612"
+checksum = "2ee2ad7a9aa69056b148d9d590344bc155d3ce0d2200e3b2838f7034f6ba33c1"
 dependencies = [
  "bstr 0.2.17",
  "cc",
@@ -664,9 +673,9 @@
 
 [[package]]
 name = "nom"
-version = "7.1.1"
+version = "7.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
+checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c"
 dependencies = [
  "memchr",
  "minimal-lexical",
@@ -693,19 +702,19 @@
 
 [[package]]
 name = "num_cpus"
-version = "1.14.0"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.2.6",
  "libc",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.16.0"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
+checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
 
 [[package]]
 name = "oorandom"
@@ -731,9 +740,9 @@
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.5"
+version = "0.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
+checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
 dependencies = [
  "cfg-if",
  "libc",
@@ -796,9 +805,9 @@
 
 [[package]]
 name = "predicates"
-version = "2.1.4"
+version = "2.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f54fc5dc63ed3bbf19494623db4f3af16842c0d975818e469022d09e53f0aa05"
+checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd"
 dependencies = [
  "difflib",
  "itertools",
@@ -823,29 +832,28 @@
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.47"
+version = "1.0.49"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.21"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
 name = "rayon"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b"
+checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
 dependencies = [
- "crossbeam-deque",
  "either",
  "rayon-core",
 ]
@@ -884,9 +892,9 @@
 
 [[package]]
 name = "regex"
-version = "1.7.0"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -913,9 +921,9 @@
 
 [[package]]
 name = "ryu"
-version = "1.0.11"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
 
 [[package]]
 name = "same-file"
@@ -934,24 +942,24 @@
 
 [[package]]
 name = "scratch"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2"
 
 [[package]]
 name = "serde"
-version = "1.0.148"
+version = "1.0.152"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc"
+checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.148"
+version = "1.0.152"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c"
+checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -960,9 +968,9 @@
 
 [[package]]
 name = "serde_json"
-version = "1.0.89"
+version = "1.0.91"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
+checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
 dependencies = [
  "itoa",
  "ryu",
@@ -971,9 +979,9 @@
 
 [[package]]
 name = "serde_yaml"
-version = "0.9.14"
+version = "0.9.16"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6d232d893b10de3eb7258ff01974d6ee20663d8e833263c99409d4b13a0209da"
+checksum = "92b5b431e8907b50339b51223b97d102db8d987ced36f6e4d03621db9316c834"
 dependencies = [
  "indexmap",
  "itoa",
@@ -1020,9 +1028,9 @@
 
 [[package]]
 name = "syn"
-version = "1.0.105"
+version = "1.0.107"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
+checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1052,18 +1060,18 @@
 
 [[package]]
 name = "thiserror"
-version = "1.0.37"
+version = "1.0.38"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.37"
+version = "1.0.38"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1136,9 +1144,9 @@
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.5"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
 
 [[package]]
 name = "unicode-segmentation"
@@ -1154,9 +1162,9 @@
 
 [[package]]
 name = "unsafe-libyaml"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68"
+checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2"
 
 [[package]]
 name = "version_check"
@@ -1334,49 +1342,49 @@
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.42.0"
+version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
 
 [[package]]
 name = "xplr"
-version = "0.20.1"
+version = "0.20.2"
 dependencies = [
  "ansi-to-tui",
  "anyhow",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/Cargo.toml new/xplr-0.20.2/Cargo.toml
--- old/xplr-0.20.1/Cargo.toml  2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/Cargo.toml  2023-01-13 08:38:25.000000000 +0100
@@ -8,7 +8,7 @@
 
 [package]
 name = 'xplr'
-version = '0.20.1'
+version = '0.20.2'
 authors = ['Arijit Basu <h...@arijitbasu.in>']
 edition = '2021'
 description = 'A hackable, minimal, fast TUI file explorer'
@@ -22,18 +22,18 @@
 include = ['src/**/*', 'docs/en/src/**/*', 'LICENSE', 'README.md']
 
 [dependencies]
-libc = "0.2.138"
-humansize = "2.1.2"
+libc = "0.2.139"
+humansize = "2.1.3"
 natord = "1.0.9"
-anyhow = "1.0.66"
-serde_yaml = "0.9.14"
+anyhow = "1.0.68"
+serde_yaml = "0.9.16"
 crossterm = "0.25.0"
 dirs = "4.0.0"
 ansi-to-tui = "2.0.0"
-regex = "1.7.0"
+regex = "1.7.1"
 gethostname = "0.4.1"
 fuzzy-matcher = "0.3.7"
-serde_json = "1.0.89"
+serde_json = "1.0.91"
 path-absolutize = "3.0.14"
 which = "4.3.0"
 
@@ -51,7 +51,7 @@
 features = ['crossterm', 'serde']
 
 [dependencies.serde]
-version = "1.0.148"
+version = "1.0.152"
 features = ['derive']
 
 [dependencies.chrono]
@@ -63,7 +63,7 @@
 features = ['serde']
 
 [dependencies.mlua]
-version = "0.8.6"
+version = "0.8.7"
 features = ['luajit', 'vendored', 'serialize', 'send']
 
 [dependencies.tui-input]
@@ -72,7 +72,7 @@
 
 [dev-dependencies]
 criterion = "0.4.0"
-assert_cmd = "2.0.7"
+assert_cmd = "2.0.8"
 
 [profile.release]
 lto = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/alternatives.md 
new/xplr-0.20.2/docs/en/src/alternatives.md
--- old/xplr-0.20.1/docs/en/src/alternatives.md 2022-12-04 10:33:06.000000000 
+0100
+++ new/xplr-0.20.2/docs/en/src/alternatives.md 2023-01-13 08:38:25.000000000 
+0100
@@ -14,6 +14,7 @@
 - [noice][10]
 - [clifm][11]
 - [clifm][12] (non curses)
+- [felix][14]
 
 [add more][13]
 
@@ -30,3 +31,4 @@
 [11]: https://github.com/pasqu4le/clifm
 [12]: https://github.com/leo-arch/clifm
 [13]: community.md
+[14]: https://github.com/kyoheiu/felix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/awesome-hacks.md 
new/xplr-0.20.2/docs/en/src/awesome-hacks.md
--- old/xplr-0.20.1/docs/en/src/awesome-hacks.md        2022-12-04 
10:33:06.000000000 +0100
+++ new/xplr-0.20.2/docs/en/src/awesome-hacks.md        2023-01-13 
08:38:25.000000000 +0100
@@ -135,7 +135,14 @@
 - Tested on: MacOS
 
 ```lua
+-- With `export XPLR_BOOKMARK_FILE="$HOME/bookmarks"`
 -- Bookmark: mode binding
+xplr.config.modes.builtin.default.key_bindings.on_key["b"] = {
+  help = "bookmark mode",
+  messages = {
+    { SwitchModeCustom = "bookmark" },
+  },
+}
 xplr.config.modes.custom.bookmark = {
   name = "bookmark",
   key_bindings = {
@@ -143,12 +150,13 @@
       m = {
         help = "bookmark dir",
         messages = {
-          { BashExecSilently0 = [[
+          {
+            BashExecSilently0 = [[
               PTH="${XPLR_FOCUS_PATH:?}"
               if [ -d "${PTH}" ]; then
                 PTH="${PTH}"
               elif [ -f "${PTH}" ]; then
-                PTH="$(dirname "${PTH}")"
+                PTH=$(dirname "${PTH}")
               fi
               PTH_ESC=$(printf %q "$PTH")
               if echo "${PTH:?}" >> "${XPLR_BOOKMARK_FILE:?}"; then
@@ -156,8 +164,9 @@
               else
                 "$XPLR" -m 'LogError: %q' "Failed to bookmark $PTH_ESC"
               fi
-            ]]
+            ]],
           },
+          "PopMode",
         },
       },
       g = {
@@ -169,18 +178,21 @@
               if [ "$PTH" ]; then
                 "$XPLR" -m 'FocusPath: %q' "$PTH"
               fi
-            ]===]
+            ]===],
           },
+          "PopMode",
         },
       },
       d = {
         help = "delete bookmark",
         messages = {
-          { BashExec0 = [[
+          {
+            BashExec0 = [[
               PTH=$(cat "${XPLR_BOOKMARK_FILE:?}" | fzf --no-sort)
               sd "$PTH\n" "" "${XPLR_BOOKMARK_FILE:?}"
-            ]]
+            ]],
           },
+          "PopMode",
         },
       },
       esc = {
@@ -192,6 +204,7 @@
     },
   },
 }
+
 ```
 
 </details>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/awesome-plugins.md 
new/xplr-0.20.2/docs/en/src/awesome-plugins.md
--- old/xplr-0.20.1/docs/en/src/awesome-plugins.md      2022-12-04 
10:33:06.000000000 +0100
+++ new/xplr-0.20.2/docs/en/src/awesome-plugins.md      2023-01-13 
08:38:25.000000000 +0100
@@ -16,9 +16,10 @@
 - [**sayanarijit/tri-pane.xplr**][56] xplr plugin that implements ranger-like 
three pane layout.
 - [**sayanarijit/type-to-nav.xplr**][28] Inspired by [nnn's type-to-nav 
mode][29] for xplr,
   with some tweaks.
-- [**igorepst/term.xplr**][39] Terminal integration for xplr
+- [**dtomvan/term.xplr**][39] Terminal integration for xplr.
 - [**sayanarijit/wl-clipboard.xplr**][52] Copy and paste with system clipboard 
using wl-clipboard
-- [**dtomvan/xpm.xplr**][47] The XPLR Plugin Manager
+- [**dtomvan/xpm.xplr**][47] The XPLR Plugin Manager.
+- [**emsquid/style.xplr**][57] Helper plugin that allows you to integrate 
xplr's [Style][58] anywhere.
 
 ### Integration
 
@@ -26,9 +27,9 @@
 - [**sayanarijit/dragon.xplr**][4] Drag and drop files using [dragon][5].
 - [**sayanarijit/dua-cli.xplr**][6] Get the disk usage using [dua-cli][7] with 
selection
   support.
-- [**sayanarijit/fzf.xplr**][8] Fuzzy search using [fzf][9] to focus on a file 
or enter
+- [**sayanarijit/fzf.xplr**][8] Fuzzy search using [fzf][9] to focus on a file 
or enter.
 - [**sayanarijit/find.xplr**][44] An interactive finder plugin to complement 
[map.xplr][38].
-- [**Junker/nuke.xplr**][53] Open files in apps by file type or mime
+- [**Junker/nuke.xplr**][53] Open files in apps by file type or mime.
 - [**sayanarijit/nvim-ctrl.xplr**][35] Send files to running Neovim sessions 
using
   [nvim-ctrl][36].
 - [**dtomvan/ouch.xplr**][40] This plugin uses [ouch][41] to compress and 
decompress files.
@@ -39,8 +40,6 @@
 - [**sayanarijit/qrcp.xplr**][26] Send and receive files via QR code using 
[qrcp][27].
 - [**sayanarijit/scp.xplr**][54] Integrate xplr with scp.
 - [**sayanarijit/trash-cli.xplr**][13] Trash files and directories using 
[trash-cli][14].
-- [**sayanarijit/xargs.xplr**][22] Batch execute commands on the focused or 
selected files
-  using `xargs`.
 - [**sayanarijit/xclip.xplr**][15] Copy and paste with system clipboard using 
[xclip][16].
 - [**sayanarijit/zoxide.xplr**][17] Change directory using the [zoxide][18] 
database.
 
@@ -95,7 +94,7 @@
 [36]: https://github.com/chmln/nvim-ctrl
 [37]: https://github.com/sayanarijit/command-mode.xplr
 [38]: https://github.com/sayanarijit/map.xplr
-[39]: https://github.com/igorepst/term.xplr
+[39]: https://github.com/dtomvan/term.xplr
 [40]: https://github.com/dtomvan/ouch.xplr
 [41]: https://github.com/ouch-org/ouch
 [42]: https://github.com/igorepst/context-switch.xplr
@@ -113,3 +112,5 @@
 [54]: https://github.com/sayanarijit/scp.xplr
 [55]: https://github.com/sayanarijit/regex-search.xplr
 [56]: https://github.com/sayanarijit/tri-pane.xplr
+[57]: https://github.com/emsquid/style.xplr
+[58]: style.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/configuration.md 
new/xplr-0.20.2/docs/en/src/configuration.md
--- old/xplr-0.20.1/docs/en/src/configuration.md        2022-12-04 
10:33:06.000000000 +0100
+++ new/xplr-0.20.2/docs/en/src/configuration.md        2023-01-13 
08:38:25.000000000 +0100
@@ -115,5 +115,21 @@
     { LogSuccess = "Changed focus" },
     { CallLuaSilently = "custom.some_plugin_with_hooks.on_focus_change" },
   }
+
+  -- Add messages to send when the mode is switched.
+  --
+  -- Type: list of [Message](https://xplr.dev/en/message#message)s
+  on_mode_switch = {
+    { LogSuccess = "Switched mode" },
+    { CallLuaSilently = "custom.some_plugin_with_hooks.on_mode_switch" },
+  }
+
+  -- Add messages to send when the layout is switched
+  --
+  -- Type: list of [Message](https://xplr.dev/en/message#message)s
+  on_layout_switch = {
+    { LogSuccess = "Switched layout" },
+    { CallLuaSilently = "custom.some_plugin_with_hooks.on_layout_switch" },
+  }
 }
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/install.md 
new/xplr-0.20.2/docs/en/src/install.md
--- old/xplr-0.20.1/docs/en/src/install.md      2022-12-04 10:33:06.000000000 
+0100
+++ new/xplr-0.20.2/docs/en/src/install.md      2023-01-13 08:38:25.000000000 
+0100
@@ -80,6 +80,8 @@
 
 ### macOS
 
+Make sure you have the latest version of [GNU core utilities][29] installed.
+
 #### [MacPorts][11]
 
 ```
@@ -236,7 +238,7 @@
   ```
 
 [1]: #direct-download
-[2]: #from-a-hrefhttpscratesiocratesxplrcratesioa
+[2]: #from-cratesio
 [3]: #build-from-source
 [4]: https://github.com/sayanarijit/xplr/watchers
 [5]: https://repology.org/badge/vertical-allrepos/xplr.svg
@@ -263,3 +265,4 @@
 [26]: 
https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux-musl.tar.gz
 [27]: https://pkgs.alpinelinux.org/packages?name=xplr
 [28]: https://gpo.zugaina.org/Overlays/guru/app-misc/xplr
+[29]: https://formulae.brew.sh/formula/coreutils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/upgrade-guide.md 
new/xplr-0.20.2/docs/en/src/upgrade-guide.md
--- old/xplr-0.20.1/docs/en/src/upgrade-guide.md        2022-12-04 
10:33:06.000000000 +0100
+++ new/xplr-0.20.2/docs/en/src/upgrade-guide.md        2023-01-13 
08:38:25.000000000 +0100
@@ -45,7 +45,7 @@
 
 ### Instructions
 
-#### [v0.19.4][47] -> [v0.20.1][48]
+#### [v0.19.4][47] -> [v0.20.2][48]
 
 - BREAKING: xplr shell (`:!`) will default to null (`\0`) delimited pipes, as
   opposed to newline (`\n`) delimited ones (i.e. will use `Call0` instead of
@@ -65,6 +65,8 @@
   - on_load
   - on_focus_change
   - on_directory_change
+  - on_mode_switch (since v0.20.2)
+  - on_layout_switch (since v0.20.2)
 - Use `--vroot` to isolate navigation of an xplr session inside a specific
   directory. Interaction still requires passing full path, and shell,
   lua functions etc still can access paths outside vroot.
@@ -437,4 +439,4 @@
 [45]: https://github.com/sayanarijit/xplr/releases/tag/v0.17.6
 [46]: https://github.com/sayanarijit/xplr/releases/tag/v0.18.0
 [47]: https://github.com/sayanarijit/xplr/releases/tag/v0.19.4
-[48]: https://github.com/sayanarijit/xplr/releases/tag/v0.20.1
+[48]: https://github.com/sayanarijit/xplr/releases/tag/v0.20.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/docs/en/src/xplr.util.md 
new/xplr-0.20.2/docs/en/src/xplr.util.md
--- old/xplr-0.20.1/docs/en/src/xplr.util.md    2022-12-04 10:33:06.000000000 
+0100
+++ new/xplr-0.20.2/docs/en/src/xplr.util.md    2023-01-13 08:38:25.000000000 
+0100
@@ -80,7 +80,7 @@
 Example:
 
 ```lua
-xplr.util.shell_execute("pwd"})
+xplr.util.shell_execute("pwd")
 xplr.util.shell_execute("bash", {"-c", "xplr --help"})
 -- { stdout = "xplr...", stderr = "", returncode = 0 }
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/app.rs new/xplr-0.20.2/src/app.rs
--- old/xplr-0.20.1/src/app.rs  2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/app.rs  2023-01-13 08:38:25.000000000 +0100
@@ -276,7 +276,7 @@
             .unwrap_or_else(env::temp_dir)
             .join("xplr")
             .join("session")
-            .join(&pid.to_string())
+            .join(pid.to_string())
             .to_string_lossy()
             .to_string();
 
@@ -284,7 +284,7 @@
             session_path = env::temp_dir()
                 .join("xplr")
                 .join("session")
-                .join(&pid.to_string())
+                .join(pid.to_string())
                 .to_string_lossy()
                 .to_string();
             fs::create_dir_all(&session_path)?;
@@ -1105,14 +1105,11 @@
             .and_then(App::reset_input_buffer)
     }
 
-    fn switch_mode_keeping_input_buffer(mut self, mode: &str) -> Result<Self> {
-        if let Some(mode) = self.config.modes.get(mode).cloned() {
-            self = self.push_mode();
-            self.mode = mode.sanitized(
-                self.config.general.read_only,
-                self.config.general.global_key_bindings.to_owned(),
-            );
-            Ok(self)
+    fn switch_mode_keeping_input_buffer(self, mode: &str) -> Result<Self> {
+        if self.config.modes.builtin.contains_key(mode) {
+            self.switch_mode_builtin_keeping_input_buffer(mode)
+        } else if self.config.modes.custom.contains_key(mode) {
+            self.switch_mode_custom_keeping_input_buffer(mode)
         } else {
             self.log_error(format!("Mode not found: {}", mode))
         }
@@ -1130,6 +1127,13 @@
                 self.config.general.read_only,
                 self.config.general.global_key_bindings.to_owned(),
             );
+
+            // Hooks
+            if !self.hooks.on_mode_switch.is_empty() {
+                let msgs = self.hooks.on_mode_switch.clone();
+                self = self.handle_batch_external_msgs(msgs)?
+            }
+
             Ok(self)
         } else {
             self.log_error(format!("Builtin mode not found: {}", mode))
@@ -1148,16 +1152,24 @@
                 self.config.general.read_only,
                 self.config.general.global_key_bindings.to_owned(),
             );
+
+            // Hooks
+            if !self.hooks.on_mode_switch.is_empty() {
+                let msgs = self.hooks.on_mode_switch.clone();
+                self = self.handle_batch_external_msgs(msgs)?
+            }
+
             Ok(self)
         } else {
             self.log_error(format!("Custom mode not found: {}", mode))
         }
     }
 
-    fn switch_layout(mut self, layout: &str) -> Result<Self> {
-        if let Some(l) = self.config.layouts.get(layout) {
-            self.layout = l.to_owned();
-            Ok(self)
+    fn switch_layout(self, layout: &str) -> Result<Self> {
+        if self.config.layouts.builtin.contains_key(layout) {
+            self.switch_layout_builtin(layout)
+        } else if self.config.layouts.custom.contains_key(layout) {
+            self.switch_layout_custom(layout)
         } else {
             self.log_error(format!("Layout not found: {}", layout))
         }
@@ -1166,6 +1178,13 @@
     fn switch_layout_builtin(mut self, layout: &str) -> Result<Self> {
         if let Some(l) = self.config.layouts.builtin.get(layout) {
             self.layout = l.to_owned();
+
+            // Hooks
+            if !self.hooks.on_layout_switch.is_empty() {
+                let msgs = self.hooks.on_layout_switch.clone();
+                self = self.handle_batch_external_msgs(msgs)?
+            }
+
             Ok(self)
         } else {
             self.log_error(format!("Builtin layout not found: {}", layout))
@@ -1175,6 +1194,13 @@
     fn switch_layout_custom(mut self, layout: &str) -> Result<Self> {
         if let Some(l) = self.config.layouts.get_custom(layout) {
             self.layout = l.to_owned();
+
+            // Hooks
+            if !self.hooks.on_layout_switch.is_empty() {
+                let msgs = self.hooks.on_layout_switch.clone();
+                self = self.handle_batch_external_msgs(msgs)?
+            }
+
             Ok(self)
         } else {
             self.log_error(format!("Custom layout not found: {}", layout))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/config.rs 
new/xplr-0.20.2/src/config.rs
--- old/xplr-0.20.1/src/config.rs       2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/config.rs       2023-01-13 08:38:25.000000000 +0100
@@ -624,6 +624,12 @@
 
     #[serde(default)]
     pub on_focus_change: Vec<ExternalMsg>,
+
+    #[serde(default)]
+    pub on_mode_switch: Vec<ExternalMsg>,
+
+    #[serde(default)]
+    pub on_layout_switch: Vec<ExternalMsg>,
     // TODO After cleanup or Runner::run
     // #[serde(default)]
     // pub before_quit: Vec<ExternalMsg>,
@@ -634,6 +640,8 @@
         self.on_load.extend(other.on_load);
         self.on_directory_change.extend(other.on_directory_change);
         self.on_focus_change.extend(other.on_focus_change);
+        self.on_mode_switch.extend(other.on_mode_switch);
+        self.on_layout_switch.extend(other.on_layout_switch);
         self
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/init.lua new/xplr-0.20.2/src/init.lua
--- old/xplr-0.20.1/src/init.lua        2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/init.lua        2023-01-13 08:38:25.000000000 +0100
@@ -249,7 +249,7 @@
 -- The content that is placed before the item name for each row by default.
 --
 -- Type: nullable string
-xplr.config.general.default_ui.prefix = "─ "
+xplr.config.general.default_ui.prefix = "  "
 
 -- The content which is appended to each item name for each row by default.
 --
@@ -278,7 +278,7 @@
 -- The string placed before the item name for a selected row.
 --
 -- Type: nullable string
-xplr.config.general.selection_ui.prefix = "─{"
+xplr.config.general.selection_ui.prefix = " {"
 
 -- The string placed after the item name for a selected row.
 --
@@ -289,8 +289,8 @@
 --
 -- Type: [Style](https://xplr.dev/en/style)
 xplr.config.general.selection_ui.style = {
-  fg = "LightGreen",
-  add_modifiers = { "Bold" },
+  fg = "DarkGray",
+  add_modifiers = { "CrossedOut" },
 }
 
 -- The string placed before item name for a selected row that gets the focus.
@@ -307,8 +307,7 @@
 --
 -- Type: [Style](https://xplr.dev/en/style)
 xplr.config.general.focus_selection_ui.style = {
-  fg = "LightGreen",
-  add_modifiers = { "Bold" },
+  add_modifiers = { "Bold", "CrossedOut" },
 }
 
 -- The shape of the separator for the Sort & filter panel.
@@ -703,7 +702,6 @@
 -- Type: [Style](https://xplr.dev/en/style)
 xplr.config.node_types.directory.style = {
   fg = "Cyan",
-  add_modifiers = { "Bold" },
 }
 
 -- Metadata for the directory nodes.
@@ -1553,7 +1551,7 @@
               PTH="$XPLR_INPUT_BUFFER"
               PTH_ESC=$(printf %q "$PTH")
               if [ "$PTH" ]; then
-                mkdir -p -- "$(dirname $(realpath $PTH))" \
+                mkdir -p -- "$(dirname $(realpath -m $PTH))" \
                 && touch -- "$PTH" \
                 && "$XPLR" -m 'SetInputBuffer: ""' \
                 && "$XPLR" -m 'LogSuccess: %q' "$PTH_ESC created" \
@@ -1673,7 +1671,7 @@
               if [ -z "$OPENER" ]; then
                 if command -v xdg-open; then
                   OPENER=xdg-open
-                  elif command -v open; then
+                elif command -v open; then
                   OPENER=open
                 else
                   "$XPLR" -m 'LogError: "$OPENER not found"'
@@ -2703,6 +2701,22 @@
 --     { LogSuccess = "Changed focus" },
 --     { CallLuaSilently = "custom.some_plugin_with_hooks.on_focus_change" },
 --   }
+--
+--   -- Add messages to send when the mode is switched.
+--   --
+--   -- Type: list of [Message](https://xplr.dev/en/message#message)s
+--   on_mode_switch = {
+--     { LogSuccess = "Switched mode" },
+--     { CallLuaSilently = "custom.some_plugin_with_hooks.on_mode_switch" },
+--   }
+--
+--   -- Add messages to send when the layout is switched
+--   --
+--   -- Type: list of [Message](https://xplr.dev/en/message#message)s
+--   on_layout_switch = {
+--     { LogSuccess = "Switched layout" },
+--     { CallLuaSilently = "custom.some_plugin_with_hooks.on_layout_switch" },
+--   }
 -- }
 -- ```
 
@@ -2710,4 +2724,6 @@
   on_load = {},
   on_directory_change = {},
   on_focus_change = {},
+  on_mode_switch = {},
+  on_layout_switch = {},
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/lua/mod.rs 
new/xplr-0.20.2/src/lua/mod.rs
--- old/xplr-0.20.1/src/lua/mod.rs      2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/lua/mod.rs      2023-01-13 08:38:25.000000000 +0100
@@ -160,24 +160,24 @@
         assert!(check_version(VERSION, "foo path").is_ok());
 
         // Current release if OK
-        assert!(check_version("0.20.1", "foo path").is_ok());
+        assert!(check_version("0.20.2", "foo path").is_ok());
 
         // Prev major release is ERR
         // - Not yet
 
         // Prev minor release is ERR (Change when we get to v1)
-        assert!(check_version("0.19.1", "foo path").is_err());
+        assert!(check_version("0.19.2", "foo path").is_err());
 
         // Prev bugfix release is OK
-        assert!(check_version("0.20.0", "foo path").is_ok());
+        assert!(check_version("0.20.1", "foo path").is_ok());
 
         // Next major release is ERR
-        assert!(check_version("1.20.1", "foo path").is_err());
+        assert!(check_version("1.20.2", "foo path").is_err());
 
         // Next minor release is ERR
-        assert!(check_version("0.21.1", "foo path").is_err());
+        assert!(check_version("0.21.2", "foo path").is_err());
 
         // Next bugfix release is ERR (Change when we get to v1)
-        assert!(check_version("0.20.2", "foo path").is_err());
+        assert!(check_version("0.20.3", "foo path").is_err());
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/lua/util.rs 
new/xplr-0.20.2/src/lua/util.rs
--- old/xplr-0.20.1/src/lua/util.rs     2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/lua/util.rs     2023-01-13 08:38:25.000000000 +0100
@@ -176,7 +176,7 @@
 /// Example:
 ///
 /// ```lua
-/// xplr.util.shell_execute("pwd"})
+/// xplr.util.shell_execute("pwd")
 /// xplr.util.shell_execute("bash", {"-c", "xplr --help"})
 /// -- { stdout = "xplr...", stderr = "", returncode = 0 }
 /// ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xplr-0.20.1/src/runner.rs 
new/xplr-0.20.2/src/runner.rs
--- old/xplr-0.20.1/src/runner.rs       2022-12-04 10:33:06.000000000 +0100
+++ new/xplr-0.20.2/src/runner.rs       2023-01-13 08:38:25.000000000 +0100
@@ -393,7 +393,7 @@
                             }
 
                             Debug(path) => {
-                                fs::write(&path, yaml::to_string(&app)?)?;
+                                fs::write(path, yaml::to_string(&app)?)?;
                             }
 
                             ClearScreen => {

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/xplr/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.xplr.new.32243/vendor.tar.gz differ: char 5, line 1

Reply via email to