Commit graph

29 commits

Author SHA1 Message Date
Andy Kipp
295e7f0582
xonshrc: add docs and tests for py files (#5515)
* Added py mention to docs
* Added tests
* Microfix

## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**

---------

Co-authored-by: a <1@1.1>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-06-20 14:02:48 +00:00
Andy Kipp
f9d2842fb1
docs: move section "Use the Nix Package manager with Xonsh" from rc to platform tips and tricks (#5503)
<!---

Thanks for opening a PR on xonsh!

Please do this:

1. Include a news file with your PR
(https://xon.sh/devguide.html#changelog).
2. Add the documentation for your feature into `/docs`.
3. Add the example of usage or before-after behavior.
4. Mention the issue that this PR is addressing e.g. `#1234`.

-->

subj

## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**

---------

Co-authored-by: a <1@1.1>
2024-06-15 18:31:50 +02:00
Andy Kipp
06aca868a2
Fix #5491: more tests (#5498)
Fix #5491: 
* fix condition
* added more well organized tests

## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**

---------

Co-authored-by: a <1@1.1>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-06-14 07:39:16 +02:00
Andy Kipp
f81d55d09b
Do not load ~/.xonshrc in not interactive mode (#5491)
### Motivation

In #5099 was introduced the logic where all RC files are loaded in
interactive and non-interactive modes. This logic is not working good
for home based `~/.xonshrc` file.

First of all `~/.xonshrc` is the buffer/accumulator of settings focused
on interactive mode. Most tools with integration with xonsh (e.g.
`conda`, `zoxide`, etc) offer to just do `echo "init_tool()" >>
~/.xonshrc` (`conda` has around 20 lines of init code) to start using
the tool and users are doing this without any doubts.

But because of after 5099 `~/.xonshrc` is executed in non-interactive
mode the adding code to it leads to unexpected and unintended side
effects:

* If you run a script with shebang (e.g. `#!/usr/bin/env xonsh` or
[xonsh-awesome-cli-app](https://github.com/anki-code/xonsh-awesome-cli-app))
or just from `xonsh script.xsh` the code will be unexpected and
unintended slower.

* If you're using xonsh-based tools (e.g. you install them using pip)
and run them in environment that has no packages that initiated in
`~/.xonshrc` you will see epic errors.

* Additional context: 
* Bash and Zsh do not load `~/.bashrc` and `~/.zshrc` in non-interactive
mode by the same reasons.
* We have welcome message `Create ~/.xonshrc file manually or use xonfig
to suppress the welcome message` and we don't want to make the process
of creating this file complex.

All of this leads to bad unexpected and unintended experience. This PR
is to fix this.

### Expectation

By doing this fix we assume that experienced user who wants to build
good repeatable run control files will use another ways to create config
files and this has [reflection in
docs](8860f2bd52/docs/xonshrc.rst).
In the nutshell if you want to create the RC files that affect every run
of code you should use one or many of these ways:

* Cross-desktop group (XDG) compliant `~/.config/xonsh/rc.xsh` control
file.
* The system-wide control file `/etc/xonsh/xonshrc` for Linux and OSX
and in `%ALLUSERSPROFILE%\xonsh\xonshrc` on Windows. It controls options
that are applied to all users of Xonsh on a given system.
* The home-based directory `~/.config/xonsh/rc.d/` and system
`/etc/xonsh/rc.d/` can contain .xsh files. They will be executed at
startup in order. This allows for drop-in configuration where your
configuration can be split across scripts and common and local
configurations more easily separated.

In your configs you need to check `$XONSH_INTERACTIVE` and
`$XONSH_LOGIN` explicitly.

### Before

`~/.xonshrc` is used in non-interactive mode.

```xsh
echo "echo RC" >> ~/.xonshrc
cd /tmp
echo "echo Script" > script.xsh
xonsh script.xsh
# RC
# Script
```
```xsh
cd /tmp
echo 'echo RC' >> ~/.xonshrc
echo '#!/usr/bin/env xonsh' > myscript
chmod +x myscript

./myscript
# RC
```

### After

`~/.xonshrc` is not used in non-interactive mode. Use `-i` if you need
it.

```xsh
echo "echo RC" >> ~/.xonshrc
cd /tmp
echo "echo Script" > script.xsh
xonsh script.xsh
# Script

xonsh -i script.xsh
# RC
# Script
```
```xsh
cd /tmp
echo 'echo RC' >> ~/.xonshrc
echo '#!/usr/bin/env xonsh' > myscript
chmod +x myscript

./myscript
```
Closes #5488 #4096 #5496

### Fun

I want to leave here some nice representation of how it works in
bash/sh/zsh from [twitter
post](https://twitter.com/paxx39/status/1742768007154479109):



![image](https://github.com/xonsh/xonsh/assets/1708680/cd7b3803-483f-4d5d-bf9d-baa61c794f68)


## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**

---------

Co-authored-by: a <1@1.1>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-06-13 10:08:23 -04:00
Andy Kipp
e1a93cef19
New prompt end character (#5063)
Co-authored-by: a <1@1.1>
2023-05-16 13:36:50 +00:00
Mark Bestley
1e6faa47ce
Remove python REPL prompts so that you can copy the code (#5022) 2023-01-11 17:27:44 -05:00
Gil Forsyth
bcf2592b7d
doc: remove references to deprecated RC location, update changelog (#5012) 2022-12-14 22:00:15 -05:00
Vasilis Gerakaris
1d61d8d711 Document that xonshrc files not applied on non-interactive mode 2022-10-20 03:20:33 +05:30
Noorhteen Raja NJ
cbf23e60fb
Pre commit ci (#4863) 2022-07-01 11:47:01 -04:00
Noorhteen Raja NJ
d7dbfa9011
Lab/py control file (#4420)
* feat: use python's compile for rc.py

* docs: add news item

* docs: update news item

* test: add tests for py-control files

* fix: rst news item

* docs: update news item

* docs: add sample rc.py
2021-08-19 12:40:22 -04:00
Gordon Ball
d48c93bdb5
Add support for rc.d drop-in configuration directories (#4256)
* Add support for rc.d drop-in configuration directories

* main: change how --rc, --no-rc are handled

Explicitly pass --no-rc rather than signalling it as an empty --rc, to
indicate that we should suppress both XONSHRC and XONSHRCDIR in that
case.

* Rename XONSHRCDIR -> XONSHRC_DIR

* xonshrc_context: document setting env for XONSHRC_DIR

* main: --rc foo.xsh should suppress XONSHRC_DIR
2021-05-11 16:42:37 -04:00
colons
6c4d2a05fa Fix the import in the branch colour override example. 2020-11-25 12:10:42 +00:00
Danny Sepler
088420d075 a few more 2020-10-03 23:25:27 -04:00
Bob Hyman
6f549ca6c3 Doc updates per review 2020-09-01 20:35:10 -04:00
Bob Hyman
eb2b8f5791 Config rewrite; move platform guides into tips and tricks 2020-08-29 13:34:52 -04:00
Bob Hyman
59bb6b3b88 More getting started reorg 2020-08-24 04:46:25 -04:00
con-f-use
49615e9e49
add warning about JSON hack 2020-07-27 09:37:32 +02:00
con-f-use
dd3baf5835
fix typo in docs/xonshrc.rst
Co-authored-by: Burak Yigit Kaya <ben@byk.im>
2020-06-30 20:00:31 +02:00
con-f-use
51671628e3
typo in docs/xonshrc.rst
Co-authored-by: Morten Enemark Lund <melund@gmail.com>
2020-06-26 00:54:38 +02:00
con-f-use
eca552bd9e
typo docs/xonshrc.rst
Co-authored-by: Jamie Bliss <jamie@ivyleav.es>
2020-06-11 19:56:03 +02:00
con-f-use
9b418489f5
language docs/xonshrc.rst
Co-authored-by: Jamie Bliss <jamie@ivyleav.es>
2020-06-11 19:55:49 +02:00
con-f-use
bfac091034
More xonshrc snippets
...while I was at it.

 - Change date format for every other prompt
 - Use Nix Package Manager with Xonsh
2020-06-11 02:27:33 +02:00
con-f-use
bf4eb0e5d4
document xdg compatible xonshrc path 2020-06-11 01:59:14 +02:00
laerus
927dd300b6 renamed FORMATTER_DICT to PROMPT_FIELDS 2016-11-02 16:06:35 +02:00
Marvin Steadfast
5a1d10b85f docs: Fixed git_dirty_working_directory location
The xonshrc example imported `git_dirty_working_directory` still from
`xonsh.environ`. Now its located in `xonsh.prompt.vc_branch`.
2016-09-13 13:18:01 +02:00
Anthony Scopatz
bf7c58ee03 doc cleanup 2016-03-20 14:03:46 -04:00
Morten Enemark Lund
3ca0e00677 Update xonshrc.rst
Add snippets/tricks section to the xonshrc documentation
2016-02-28 23:24:02 +01:00
Gil Forsyth
c1cbf117fd Update xonshrc.rst for multiple xonshrc files 2015-10-26 16:44:51 -04:00
Anthony Scopatz
778d19341b added rc file 2015-09-12 20:27:21 -04:00