restyle highlight module to match project style

Reduces lint errors from 176 to 69 (-61%). Line count from 1627 to 1426 (-12%).

Another step in resolving issue #2902.
This commit is contained in:
Kurtis Rader
2016-04-30 20:47:05 -07:00
parent d3f155d895
commit 7378871768
2 changed files with 707 additions and 906 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +1,38 @@
/** \file highlight.h // Prototypes for functions for syntax highlighting.
Prototypes for functions for syntax highlighting
*/
#ifndef FISH_HIGHLIGHT_H #ifndef FISH_HIGHLIGHT_H
#define FISH_HIGHLIGHT_H #define FISH_HIGHLIGHT_H
#include <assert.h> #include <assert.h>
#include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#include <vector> #include <vector>
#include <stdbool.h>
#include "color.h"
#include "common.h" #include "common.h"
#include "env.h" #include "env.h"
#include "color.h"
/* Internally, we specify highlight colors using a set of bits. Each highlight_spec is a 32 bit uint. We divide this into low 16 (foreground) and high 16 (background). Each half we further subdivide into low 8 (primary) and high 8 (modifiers). The primary is not a bitmask; specify exactly one. The modifiers are a bitmask; specify any number */ // Internally, we specify highlight colors using a set of bits. Each highlight_spec is a 32 bit
enum // uint. We divide this into low 16 (foreground) and high 16 (background). Each half we further
{ // subdivide into low 8 (primary) and high 8 (modifiers). The primary is not a bitmask; specify
/* The following values are mutually exclusive; specify at most one */ // exactly one. The modifiers are a bitmask; specify any number.
highlight_spec_normal = 0, // normal text enum {
highlight_spec_error, // error // The following values are mutually exclusive; specify at most one.
highlight_spec_command, //command highlight_spec_normal = 0, // normal text
highlight_spec_statement_terminator, //process separator highlight_spec_error, // error
highlight_spec_param, //command parameter (argument) highlight_spec_command, // command
highlight_spec_comment, //comment highlight_spec_statement_terminator, // process separator
highlight_spec_match, //matching parenthesis, etc. highlight_spec_param, // command parameter (argument)
highlight_spec_search_match, //search match highlight_spec_comment, // comment
highlight_spec_operator, //operator highlight_spec_match, // matching parenthesis, etc.
highlight_spec_escape, //escape sequences highlight_spec_search_match, // search match
highlight_spec_quote, //quoted string highlight_spec_operator, // operator
highlight_spec_redirection, //redirection highlight_spec_escape, // escape sequences
highlight_spec_autosuggestion, //autosuggestion highlight_spec_quote, // quoted string
highlight_spec_redirection, // redirection
highlight_spec_autosuggestion, // autosuggestion
highlight_spec_selection, highlight_spec_selection,
// Pager support // Pager support.
highlight_spec_pager_prefix, highlight_spec_pager_prefix,
highlight_spec_pager_completion, highlight_spec_pager_completion,
highlight_spec_pager_description, highlight_spec_pager_description,
@@ -42,91 +41,91 @@ enum
HIGHLIGHT_SPEC_PRIMARY_MASK = 0xFF, HIGHLIGHT_SPEC_PRIMARY_MASK = 0xFF,
/* The following values are modifiers */ // The following values are modifiers.
highlight_modifier_valid_path = 0x100, highlight_modifier_valid_path = 0x100,
highlight_modifier_force_underline = 0x200, highlight_modifier_force_underline = 0x200,
highlight_modifier_sloppy_background = 0x300, //hackish, indicates that we should treat a foreground color as background, per certain historical behavior // Hackish, indicates that we should treat a foreground color as background, per certain
// historical behavior.
highlight_modifier_sloppy_background = 0x300,
/* Very special value */ /* Very special value */
highlight_spec_invalid = 0xFFFF highlight_spec_invalid = 0xFFFF
}; };
typedef uint32_t highlight_spec_t; typedef uint32_t highlight_spec_t;
inline highlight_spec_t highlight_get_primary(highlight_spec_t val) inline highlight_spec_t highlight_get_primary(highlight_spec_t val) {
{
return val & HIGHLIGHT_SPEC_PRIMARY_MASK; return val & HIGHLIGHT_SPEC_PRIMARY_MASK;
} }
inline highlight_spec_t highlight_make_background(highlight_spec_t val) inline highlight_spec_t highlight_make_background(highlight_spec_t val) {
{ assert(val >> 16 ==
assert(val >> 16 == 0); //should have nothing in upper bits, otherwise this is already a background 0); // should have nothing in upper bits, otherwise this is already a background
return val << 16; return val << 16;
} }
class history_item_t; class history_item_t;
struct file_detection_context_t; struct file_detection_context_t;
/** /// Perform syntax highlighting for the shell commands in buff. The result is stored in the color
Perform syntax highlighting for the shell commands in buff. The result is /// array as a color_code from the HIGHLIGHT_ enum for each character in buff.
stored in the color array as a color_code from the HIGHLIGHT_ enum ///
for each character in buff. /// \param buff The buffer on which to perform syntax highlighting
/// \param color The array in wchich to store the color codes. The first 8 bits are used for fg
/// color, the next 8 bits for bg color.
/// \param pos the cursor position. Used for quote matching, etc.
/// \param error a list in which a description of each error will be inserted. May be 0, in whcich
/// case no error descriptions will be generated.
void highlight_shell(const wcstring &buffstr, std::vector<highlight_spec_t> &color, size_t pos,
wcstring_list_t *error, const env_vars_snapshot_t &vars);
\param buff The buffer on which to perform syntax highlighting /// Perform a non-blocking shell highlighting. The function will not do any I/O that may block. As a
\param color The array in wchich to store the color codes. The first 8 bits are used for fg color, the next 8 bits for bg color. /// result, invalid commands may not be detected, etc.
\param pos the cursor position. Used for quote matching, etc. void highlight_shell_no_io(const wcstring &buffstr, std::vector<highlight_spec_t> &color,
\param error a list in which a description of each error will be inserted. May be 0, in whcich case no error descriptions will be generated. size_t pos, wcstring_list_t *error, const env_vars_snapshot_t &vars);
*/
void highlight_shell(const wcstring &buffstr, std::vector<highlight_spec_t> &color, size_t pos, wcstring_list_t *error, const env_vars_snapshot_t &vars);
/** /// Perform syntax highlighting for the text in buff. Matching quotes and paranthesis are
Perform a non-blocking shell highlighting. The function will not do any I/O that may block. As a result, invalid commands may not be detected, etc. /// highlighted. The result is stored in the color array as a color_code from the HIGHLIGHT_ enum
*/ /// for each character in buff.
void highlight_shell_no_io(const wcstring &buffstr, std::vector<highlight_spec_t> &color, size_t pos, wcstring_list_t *error, const env_vars_snapshot_t &vars); ///
/// \param buff The buffer on which to perform syntax highlighting
/// \param color The array in wchich to store the color codes. The first 8 bits are used for fg
/// color, the next 8 bits for bg color.
/// \param pos the cursor position. Used for quote matching, etc.
/// \param error a list in which a description of each error will be inserted. May be 0, in whcich
/// case no error descriptions will be generated.
void highlight_universal(const wcstring &buffstr, std::vector<highlight_spec_t> &color, size_t pos,
wcstring_list_t *error, const env_vars_snapshot_t &vars);
/** /// Translate from HIGHLIGHT_* to FISH_COLOR_* according to environment variables. Defaults to
Perform syntax highlighting for the text in buff. Matching quotes and paranthesis are highlighted. The result is /// FISH_COLOR_NORMAL.
stored in the color array as a color_code from the HIGHLIGHT_ enum ///
for each character in buff. /// Example:
///
\param buff The buffer on which to perform syntax highlighting /// If the environment variable FISH_FISH_COLOR_ERROR is set to 'red', a call to
\param color The array in wchich to store the color codes. The first 8 bits are used for fg color, the next 8 bits for bg color. /// highlight_get_color( highlight_error) will return FISH_COLOR_RED.
\param pos the cursor position. Used for quote matching, etc.
\param error a list in which a description of each error will be inserted. May be 0, in whcich case no error descriptions will be generated.
*/
void highlight_universal(const wcstring &buffstr, std::vector<highlight_spec_t> &color, size_t pos, wcstring_list_t *error, const env_vars_snapshot_t &vars);
/**
Translate from HIGHLIGHT_* to FISH_COLOR_* according to environment
variables. Defaults to FISH_COLOR_NORMAL.
Example:
If the environment variable FISH_FISH_COLOR_ERROR is set to 'red', a
call to highlight_get_color( highlight_error) will return
FISH_COLOR_RED.
*/
rgb_color_t highlight_get_color(highlight_spec_t highlight, bool is_background); rgb_color_t highlight_get_color(highlight_spec_t highlight, bool is_background);
/** Given a command 'str' from the history, try to determine whether we ought to suggest it by specially recognizing the command. /// Given a command 'str' from the history, try to determine whether we ought to suggest it by
Returns true if we validated the command. If so, returns by reference whether the suggestion is valid or not. /// specially recognizing the command. Returns true if we validated the command. If so, returns by
*/ /// reference whether the suggestion is valid or not.
bool autosuggest_validate_from_history(const history_item_t &item, file_detection_context_t &detector, const wcstring &working_directory, const env_vars_snapshot_t &vars); bool autosuggest_validate_from_history(const history_item_t &item,
file_detection_context_t &detector,
const wcstring &working_directory,
const env_vars_snapshot_t &vars);
/* Tests whether the specified string cpath is the prefix of anything we could cd to. directories is a list of possible parent directories (typically either the working directory, or the cdpath). This does I/O! // Tests whether the specified string cpath is the prefix of anything we could cd to. directories is
// a list of possible parent directories (typically either the working directory, or the cdpath).
This is used only internally to this file, and is exposed only for testing. // This does I/O!
*/ //
enum // This is used only internally to this file, and is exposed only for testing.
{ enum {
/* The path must be to a directory */ // The path must be to a directory.
PATH_REQUIRE_DIR = 1 << 0, PATH_REQUIRE_DIR = 1 << 0,
// Expand any leading tilde in the path.
/* Expand any leading tilde in the path */
PATH_EXPAND_TILDE = 1 << 1 PATH_EXPAND_TILDE = 1 << 1
}; };
typedef unsigned int path_flags_t; typedef unsigned int path_flags_t;
bool is_potential_path(const wcstring &const_path, const wcstring_list_t &directories, path_flags_t flags); bool is_potential_path(const wcstring &const_path, const wcstring_list_t &directories,
path_flags_t flags);
#endif #endif