Sanne Wouda
fbe28fd5d8
Tombstone only when explicitly removing a function.
...
Do not tombstone a function when it is evicted normally from the LRU cache.
This broke changing `fish_function_path`, since that would evict all nodes,
resulting in accidental tombstones, which caused autoloaded functions to
never be reloaded.
See #213 .
2015-04-08 10:46:38 -07:00
ridiculousfish
84899fb2f8
Small tweaks to clarify some code
...
Adds a comment about a recursive lock, and changes an ==1 to >0
for improved clarity
2015-04-06 08:38:31 -07:00
Sanne Wouda
73f344f41b
Revert 1349d12
and properly fix #213
...
As suggested by @ridiculousfish, when removing autoloaded functions, add them
to a tombstones set. These functions will never be autoloaded again in the
current shell, not even when the timestamp changes.
Tested as per comment 1 of #1033 . `~/.config/fish/functions/ls.fish` contains
the function definition. `function -e ls` removes the redefined `ls` (and
reverts back to the built-in command). `touch .../ls.fish` does not cause the
function to be reloaded.
2015-04-06 00:10:55 -07:00
Kevin Ballard
cfc06203e7
Add new functions
flag -V/--inherit-variable
...
--inherit-variable takes a variable name and snapshots its current
value. When the function is executed, it will have a local variable with
this value already defined. Printing the function source will include
synthesized `set -l` lines for the values.
This is primarily useful for functions that are created on the fly, such
as in `psub`.
2014-10-02 18:41:39 -07:00
Kevin Ballard
cc52a59e1a
Rework how screen size is tracked
...
The screen size is fetched after a SIGWINCH is delivered. The current
implementation has two issues:
* It calls ioctl() from the SIGWINCH signal handler, despite ioctl() not
being a function that is known to be safe to call.
* It's not thread-safe.
Signals can be delivered on arbitrary threads, so we don't know if it's
actually safe to be modifying the cached winsize in response to a
signal. It's also plausible that the winsize may be requested from a
background thread.
To solve the first issue, we twiddle a volatile boolean flag in the
signal handler and defer the ioctl() call until we actually request the
screen size.
To solve the second issue, we introduce a pthread rwlock around the
cached winsize. A rwlock is used because it can be expected that there
are likely to be far more window size reads than window size writes. If
we were using C++11 we could probably get away with atomics, but since
we don't have that (or boost), a rwlock should suffice.
Fixes #1613 .
2014-08-29 12:46:03 -07:00
ridiculousfish
3cfdc6d126
Fix line number reporting in new parser
2014-03-20 21:32:02 -07:00
ridiculousfish
be33d3f2a4
Revert "Merge pull request #1317 from pullreq/cpp"
...
This reverts commit 74135c0600
, reversing
changes made to 6d749789ce
.
See discussion in #1317
2014-02-28 02:16:48 -08:00
Geoff Nixon
18dd6f58e3
Fixes .c -> .cpp in comments. For doxygen.
2014-02-27 06:23:40 -08:00
ridiculousfish
53814983ff
Update style and formatting to conform to fish style guide.
2014-01-15 01:40:40 -08:00
ridiculousfish
6ce4b344e4
Hook up for statements, if statements, and function definition in new
...
parser
2013-12-27 01:38:43 -08:00
ridiculousfish
ed70195c7e
Merge branch 'master' into ast
...
Conflicts:
function.cpp
parser.cpp
parser.h
2013-12-20 17:44:37 -08:00
ridiculousfish
e38217683c
Refactor block_t storage in parser_t from a linked list to a vector
2013-12-20 17:41:21 -08:00
ridiculousfish
630b0515ad
Merge branch 'master' into ast
...
Conflicts:
parse_util.cpp
2013-10-16 01:48:21 -07:00
Konrad Borowski
1349d129c5
Fix #213 . You can now remove autoloaded functions.
...
Oddly enough, the code is here, but is internal function.
2013-10-12 21:55:23 +02:00
ridiculousfish
cbd8a27a6d
Beef up completion tests
2013-10-12 12:04:31 -07:00
Jan Kanis
30392bf66a
reference'ize event.cpp/h
2012-12-20 16:13:14 +01:00
ridiculousfish
6a8219a02e
Remove Python dependency from Makefile and Xcode build
...
https://github.com/fish-shell/fish-shell/issues/429
2012-12-08 21:41:38 -08:00
ridiculousfish
9992b8eb0e
Apply new indentation, brace, and whitespace style
2012-11-18 16:30:30 -08:00
Łukasz Niemier
47df1ae40a
Remove trailing whitespaces and change tabs to spaces
2012-11-18 11:23:22 +01:00
ridiculousfish
682353f9cc
Fix to restore an optimization from parse_util_get_line_from_offset in a more thread-safe way
2012-08-04 17:44:14 -07:00
ridiculousfish
b08fb86637
Renamed env_vars to env_vars_snapshot_t
...
Cleanup of non-wcstring version of path_get_path
2012-07-20 20:39:31 -07:00
ridiculousfish
f1d22b6300
Got function.h and function.cpp off of shared_ptr (hooray)
2012-05-18 14:00:36 -07:00
ridiculousfish
da6295c428
More work towards getting function.h off of shared_ptr
2012-05-17 19:46:08 -07:00
ridiculousfish
86645b32e1
Work towards getting function.h off of shared_ptr
2012-05-17 19:38:08 -07:00
ridiculousfish
3ead99b088
Put fish on a diet. Tracked down the biggest memory hogs and fixed them. Total allocations down by a factor of 3 or so, live allocations a few KB.
2012-03-03 15:22:03 -08:00
ridiculousfish
fd4df6f9bb
Changed iterators from iter++ to ++iter
...
Large set of changes to history to ensure that histories from other sessions don't "bleed" into the current session
2012-03-01 14:56:34 -08:00
Siteshwar Vashisht
74a7303c23
Modified functions in function.h/.cpp to use wcstring instead wchar_t*, other files also modified to use wcstring.
2012-02-19 22:55:15 +05:30
ridiculousfish
9787901ddb
Fix for removing too many event handlers (that's why "Goodbye" never got printed")
2012-02-17 11:37:25 -08:00
ridiculousfish
d975187433
Removed some al_list functions
2012-02-10 01:37:30 -08:00
ridiculousfish
910863e9ea
Final removal of halloc. It's like Christmas Morning.
2012-02-09 19:26:44 -08:00
ridiculousfish
e5bba2294d
Removed some more halloc
2012-02-09 02:01:49 -08:00
ridiculousfish
f891ea5713
Fixed named_arguments to be wcstring_list_t instead of al_list
2012-02-08 23:53:23 -08:00
ridiculousfish
b6bc4381fb
Get event_t off of halloc (!)
2012-02-08 19:02:25 -08:00
ridiculousfish
3dc56de0ae
Excised some more halloc and array_list_t
2012-02-08 02:34:31 -08:00
ridiculousfish
4eea68b5a4
LRU work to load functions off of the main thread.
...
We'll have to reevaluate this after we fix function autocomplete
2012-01-28 14:56:13 -08:00
ridiculousfish
d6545588a3
Have to remember to evict nodes from our LRU cache
2012-01-25 18:51:26 -08:00
ridiculousfish
2f1cac604d
Implemented LRU cache for autoloading.
2012-01-25 18:40:08 -08:00
ridiculousfish
0d1c2a3b2a
Migrated function.cpp to use the new function_get() call. Lots of nice short code now.
2012-01-23 20:43:39 -08:00
ridiculousfish
378fd60756
Migrate function.cpp to scoped_lock and shared_ptr
2012-01-23 20:32:36 -08:00
ridiculousfish
6e8637fbc9
Move autoloading from a map of path names to a real object autoload_t.
...
Moved the various things we can autoload into static objects.
Next step is to make them thread safe.
2012-01-23 11:42:41 -08:00
ridiculousfish
fa796d668f
Get some basic function signatures right for new instanced parser
2012-01-16 12:10:08 -08:00
Peter Ammon
a359f45df2
Redesign new environment variables to use env_var_t instead of wcstring
...
Migrate uses of empty() to missing() to distinguish between empty variable and unset variable
2012-01-14 02:42:17 -08:00
ridiculousfish
8ba79d6ab9
Migrate function.cpp to STL types.
2012-01-13 23:54:49 -08:00
Siteshwar Vashisht
f78c4fa751
Removed multiple delcartions of path_list from autoload_names() in fuction.cpp
2012-01-14 12:06:16 +05:30
Siteshwar Vashisht
3ba6e9db5d
Merge branch 'Use_env_get_string' into CPlusPlus
...
Conflicts:
function.cpp
2012-01-14 11:59:48 +05:30
Siteshwar Vashisht
610246c48f
Modified function.cpp to use env_get_string().
2012-01-12 23:22:38 +05:30
ridiculousfish
c18d177b8c
Additional migration to STL data structures
2012-01-10 12:55:22 -08:00
ridiculousfish
4df57fda09
Incorporate Siteshwar's patch for building on Linux
2012-01-05 13:58:48 -08:00
ridiculousfish
0d8bb78f66
Fixed a build failure
...
Added a thread assertion to function.cpp
2011-12-26 21:56:23 -08:00
ridiculousfish
8d2f107d61
Some changes to migrate towards C++ and a multithreaded model
2011-12-26 19:18:46 -08:00