src

package
v0.0.37 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2015 License: BSD-3-Clause, MIT Imports: 50 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CLI = flags.NewNamedParser("src", flags.Default)
View Source
var GlobalOpt struct {
	Verbose bool `short:"v" description:"show verbose output"`
}

GlobalOpt contains global options.

View Source
var OpenStore func() (interface{}, error) = storeCmd.store

OpenStore is called by all of the store subcommands to open the store.

View Source
var Version string

Version of src.

For releases, this is set using the -X flag to `go tool ld`. See http://stackoverflow.com/a/11355611.

Functions

func CloseAll

func CloseAll(files map[string]io.ReadCloser)

func ColorizeDiff added in v0.0.29

func ColorizeDiff(diff []byte) []byte

ColorizeDiff takes a byte slice of lines and returns the same, but with diff highlighting. That is, lines starting with '+' are green and lines starting with '-' are red.

func CreateMakefile added in v0.0.27

func CreateMakefile(execOpt ToolchainExecOpt, cacheOpt BuildCacheOpt) (*makex.Makefile, error)

CreateMakefile creates a Makefile to build a tree. The cwd should be the root of the tree you want to make (due to some probably unnecessary assumptions that CreateMaker makes).

func Import added in v0.0.37

func Import(buildDataFS vfs.FileSystem, stor interface{}, opt ImportOpt) error

Import imports build data into a RepoStore or MultiRepoStore.

func InitStoreCmds added in v0.0.37

func InitStoreCmds(c *flags.Command)

func Main

func Main() error

func NewAPIClientWithAuthIfPresent added in v0.0.27

func NewAPIClientWithAuthIfPresent() *sourcegraph.Client

NewAPIClientWithAuthIfPresent calls newAPIClient with the user auth credentials from the userAuthFile (if present), and otherwise creates an unauthed API client.

func OpenInputFiles

func OpenInputFiles(extraArgs []string) map[string]io.ReadCloser

func PrintJSON

func PrintJSON(v interface{}, prefix string)

func SetOptionDefaultValue

func SetOptionDefaultValue(g *flags.Group, longName string, defaultVal ...string)

func SourceUnitMatchesArgs

func SourceUnitMatchesArgs(specified []string, u *unit.SourceUnit) bool

Types

type APICmd

type APICmd struct{}

func (*APICmd) Execute

func (c *APICmd) Execute(args []string) error

type APIDepsCmd added in v0.0.27

type APIDepsCmd struct {
	Args struct {
		Dir Directory `name:"DIR" default:"." description:"root directory of target project"`
	} `positional-args:"yes"`
}

func (*APIDepsCmd) Execute added in v0.0.27

func (c *APIDepsCmd) Execute(args []string) error

type APIDescribeCmd

type APIDescribeCmd struct {
	File      string `long:"file" required:"yes" value-name:"FILE"`
	StartByte uint32 `long:"start-byte" required:"yes" value-name:"BYTE"`

	NoExamples bool `long:"no-examples" describe:"don't show examples from Sourcegraph.com"`
}

func (*APIDescribeCmd) Execute

func (c *APIDescribeCmd) Execute(args []string) error

type APIListCmd added in v0.0.16

type APIListCmd struct {
	File   string `long:"file" required:"yes" value-name:"FILE"`
	NoRefs bool   `long:"no-refs"`
	NoDefs bool   `long:"no-defs"`
	NoDocs bool   `long:"no-docs"`
}

func (*APIListCmd) Execute added in v0.0.16

func (c *APIListCmd) Execute(args []string) error

type APIUnitsCmd added in v0.0.27

type APIUnitsCmd struct {
	Args struct {
		Dir Directory `name:"DIR" default:"." description:"root directory of target project"`
	} `positional-args:"yes"`
}

func (*APIUnitsCmd) Execute added in v0.0.27

func (c *APIUnitsCmd) Execute(args []string) error

type BuildCacheOpt

type BuildCacheOpt struct {
	NoCacheRead  bool `long:"no-cache-read" description:"do not read from build cache"`
	NoCacheWrite bool `long:"no-cache-write" description:"do not write results to build cache"`
}

type BuildCmd added in v0.0.30

type BuildCmd struct {
	CommitID string `short:"c" long:"commit" description:"commit ID to build" required:"yes"`
	Priority int    `short:"p" long:"priority" description:"build priority" default:"2"`
}

func (*BuildCmd) Execute added in v0.0.30

func (c *BuildCmd) Execute(args []string) error

type BuildDataCatCmd added in v0.0.27

type BuildDataCatCmd struct {
	Args struct {
		File string `name:"FILE" default:"." description:"file whose contents to print"`
	} `positional-args:"yes"`
	// contains filtered or unexported fields
}

func (*BuildDataCatCmd) Execute added in v0.0.27

func (c *BuildDataCatCmd) Execute(args []string) error

type BuildDataCmd added in v0.0.27

type BuildDataCmd struct {
}

func (*BuildDataCmd) Execute added in v0.0.27

func (c *BuildDataCmd) Execute(args []string) error

type BuildDataFetchCmd added in v0.0.27

type BuildDataFetchCmd struct {
	DryRun bool `short:"n" long:"dry-run" description:"don't do anything, just show what would be done"`
	// contains filtered or unexported fields
}

func (*BuildDataFetchCmd) Execute added in v0.0.27

func (c *BuildDataFetchCmd) Execute(args []string) error

type BuildDataListCmd added in v0.0.27

type BuildDataListCmd struct {
	Args struct {
		Dir string `name:"DIR" default:"." description:"list build data files in this dir"`
	} `positional-args:"yes"`

	Recursive bool   `short:"r" long:"recursive" description:"list recursively"`
	Long      bool   `short:"l" long:"long" description:"show file sizes and times"`
	Type      string `long:"type" description:"show only entries of this type (f=file, d=dir)"`
	URLs      bool   `long:"urls" description:"show URLs to build data files (implies -l)"`
	// contains filtered or unexported fields
}

func (*BuildDataListCmd) Execute added in v0.0.27

func (c *BuildDataListCmd) Execute(args []string) error

type BuildDataRemoveCmd added in v0.0.27

type BuildDataRemoveCmd struct {
	Recursive bool `short:"r" description:"recursively delete files and dir"`
	All       bool `long:"all" description:"remove all build data (local only)"`
	Args      struct {
		Files []string `name:"FILES" default:"." description:"file to remove"`
	} `positional-args:"yes"`
	// contains filtered or unexported fields
}

func (*BuildDataRemoveCmd) Execute added in v0.0.27

func (c *BuildDataRemoveCmd) Execute(args []string) error

type BuildDataUploadCmd added in v0.0.27

type BuildDataUploadCmd struct {
	DryRun bool `short:"n" long:"dry-run" description:"don't do anything, just show what would be done"`
	// contains filtered or unexported fields
}

func (*BuildDataUploadCmd) Execute added in v0.0.27

func (c *BuildDataUploadCmd) Execute(args []string) error

type BuildsCmd added in v0.0.30

type BuildsCmd struct {
	N         int    `short:"n" description:"number of builds to show" default:"5"`
	CommitID  string `long:"commit" description:"filter builds by commit ID"`
	Queued    bool   `long:"queued"`
	Succeeded bool   `long:"succeeded"`
	Ended     bool   `long:"ended"`
	Failed    bool   `long:"failed"`
	Sort      string `long:"sort" default:"updated_at"`
	Direction string `long:"dir" default:"desc"`
}

func (*BuildsCmd) Execute added in v0.0.30

func (c *BuildsCmd) Execute(args []string) error

type ConfigCmd

type ConfigCmd struct {
	config.Options

	ToolchainExecOpt `group:"execution"`
	BuildCacheOpt    `group:"build cache"`

	Output struct {
		Output string `short:"o" long:"output" description:"output format" default:"text" value-name:"text|json"`
	} `group:"output"`

	Args struct {
		Dir Directory `name:"DIR" default:"." description:"root directory of tree to configure"`
	} `positional-args:"yes"`
	// contains filtered or unexported fields
}

func (*ConfigCmd) Execute

func (c *ConfigCmd) Execute(args []string) error

type DiffCmd added in v0.0.27

type DiffCmd struct {
	Args struct {
		ExpFile string `name:"expfile" description:"expected file"`
		ActFile string `name:"actfile" description:"actual file"`
	} `positional-args:"yes"`
}

TODO(beyang): should have TestCmd use this in checkResults to give more helpful output

func (*DiffCmd) Execute added in v0.0.27

func (c *DiffCmd) Execute(args []string) error

type Directory

type Directory string

Directory is flags.Completer that provides directory name completion.

TODO(sqs): this is annoying. it only completes the dir name and doesn't let you keep typing the arg.

func (Directory) Complete

func (d Directory) Complete(match string) []flags.Completion

Complete implements flags.Completer and returns a list of existing directories with the given prefix.

type DoAllCmd

type DoAllCmd struct {
	config.Options

	ToolchainExecOpt `group:"execution"`
	BuildCacheOpt    `group:"build cache"`

	Dir Directory `short:"C" long:"directory" description:"change to DIR before doing anything" value-name:"DIR"`
}

func (*DoAllCmd) Execute

func (c *DoAllCmd) Execute(args []string) error

type ImportOpt added in v0.0.37

type ImportOpt struct {
	DryRun  bool `short:"n" long:"dry-run" description:"print what would be done but don't do anything"`
	NoIndex bool `long:"no-index" description:"don't build indexes (indexes inside a single source unit are always built)"`

	Repo     string `long:"repo" description:"only import for this repo"`
	Unit     string `long:"unit" description:"only import source units with this name"`
	UnitType string `long:"unit-type" description:"only import source units with this type"`
	CommitID string `long:"commit" description:"commit ID of commit whose data to import"`

	Verbose bool
}

type InfoCmd

type InfoCmd struct{}

func (*InfoCmd) Execute

func (c *InfoCmd) Execute(args []string) error

type LintCmd added in v0.0.31

type LintCmd struct {
	Repo string `short:"r" long:"repo" description:"repository URI (defaults to VCS 'srclib' or 'origin' remote URL)"`

	NoCheckFiles   bool `long:"no-check-files" description:"don't check that file/dir fields refer to actual files"`
	NoCheckResolve bool `long:"no-check-resolve" description:"don't check that internal refs resolve to existing defs"`

	Args struct {
		Paths []string `name:"PATH" description:"path to srclib JSON output file, or a directory tree of such"`
	} `positional-args:"YES"`
}

func (*LintCmd) Execute added in v0.0.31

func (c *LintCmd) Execute(args []string) error

type LoginCmd added in v0.0.27

type LoginCmd struct {
	UID int    `long:"uid" description:"Sourcegraph UID" required:"yes"`
	Key string `long:"key" description:"Sourcegraph API key" required:"yes"`

	NoVerify bool `long:"no-verify" description:"don't verify login credentials by attempting to log in"`
}

func (*LoginCmd) Execute added in v0.0.27

func (c *LoginCmd) Execute(args []string) error

type MakeCmd

type MakeCmd struct {
	config.Options

	ToolchainExecOpt `group:"execution"`
	BuildCacheOpt    `group:"build cache"`

	DryRun bool `short:"n" long:"dry-run" description:"print what would be done and exit"`

	Dir Directory `short:"C" long:"directory" description:"change to DIR before doing anything" value-name:"DIR"`

	Args struct {
		Goals []string `name:"GOALS..." description:"Makefile targets to build (default: all)"`
	} `positional-args:"yes"`
}

func (*MakeCmd) Execute

func (c *MakeCmd) Execute(args []string) error

type MakefileCmd added in v0.0.27

type MakefileCmd struct {
	ToolchainExecOpt `group:"execution"`
	BuildCacheOpt    `group:"build cache"`
}

func (*MakefileCmd) Execute added in v0.0.27

func (c *MakefileCmd) Execute(args []string) error

type NormalizeGraphDataCmd

type NormalizeGraphDataCmd struct {
	UnitType string `long:"unit-type" description:"source unit type (e.g., GoPackage)"`
	Dir      string `long:"dir" description:"directory of source unit (SourceUnit.Dir field)"`
}

func (*NormalizeGraphDataCmd) Execute

func (c *NormalizeGraphDataCmd) Execute(args []string) error

type PushCmd added in v0.0.22

type PushCmd struct {
}

func (*PushCmd) Execute added in v0.0.22

func (c *PushCmd) Execute(args []string) error

type QueryCmd added in v0.0.28

type QueryCmd struct{}

func (*QueryCmd) Execute added in v0.0.28

func (c *QueryCmd) Execute(args []string) error

type RemoteAddCmd added in v0.0.30

type RemoteAddCmd struct {
	VCSType  string `long:"vcs" description:"VCS type" required:"yes"`
	CloneURL string `long:"clone-url" description:"clone URL" required:"yes"`
}

func (*RemoteAddCmd) Execute added in v0.0.30

func (c *RemoteAddCmd) Execute(args []string) error

type RemoteCmd added in v0.0.27

type RemoteCmd struct {
	RepoURI string `short:"r" long:"repo" description:"repository URI (defaults to VCS 'srclib' or 'origin' remote URL)"`
}

func (*RemoteCmd) Execute added in v0.0.27

func (c *RemoteCmd) Execute(args []string) error

type RemoteImportBuildCmd added in v0.0.30

type RemoteImportBuildCmd struct {
	CommitID string `short:"c" long:"commit" description:"commit ID of data to import" required:"yes"`
}

func (*RemoteImportBuildCmd) Execute added in v0.0.30

func (c *RemoteImportBuildCmd) Execute(args []string) error

type Repo

type Repo struct {
	RootDir  string // Root directory containing repository being analyzed
	VCSType  string // VCS type (git or hg)
	CommitID string // CommitID of current working directory
	CloneURL string // CloneURL of repo.
}

func OpenRepo

func OpenRepo(dir string) (*Repo, error)

func (*Repo) RepoRevSpec added in v0.0.27

func (r *Repo) RepoRevSpec() sourcegraph.RepoRevSpec

func (*Repo) URI

func (c *Repo) URI() string

type RepoCmd added in v0.0.30

type RepoCmd struct{}

func (*RepoCmd) Execute added in v0.0.30

func (c *RepoCmd) Execute(args []string) error

type SelfupdateCmd added in v0.0.16

type SelfupdateCmd struct {
}

func (*SelfupdateCmd) Execute added in v0.0.16

func (c *SelfupdateCmd) Execute(args []string) error

type StoreCmd added in v0.0.37

type StoreCmd struct {
	Type   string `short:"t" long:"type" description:"the (multi-)repo store type to use (RepoStore, MultiRepoStore, etc.)" default:"RepoStore"`
	Root   string `` /* 150-byte string literal not displayed */
	Config string `long:"config" description:"(rarely used) JSON-encoded config for extra config, specific to each store type"`
}

func (*StoreCmd) Execute added in v0.0.37

func (c *StoreCmd) Execute(args []string) error

type StoreDefsCmd added in v0.0.37

type StoreDefsCmd struct {
	Repo           string `long:"repo"`
	Path           string `long:"path"`
	UnitType       string `long:"unit-type" `
	Unit           string `long:"unit"`
	File           string `long:"file"`
	FilePathPrefix string `long:"file-path-prefix"`
	CommitID       string `long:"commit"`

	RepoCommitIDs string `long:"repo-commits" description:"comma-separated list of repo@commitID specifiers"`

	Query string `long:"query"`

	Limit  int `short:"n" long:"limit" description:"max results to return (0 for all)"`
	Offset int `long:"offset" description:"results offset (0 to start with first results)"`
}

func (*StoreDefsCmd) Execute added in v0.0.37

func (c *StoreDefsCmd) Execute(args []string) error

type StoreImportCmd added in v0.0.37

type StoreImportCmd struct {
	ImportOpt

	Sample           bool `long:"sample" description:"(sample data) import sample data, not .srclib-cache data"`
	SampleDefs       int  `long:"sample-defs" description:"(sample data) number of sample defs to import" default:"100"`
	SampleRefs       int  `long:"sample-refs" description:"(sample data) number of sample refs to import" default:"100"`
	SampleImportOnly bool `long:"sample-import-only" description:"(sample data) only import, don't demonstrate listing data"`

	RemoteBuildData bool `long:"remote-build-data" description:"import remote build data (not the local .srclib-cache build data)"`
}

func (*StoreImportCmd) Execute added in v0.0.37

func (c *StoreImportCmd) Execute(args []string) error

type StoreIndexCmd added in v0.0.37

type StoreIndexCmd struct {
	// contains filtered or unexported fields
}

func (*StoreIndexCmd) Execute added in v0.0.37

func (c *StoreIndexCmd) Execute(args []string) error

func (StoreIndexCmd) IndexCriteria added in v0.0.37

func (c StoreIndexCmd) IndexCriteria() store.IndexCriteria

type StoreIndexesCmd added in v0.0.37

type StoreIndexesCmd struct {
	// contains filtered or unexported fields
}

func (*StoreIndexesCmd) Execute added in v0.0.37

func (c *StoreIndexesCmd) Execute(args []string) error

func (StoreIndexesCmd) IndexCriteria added in v0.0.37

func (c StoreIndexesCmd) IndexCriteria() store.IndexCriteria

type StoreRefsCmd added in v0.0.37

type StoreRefsCmd struct {
	Repo     string `long:"repo"`
	UnitType string `long:"unit-type" `
	Unit     string `long:"unit"`
	File     string `long:"file"`
	CommitID string `long:"commit"`

	RepoCommitIDs string `long:"repo-commits" description:"comma-separated list of repo@commitID specifiers"`

	Start uint32 `long:"start"`
	End   uint32 `long:"end"`

	DefRepo     string `long:"def-repo"`
	DefUnitType string `long:"def-unit-type" `
	DefUnit     string `long:"def-unit"`
	DefPath     string `long:"def-path"`

	Broken   bool `long:"broken" description:"only show refs that point to nonexistent defs"`
	Coverage bool `long:"coverage" description:"print a coverage summary (resolved refs, broken refs, total refs)"`

	Format string `long:"format" description:"output format ('json' or 'none')" default:"json"`

	Limit  int `short:"n" long:"limit" description:"max results to return (0 for all)"`
	Offset int `long:"offset" description:"results offset (0 to start with first results)"`
}

func (*StoreRefsCmd) Execute added in v0.0.37

func (c *StoreRefsCmd) Execute(args []string) error

type StoreReposCmd added in v0.0.37

type StoreReposCmd struct {
	IDContains string `short:"i" long:"id-contains" description:"filter to repos whose ID contains this substring"`
}

func (*StoreReposCmd) Execute added in v0.0.37

func (c *StoreReposCmd) Execute(args []string) error

type StoreUnitsCmd added in v0.0.37

type StoreUnitsCmd struct {
	Type     string `long:"type" `
	Name     string `long:"name"`
	CommitID string `long:"commit"`
	Repo     string `long:"repo"`

	RepoCommitIDs string `long:"repo-commits" description:"comma-separated list of repo@commitID specifiers"`

	File string `long:"file" description:"filter by units whose Files list contains this file"`
}

func (*StoreUnitsCmd) Execute added in v0.0.37

func (c *StoreUnitsCmd) Execute(args []string) error

type StoreVersionsCmd added in v0.0.37

type StoreVersionsCmd struct {
	Repo           string `long:"repo"`
	CommitIDPrefix string `long:"commit" description:"commit ID prefix"`

	RepoCommitIDs string `long:"repo-commits" description:"comma-separated list of repo@commitID specifiers"`
}

func (*StoreVersionsCmd) Execute added in v0.0.37

func (c *StoreVersionsCmd) Execute(args []string) error

type TestCmd

type TestCmd struct {
	GenerateExpected bool `long:"gen" description:"(re)generate expected output for all test cases and exit"`

	ToolchainExecOpt

	Args struct {
		Trees []Directory `name:"TREES" description:"trees to treat as test cases"`
	} `positional-args:"yes"`
}

func (*TestCmd) Execute

func (c *TestCmd) Execute(args []string) error

type ToolCmd

type ToolCmd struct {
	ToolchainExecOpt

	Args struct {
		Toolchain ToolchainPath `name:"TOOLCHAIN" description:"toolchain path of the toolchain to run"`
		Tool      ToolName      `name:"TOOL" description:"tool subcommand name to run (in TOOLCHAIN)"`
		ToolArgs  []string      `name:"ARGS" description:"args to pass to TOOL"`
	} `positional-args:"yes" required:"yes"`
}

func (*ToolCmd) Execute

func (c *ToolCmd) Execute(args []string) error

type ToolName

type ToolName string

func (ToolName) Complete

func (t ToolName) Complete(match string) []flags.Completion

type ToolchainAddCmd added in v0.0.3

type ToolchainAddCmd struct {
	Dir  string `long:"dir" description:"directory containing toolchain to add" value-name:"DIR"`
	Args struct {
		ToolchainPath string `name:"TOOLCHAIN" default:"." description:"toolchain path to use for toolchain directory"`
	} `positional-args:"yes" required:"yes"`
}

func (*ToolchainAddCmd) Execute added in v0.0.3

func (c *ToolchainAddCmd) Execute(args []string) error

type ToolchainBuildCmd

type ToolchainBuildCmd struct {
	Args struct {
		Toolchains []ToolchainPath `name:"TOOLCHAINS" description:"toolchain paths of toolchains to build"`
	} `positional-args:"yes" required:"yes"`
}

func (*ToolchainBuildCmd) Execute

func (c *ToolchainBuildCmd) Execute(args []string) error

type ToolchainCmd

type ToolchainCmd struct{}

func (*ToolchainCmd) Execute

func (c *ToolchainCmd) Execute(args []string) error

type ToolchainExecOpt

type ToolchainExecOpt struct {
	ExeMethods string `short:"m" long:"methods" default:"program,docker" description:"toolchain execution methods" value-name:"METHODS"`
}

func (*ToolchainExecOpt) ToolchainMode

func (o *ToolchainExecOpt) ToolchainMode() toolchain.Mode

type ToolchainGetCmd

type ToolchainGetCmd struct {
	Update bool `short:"u" long:"update" description:"use the network to update the toolchain"`
	Args   struct {
		Toolchains []ToolchainPath `name:"TOOLCHAINS" description:"toolchain paths of toolchains to get"`
	} `positional-args:"yes" required:"yes"`
}

func (*ToolchainGetCmd) Execute

func (c *ToolchainGetCmd) Execute(args []string) error

type ToolchainInstallCmd added in v0.0.37

type ToolchainInstallCmd struct {
	// Args are not required so we can print out a more detailed
	// error message inside (*ToolchainInstallCmd).Execute.
	Args struct {
		Languages []string `value-name:"LANG" description:"language toolchains to install"`
	} `positional-args:"yes"`
}

func (*ToolchainInstallCmd) Execute added in v0.0.37

func (c *ToolchainInstallCmd) Execute(args []string) error

type ToolchainInstallStdCmd added in v0.0.17

type ToolchainInstallStdCmd struct {
	Skip []string `` /* 142-byte string literal not displayed */
}

func (*ToolchainInstallStdCmd) Execute added in v0.0.17

func (c *ToolchainInstallStdCmd) Execute(args []string) error

type ToolchainListCmd

type ToolchainListCmd struct {
}

func (*ToolchainListCmd) Execute

func (c *ToolchainListCmd) Execute(args []string) error

type ToolchainListToolsCmd

type ToolchainListToolsCmd struct {
	Op             string `short:"p" long:"op" description:"only list tools that perform these operations only" value-name:"OP"`
	SourceUnitType string `short:"u" long:"source-unit-type" description:"only list tools that operate on this source unit type" value-name:"TYPE"`
	Args           struct {
		Toolchains []ToolchainPath `name:"TOOLCHAINS" description:"only list tools in these toolchains"`
	} `positional-args:"yes" required:"yes"`
}

func (*ToolchainListToolsCmd) Execute

func (c *ToolchainListToolsCmd) Execute(args []string) error

type ToolchainPath

type ToolchainPath string

func (ToolchainPath) Complete

func (t ToolchainPath) Complete(match string) []flags.Completion

type UnitsCmd

type UnitsCmd struct {
	config.Options

	ToolchainExecOpt `group:"execution"`

	Output struct {
		Output string `short:"o" long:"output" description:"output format" default:"text" value-name:"text|json"`
	} `group:"output"`

	Args struct {
		Dir Directory `name:"DIR" default:"." description:"root directory of tree to list units in"`
	} `positional-args:"yes"`
}

func (*UnitsCmd) Execute

func (c *UnitsCmd) Execute(args []string) error

type VersionCmd added in v0.0.16

type VersionCmd struct {
	NoCheck bool `long:"no-check-update" description:"don't check for updates"`
}

func (*VersionCmd) Execute added in v0.0.16

func (c *VersionCmd) Execute(args []string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL