ridiculousfish
d8ab6290e8
Switch expand_flags_t to enum_set
2019-04-25 11:23:03 -07:00
ridiculousfish
dcaac58f45
Rename expand_error_t to expand_result_t and make it class enum
...
Also lowercase it all.
2019-04-25 10:47:28 -07:00
ridiculousfish
b54c44f2f6
Migrate expansion stages to a new type expander_t
...
This avoids having to pass around so many parameters during expansion.
2019-04-25 10:47:28 -07:00
ridiculousfish
a173c079d5
expand_abbreviation to always accept an environment_t
...
Now that snapshotting is fixed, we don't need to get the principal
environment stack any more.
2019-04-16 22:45:58 -07:00
ridiculousfish
2e119813e1
get_abbreviations to accept an environment_t
...
Now that we don't have dorky snapshotting, thread an dnvironment_t through
get_abbreviations. Removes a usage of env_stack_t::principal().
2019-04-16 22:27:01 -07:00
Aaron Gyes
7e514d2aa5
expand_abbreviation(): escape when looking up abbreviation vars
...
This was doing exactly the opposite: unescaping and not hitting
the encoded _fish_abbr_X variables when looking up.
Fixes #5573
2019-04-16 21:33:09 -07:00
Aaron Gyes
75db3b4ff4
fix incorrectly aligned carat in command expansion errors and more
...
- fix the carat position expanding e.g. `command $,`
- improve the error reporting for not-allowed command subtitutions
by figuring out where the expansion failed instead of using
SOURCE_LOCATION_UNKNOWN
- allow nullptr for parse_util_licate_brackets_range() out_string
argument if we don't need it to do any work.
Fixes #5812
2019-04-11 14:44:46 -07:00
Aaron Gyes
be80a56ad4
expand.cpp: use wcspbrk for is_quotable
2019-04-04 17:32:39 -07:00
ridiculousfish
88d20e257b
Remove some unused variables
2019-03-15 20:21:05 -07:00
Fabian Homborg
f798a02a2a
Remove unused variable
2019-03-14 13:23:47 +01:00
Aaron Gyes
aaacdb89b6
Switches over to cstring from string.h.
2019-03-12 15:09:36 -07:00
Aaron Gyes
d5ac239f68
This commit changes wchar.h includes to cwchar, and uses std::
...
for everything it provides.
2019-03-12 15:09:36 -07:00
ridiculousfish
d3fa58d621
Cleanup common.h
...
Remove a bunch of headers, simplify lots of code, migrate it into .cpp files.
Debug build time improves by ~3 seconds on my Mac.
2019-02-03 18:22:38 -08:00
Dan Zimmerman
857561ca14
Fix warnings when compiling on macos
...
These warnings were appearing and annoying me so Im making a PR to fix
them.
2019-01-17 13:56:17 -06:00
ridiculousfish
2d3e8ec0a9
Correct highlighting of abbreviations
...
Abbreviation highlighting cannot use the snapshot environment because we do
not know up-front which variables to capture. Will revisit this later.
2019-01-11 20:43:52 -08:00
ridiculousfish
77884bc21a
Instantize env_get
...
This removes env_get(). All fish variable accesses must go through an
environment_t.
2019-01-10 20:08:06 -08:00
ridiculousfish
6f52e6bb1c
Instantize contents of exec.cpp and others
2019-01-10 20:07:47 -08:00
ridiculousfish
038f3cca6d
Remove the abbreviation cache
...
Read abbreviations directly from the environment.
2019-01-10 20:07:41 -08:00
ridiculousfish
50c83463f1
Switch some uses of env_get to instanced environment_t
2019-01-10 20:07:31 -08:00
ridiculousfish
421fbdd52a
Instantize env_get_pwd_slash
...
This requires threading environment_t through many places, such as completions
and history. We introduce null_environment_t for when the environment isn't
important.
2019-01-10 20:01:28 -08:00
Fabian Homborg
77229effb5
expand: Fix get_home_directory_name
...
This fixes the `~floam/` case, where the out_tail_idx pointer needs to
point to the "/", not the last letter.
The `~/` and `~floam` cases still work.
Unfortunately, I'm unsure of how to test this.
Fixes #5325 .
2018-11-08 10:07:45 +01:00
Fabian Homborg
410e13dd74
expand: Stringify get_home_directory_name
...
This is actually nicer than the pointilistic version.
2018-10-23 19:10:14 +02:00
ridiculousfish
5947aa0171
Join variables by their delimiter in quoted expansion
...
This switches quoted expansion like "$foo" to use foo's delimiter instead of
space. The delimiter is space for normal variables and colonf or path variables.
Expansions like "$PATH" will now expand using ':'.
2018-10-19 17:35:36 -07:00
ridiculousfish
d73c487d60
Restore %self to refer to the fish pid
...
This brings back the %self argument. Like the original %self it only expands
if the argument is literally %self.
2018-10-19 16:17:25 -07:00
ridiculousfish
202bf0bede
Tab complete abbreviations
...
This allows abbreviations to be expanded by tab completions.
Fixes #3233
2018-10-16 16:15:27 -07:00
Mahmoud Al-Qudsi
0e62dedb26
Correct misdetection of [001]
as literal zero index
...
The control flow in expand.cpp is a bit more complicated than it seemed
at first blush. Ref #4862 .
2018-10-15 14:11:37 -05:00
ridiculousfish
90d89a3262
Use more move constructors in expansion
...
Reduce allocations by switching to move semantics.
clang-tidy detects some use-after-moves.
2018-10-11 02:03:28 -07:00
ridiculousfish
0f0bb1e10f
Don't resolve symlinks with cd
...
This switches fish to a "virtual" PWD, where it no longer uses getcwd to
discover its PWD but instead synthesizes it based on normalizing cd against
the $PWD variable.
Both pwd and $PWD contain the virtual path. pwd is taught about -P to
return the physical path, and -L the logical path (which is the default).
Fixes #3350
2018-10-06 17:03:18 -07:00
Mahmoud Al-Qudsi
3875cc60bd
Optimize literal_zero_index comparisons
...
No longer check literal zero after the first non-zero value.
2018-10-01 21:20:13 -05:00
Mahmoud Al-Qudsi
264d8270a7
Emit an error message on literal zero indices
...
Mostly resolves #4862 , though there remains the lingering question of
whether or not to emit a warning to /dev/tty or stderr when a
non-literal-zero index evaluates to zero.
2018-10-01 20:58:26 -05:00
ridiculousfish
e6d09dc4fe
Remove another unnecessary env_var_t creation
2018-09-30 18:30:13 -04:00
ridiculousfish
bd7fea55c4
Remove some unnecessary env_var_t usage
2018-09-30 18:20:59 -04:00
Fabian Homborg
9be7288fab
expansion: Only clamp ranges when not forcing direction
...
This caused `$var[2..-1]` to still expand to $var[1] if only one
element was given.
Fixup for #4965 .
Fixes #5187 .
2018-09-15 11:07:29 +02:00
ridiculousfish
daf520db0a
Reformat all files
2018-09-08 22:19:05 -07:00
ridiculousfish
6e6fcda8e2
Get history working in web_config again
2018-09-08 22:13:54 -07:00
ridiculousfish
9269a5e0a8
Clean up abbreviation implementation a bit
2018-09-01 13:18:34 -07:00
ridiculousfish
865a4647ae
Allow variables in commands
...
Syntax highlighting for these coming in next commit.
Fixes #154
2018-09-01 12:00:56 -07:00
Fabian Homborg
81a987c39c
Fix range expansion with negative ends
...
If just one of the range ends is negative, this now forces direction away from it.
I.e. if the beginning is negative, we go in reverse.
If the end is negative, we go forwards.
This fixes cases like
$var[2..-1]
if $var only has one element.
2018-06-25 17:52:56 +02:00
Mahmoud Al-Qudsi
dcced5f1bc
Replace \e with \x1B, as the former is a gcc extension
...
While supported by gcc and clang, \e is a gcc-specific extension and not
formally defined in the C or C++ standards.
See [0] for a list of valid escapes.
[0]: https://stackoverflow.com/a/10220539/17027
2018-06-18 00:01:47 -05:00
ridiculousfish
e6737d5775
Use a std::move in expand_cmdsubst
...
Save an unnecessary allocation.
2018-06-16 11:40:59 -07:00
ridiculousfish
762c31be87
Feature flag support for ? wildcard
...
This partially reverts 6e56637cf0
and #4520
by bringing back the ? wildcard, guarded by the qmark-noglob feature flag.
2018-05-06 11:20:15 -07:00
ridiculousfish
abcc9647da
Fix some unused variable warnings
2018-03-31 17:06:13 -07:00
ridiculousfish
6e56637cf0
Remove support for the ? wildcard
...
Fixes #4520
2018-03-31 16:54:50 -07:00
slama
d88866ccf7
deleted no longer necessary codes due to removing process expansion.
2018-03-31 12:12:27 -07:00
Mahmoud Al-Qudsi
857a89e4bd
fixup! Fix oob memory access in expand's call to trim()
2018-03-12 07:31:28 -05:00
Mahmoud Al-Qudsi
ee069baf42
Fix oob memory access in expand's call to trim()
2018-03-12 07:22:27 -05:00
Mahmoud Al-Qudsi
4e48b084d7
Remove duplicate trim()
call in parameter expansion
2018-03-12 07:20:50 -05:00
Mahmoud Al-Qudsi
24afff1c77
Handle whitespace within parameter expansion tokens
...
From the discussion in #3802 , handling spaces within braces more
gracefully. Leading and trailing whitespace that isn't quoted or escaped
is stripped, whitespace in the middle is preserved. Any whitespace
encountered within expansion tokens is treated as a single space,
similar to how programming languages that don't hard break tokens/quotes
on line endings would.
2018-03-11 22:02:43 -05:00
Mahmoud Al-Qudsi
364115f818
fixup! Properly parse spaces and escaped/quoted spaces in expansion braces
2018-03-11 20:18:21 -05:00
Mahmoud Al-Qudsi
1629d339de
Properly parse spaces and escaped/quoted spaces in expansion braces
2018-03-11 19:51:54 -05:00