summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-21menuconfig: Don't show implicit menus in symbol infoUlf Magnusson
Only show "real" (non-indented) menus, like in the menu path at the top.
2018-05-21menuconfig: Quote symbol values in jump-to dialogUlf Magnusson
This is consistent with how they're shown in the info dialog. Looks less confusing for empty strings too.
2018-05-21menuconfig: Show symbol values in search resultsUlf Magnusson
Makes it double as a quick way to check if something is enabled. Suggested by Randy Dunlap.
2018-05-20menuconfig: Use lower() instead of re.IGNORECASE in searchUlf Magnusson
This gets rid of some slight input jerkiness while inputting e.g. '.*debug' on my machine (though the '.*' is redundant there), due to faster matching. The '.*' probably has bad interactions with re.search(), which matches anywhere in the string. A plain "debug" matches about 70% faster, though it's fast enough to feel instant anyway.
2018-05-20menuconfig: Style nitUlf Magnusson
2018-05-20menuconfig: Fix outdated 'matches' commentUlf Magnusson
2018-05-20menuconfig: Search names and prompts separatelyUlf Magnusson
Instead of doing a single search of the '<symbol name> "<prompt>"' string. This avoids gotchas like '_DEBUG$' not matching FOO_DEBUG if FOO_DEBUG has a prompt.
2018-05-20menuconfig: Formatting nitUlf Magnusson
2018-05-20menuconfig: Fix bad regex crash on Python 3.4-Ulf Magnusson
re.error.msg was added in Python 3.5. Show a generic error message when it isn't available.
2018-05-19menuconfig: Implement scroll offset for text boxesUlf Magnusson
This makes it clearer when an edit box is scrolled, especially when backspacing. The cursor will now only go to the far left/right of the edit box at the start/end of the string. Reuse _SCROLL_OFFSET to specify the scroll offset.
2018-05-19menuconfig: Add info and allow ~ in save/load dialogsUlf Magnusson
List the working directory, which might not be obvious, and support referring to the home directory with ~. Support for multiple lines of help text in input dialogs was added as well.
2018-05-19Warn for incompatible uses of 'option env=...'Ulf Magnusson
Since commit cbf32e2 ("Expand environment variables in strings directly"), Kconfiglib expands environment variables directly in strings instead of using the 'option env=...' mechanism (this is planned for the C tools too). This new behavior is backwards-compatible as long as all 'option env=...' symbols have the same name as the environment variables they reference. Warn if 'option env="FOO"' appears on a symbol that isn't named FOO, to point out compatibility issues and help with debugging.
2018-05-19Micro-optimize help text parsing some moreUlf Magnusson
This code is surprisingly hot.
2018-05-18menuconfig: Remove redundant information for menus and commentsUlf Magnusson
The Kconfig definition already lists the location and menu path, and now shows up at the top.
2018-05-18Get rid of _dedent_rstrip()Ulf Magnusson
Only a single caller left now, in a hot loop.
2018-05-18Warn if prompt contains leading or trailing whitespaceUlf Magnusson
Also strip the prompt in that case. Leading/trailing whitespace in prompts leads to ugly workarounds in e.g. reStructuredText documentation, where '*prompt *' is invalid.
2018-05-18Restore compatibility with $UNAME_RELEASEUlf Magnusson
UNAME_RELEASE is expanded in one of the 'default's of the DEFCONFIG_LIST symbol in the Linux kernel. This broke after "$FOO" was changed to directly expand to the value of the environment variable FOO, rather than to the value of the symbol FOO. Restore compatibility with a small wrapper.
2018-05-18menuconfig: Add .config loading dialogUlf Magnusson
Automatically turn on show-all mode if the currently selected node becomes invisible after loading the new configuration. Show an are-you-sure dialog if there are unsaved changes. A wart here is that there currently isn't a way to get 'errno' and 'strerror' from the IOError exception returned by load_config(). Hack around it by opening the configuration file separately with open() first, just to catch any obvious errors.
2018-05-18menuconfig: Don't show indentation-based menus in menu pathUlf Magnusson
Don't show A in the menu path at the top when entering the menu "B" below, which will be indented relative to A. It looks confusing, and can lead to really long menu paths. config A bool "A" menu "B" depends on A ...
2018-05-18Refactor help text parsing loopUlf Magnusson
This is less twisty, and generates slightly smaller bytecode. Probably doesn't help to special-case the first line.
2018-05-17Move help text parsing into a separate functionUlf Magnusson
More readable.
2018-05-17Remove SRCARCH-related gotcha from module docstringUlf Magnusson
Now that environment variables are expanded directly with os.path.expandvars(), "$SRCARCH" will be kept as is if SRCARCH isn't set. arch/$SRCARCH/Kconfig won't exist, unlike arch//Kconfig.
2018-05-17Factor out adding of promptsUlf Magnusson
Get rid of some code duplication.
2018-05-17Factor out symbol type settingUlf Magnusson
Get rid of some code duplication.
2018-05-17Conditional reversal nitUlf Magnusson
2018-05-16Record which MenuNode has each propertyUlf Magnusson
This allows accurate documentation to be generated for symbols and choices defined in multiple locations. There are now MenuNode.defaults, MenuNode.selects, etc., lists that mirror the corresponding Symbol/Choice lists. Symbol/Choice.__str__() now correctly show property locations as well, by simply concatenating the strings returned by MenuNode.__str__() for each node. _parse_properties() was modified to add all properties directly to the menu node instead of adding them to the contained symbol or choice. The properties are then copied up to symbols and choices in _finalize_tree(). Dependency propagation is handled at the same time. As a side effect, this cleans up the code a bit and de-bloats _parse_properties(). Update the menuconfig implementation to use the new functionality. It now lists the menu nodes for symbols and choices with the correct properties for each node (previously, all defaults, selects, implies, and ranges appeared on the first definition).
2018-05-16Expand environment variables in strings directlyUlf Magnusson
Make "$FOO" directly reference the environment variable $FOO in e.g. 'source' statements, instead of the symbol FOO. Use os.path.expandvars() to expand strings (which preserves "$FOO" as-is if no environment variable FOO exists). This gets rid of the 'option env' "bounce" symbols, which are mostly just spam and are buggy in the C tools (dependencies aren't always respected, due to parsing and evaluation getting mixed up). The same change will probably appear soon in the C tools as well. Keep accepting 'option env' to preserve some backwards compatibility, but ignore it when expanding strings. For compatibility with the C tools, bounce symbols will need to be named the same as the environment variables they reference (which is the case for the Linux kernel). This is a compatibility break, so the major version will be bumped to 6 at the next release. The main motivation for adding this now is to allow recording properties on each MenuNode in a clean way. 'option env' symbols interact badly with delayed dependency propagation. Side note: I have a feeling that recording environment variable values might be redundant to trigger rebuilds if sync_deps() is run at each compile. It should detect all changes to symbol values due to environment variables changing value.
2018-05-14menuconfig: Fix _CONVERT_C_LC_CTYPE_TO_UTF8 commentUlf Magnusson
Was using an older name.
2018-05-13menuconfig: Add Ctrl-W support to edit boxesUlf Magnusson
Works like in readline/Vim.
2018-05-11menuconfig: Style nitUlf Magnusson
2018-05-11menuconfig: Jump-to code nitUlf Magnusson
2018-05-11menucomment: Comment clarity nitUlf Magnusson
2018-05-11menuconfig: Code style nitUlf Magnusson
2018-05-11Fix _search_strings() cacheUlf Magnusson
The cache was broken due to using an old variable name. Piggyback a neat trick for storing globals in default arguments that I had missed until now.
2018-05-11menuconfig: Add prompts to incremental searchUlf Magnusson
Search and display prompts for menu nodes that have them. They often contain useful strings. Add a pre-search pass that generates a string to search/display for each menu node, to allow the search regex(es) to run over a single string. That also makes 'foo bar' match for a symbol that has 'FOO' in its name and 'bar' in its prompt, which is handy. Remove the '(in menu X)' string that was added previously for symbols defined in multiple locations. You'd usually be able to tell which menu node is which from the (lack of) prompt.
2018-05-10menuconfig: Add search with multiple search stringsUlf Magnusson
A search like 'host usb' now finds all symbol names that match both 'host' and 'usb' (as regular expressions), including e.g. USB_MTU3_HOST. This saves typing a bunch of '.*' and makes it easier to find symbols when you aren't sure what order the components appear in.
2018-05-10menuconfig: Refactor resizing after fullscreen dialogsUlf Magnusson
Cleaner to do it in _menuconfig(), as it makes the fullscreen dialogs fully independent. Saves some code too.
2018-05-10menuconfig: Remove confusing menu list commentUlf Magnusson
Might have made it sound like _parent_menu() returns a list.
2018-05-10Style nitsUlf Magnusson
Air some long conditionals out a bit. Be more consistent with format().
2018-05-09menuconfig: Misleading comment nitUlf Magnusson
Can't get { } since {} implies n isn't assignable.
2018-05-09menuconfig: Fix rendering of long prefilled edit box stringUlf Magnusson
The horizontal scroll (hscroll) wasn't initialized properly when the initial (prefilled) contents of an edit box was longer than the edit box itself (e.g. when saving with a long path in KCONFIG_CONFIG). Things snapped back into place once a key was pressed. Initialize hscroll properly to fix the initial rendering.
2018-05-08menuconfig: Convert the C locale to a UTF-8 locale for LC_CTYPEUlf Magnusson
If LC_CTYPE is set to the C locale, try to convert it to a UTF-8 locale. Use a list of commonly available UTF-8 locales. Give up and use the C locale if none of them are available. This fixes curses Unicode I/O issues on systems with bad defaults: ncurses configures itself from the locale settings, and the C locale implies ASCII. The logic mirrors https://www.python.org/dev/peps/pep-0538/. I took the list of locales to try from the CPython code (in Python/pylifecycle.c).
2018-05-08Increase indent for implicit submenus to 4Ulf Magnusson
Makes it easier to see the menu structure. Make the indent configurable via a _SUBMENU_INDENT configuration variable.
2018-05-07Add screenshots showing incremental searchUlf Magnusson
Should probably move the screenshots out into a separate section soon.
2018-05-07menuconfig: Add incremental regex search and jump-toUlf Magnusson
Pressing [/] brings up a dialog with an edit box where a regex can be entered. The list of matching symbols is always shown below it. Selecting a symbol and pressing [Enter] jumps directly to it in the menu tree. If the symbol is invisible, show-all mode is turned on automatically. This commit also includes a bunch of more-or-less unrelated changes from poking around with the code: - Some redundant styles were merged. Probably wouldn't want to have a different style for each separator line, for example... - [ESC] in the top menu now works like [Q] - Returning to a parent menu now makes sure that the selected row is visible, even if the terminal was shrunk between entering the child menu and leaving it. - A _max_scroll() helper was factored out to reduce code duplication. It takes a list of items and a window in which the list is displayed, with one row per item, and returns the minimum scroll value that will make the final item visible. - The save dialog now pops up a message to confirm that the save was successful. - Lots of minor code nits all over (renamings, etc.)
2018-05-03menuconfig: Scroll to show current menu in menu pathUlf Magnusson
Previously, the title of the current menu disappeared off the right edge of the terminal for long menu paths. Scroll the menu path to the right if needed to make sure it is always shown.
2018-05-03menuconfig: Quit immediately when configuration is unchangedUlf Magnusson
Don't bother to show the save-and-quit dialog. Also quit immediately if the configuration hasn't been changed since the last time it was explicitly saved with the save dialog. Rename _set_node() to _set_node_tri_val(), as the old name gets confusing with the new _set_val() function.
2018-05-03menuconfig: Support setting values with [N]/[M]/[Y]Ulf Magnusson
Works the same as in mconf.
2018-05-03menuconfig: Add a mode that shows invisible itemsUlf Magnusson
When show-all mode is enabled, all items in the current menu are shown, including promptless and invisible items. Promptless items are shown with their name within <> brackets in place of the prompt. This will make it possible to jump to invisible items once the jump-to feature is added. It is also a handy feature on its own. .config loading from within the interface will make use of it as well, in case the current menu becomes complete invisible. Piggyback various code cleanups. Rename _visible* to _shown*, as it now includes invisible items in show-all mode.
2018-05-01Force encoding to UTF-8 by default on Python 3Ulf Magnusson
Enough people have run into exceptions due to running in the C locale that it seems worthwhile. Add a new 'encoding' parameter to Kconfig.__init__() that specifies the encoding to use and make it default to "utf-8". Passing None gives the old behavior of using the encoding specified in the environment. Related PEP: https://www.python.org/dev/peps/pep-0538/