| " Copyright 2014 The Chromium Authors. All rights reserved. | 
 | " Use of this source code is governed by a BSD-style license that can be | 
 | " found in the LICENSE file. | 
 | " | 
 | " gn.vim: Vim syntax file for GN. | 
 | " | 
 | " Quit when a (custom) syntax file was already loaded | 
 | "if exists("b:current_syntax") | 
 |   "finish | 
 | "endif | 
 |  | 
 | syn case match | 
 |  | 
 | " Keywords within functions | 
 | syn keyword     gnConditional       if else | 
 | hi def link     gnConditional       Conditional | 
 |  | 
 | " Predefined variables | 
 | syn keyword     gnPredefVar current_cpu current_os current_toolchain | 
 | syn keyword     gnPredefVar default_toolchain host_cpu host_os | 
 | syn keyword     gnPredefVar root_build_dir root_gen_dir root_out_dir | 
 | syn keyword     gnPredefVar target_cpu target_gen_dir target_out_dir | 
 | syn keyword     gnPredefVar target_os | 
 | syn keyword     gnPredefVar true false | 
 | hi def link     gnPredefVar         Constant | 
 |  | 
 | " Target declarations | 
 | syn keyword     gnTarget action action_foreach copy executable group | 
 | syn keyword     gnTarget shared_library source_set static_library | 
 | syn keyword     gnTarget loadable_module generated_file | 
 | syn keyword     gnTarget rust_library rust_proc_macro | 
 | hi def link     gnTarget            Type | 
 |  | 
 | " Buildfile functions | 
 | syn keyword     gnFunctions assert config declare_args defined exec_script | 
 | syn keyword     gnFunctions foreach get_label_info get_path_info | 
 | syn keyword     gnFunctions get_target_outputs getenv import print | 
 | syn keyword     gnFunctions process_file_template propagates_configs read_file | 
 | syn keyword     gnFunctions rebase_path set_default_toolchain set_defaults | 
 | syn keyword     gnFunctions set_sources_assignment_filter split_list string_join | 
 | syn keyword     gnFunctions string_split template tool toolchain toolchain_args | 
 | syn keyword     gnFunctions write_file | 
 | hi def link     gnFunctions         Macro | 
 |  | 
 | " Variables | 
 | syn keyword     gnVariable all_dependent_configs allow_circular_includes_from | 
 | syn keyword     gnVariable args asmflags cflags cflags_c cflags_cc cflags_objc | 
 | syn keyword     gnVariable cflags_objcc check_includes complete_static_lib | 
 | syn keyword     gnVariable configs data data_deps defines depfile deps | 
 | syn keyword     gnVariable include_dirs inputs ldflags lib_dirs libs | 
 | syn keyword     gnVariable output_extension output_name outputs public | 
 | syn keyword     gnVariable public_configs public_deps scripte sources testonly | 
 | syn keyword     gnVariable visibility contents output_conversion rebase | 
 | syn keyword     gnVariable data_keys walk_keys | 
 | hi def link     gnVariable          Keyword | 
 |  | 
 | " Strings | 
 | syn region      gnString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,gnTargetName | 
 | syn match       gnTargetName '\v:[^"]+' contained | 
 | hi def link     gnString            String | 
 | hi def link     gnTargetName        Special | 
 |  | 
 | " Comments | 
 | syn keyword     gnTodo              contained TODO FIXME XXX BUG NOTE | 
 | syn cluster     gnCommentGroup      contains=gnTodo | 
 | syn region      gnComment           start="#" end="$" contains=@gnCommentGroup,@Spell | 
 |  | 
 | hi def link     gnComment           Comment | 
 | hi def link     gnTodo              Todo | 
 |  | 
 | " Operators; I think this is a bit too colourful. | 
 | "syn match gnOperator /=/ | 
 | "syn match gnOperator /!=/ | 
 | "syn match gnOperator />=/ | 
 | "syn match gnOperator /<=/ | 
 | "syn match gnOperator /==/ | 
 | "syn match gnOperator /+=/ | 
 | "syn match gnOperator /-=/ | 
 | "syn match gnOperator /\s>\s/ | 
 | "syn match gnOperator /\s<\s/ | 
 | "syn match gnOperator /\s+\s/ | 
 | "syn match gnOperator /\s-\s/ | 
 | "hi def link     gnOperator          Operator | 
 |  | 
 | syn sync minlines=500 | 
 |  | 
 | let b:current_syntax = "gn" |