caveats: Differentiate zsh completion files and function files
When installing a file to zsh/site-functions directory, it is assumed this is a zsh completion file, and the zsh completion caveat is printed after installation. But not all files in the zsh/site-functions directory are completion files. Some are files for functions that can be loaded on demand with zsh's autoload command. - Edit Keg.completion_installed to search specifically for files in the zsh/site-functions directory starting with an underscore only (By convention, zsh completion files start with an underscore) - Add Keg.zsh_functions_installed to search for non-completion files in the zsh/site-functions - Add Caveats.zsh_function_caveats to print a caveat if non-completion files have been installed to zsh/site-functions
This commit is contained in:
		
							parent
							
								
									95688cd72e
								
							
						
					
					
						commit
						14f46625a3
					
				@ -19,6 +19,7 @@ class Caveats
 | 
			
		||||
    caveats << bash_completion_caveats
 | 
			
		||||
    caveats << zsh_completion_caveats
 | 
			
		||||
    caveats << fish_completion_caveats
 | 
			
		||||
    caveats << zsh_function_caveats
 | 
			
		||||
    caveats << fish_function_caveats
 | 
			
		||||
    caveats << plist_caveats
 | 
			
		||||
    caveats << python_caveats
 | 
			
		||||
@ -100,6 +101,16 @@ class Caveats
 | 
			
		||||
    EOS
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def zsh_function_caveats
 | 
			
		||||
    return unless keg
 | 
			
		||||
    return unless keg.zsh_functions_installed?
 | 
			
		||||
 | 
			
		||||
    <<-EOS.undent
 | 
			
		||||
      zsh functions have been installed to:
 | 
			
		||||
        #{HOMEBREW_PREFIX}/share/zsh/site-functions
 | 
			
		||||
    EOS
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def fish_function_caveats
 | 
			
		||||
    return unless keg
 | 
			
		||||
    return unless keg.fish_functions_installed?
 | 
			
		||||
 | 
			
		||||
@ -297,12 +297,21 @@ class Keg
 | 
			
		||||
  def completion_installed?(shell)
 | 
			
		||||
    dir = case shell
 | 
			
		||||
    when :bash then path.join("etc", "bash_completion.d")
 | 
			
		||||
    when :zsh  then path.join("share", "zsh", "site-functions")
 | 
			
		||||
    when :zsh
 | 
			
		||||
      dir = path.join("share", "zsh", "site-functions")
 | 
			
		||||
      dir if dir && dir.directory? && dir.children.any? { |f| f.basename.to_s.start_with?("_") }
 | 
			
		||||
    when :fish then path.join("share", "fish", "vendor_completions.d")
 | 
			
		||||
    end
 | 
			
		||||
    dir && dir.directory? && !dir.children.empty?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def zsh_functions_installed?
 | 
			
		||||
    # Check for non completion functions (i.e. files not started with an underscore),
 | 
			
		||||
    # since those can be checked separately
 | 
			
		||||
    dir = path.join("share", "zsh", "site-functions")
 | 
			
		||||
    dir && dir.directory? && dir.children.any? { |f| !f.basename.to_s.start_with?("_") }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def fish_functions_installed?
 | 
			
		||||
    dir = path.join("share", "fish", "vendor_functions.d")
 | 
			
		||||
    dir && dir.directory? && !dir.children.empty?
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user