================================================================================
                                                         *telescope.changelog*

# Changelog

                                                     *telescope.changelog-922*

Date: May 17, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/922

This is one of our largest breaking changes thus far, so I (TJ) am adding some
information here so that you can more easily update (without having to track
down the commit, etc.).

The goal of these breaking changes is to greatly simplify the way
configuration for layouts happen. This should make it much easier to configure
each picker, layout_strategy, and more. Please report any bugs or behavior
that is broken / confusing upstream and we can try and make the configuration
better.

|telescope.setup()| has changed `layout_defaults` -> `layout_config`.
    This makes it so that the setup and the pickers share the same key,
    otherwise it is too confusing which key is for which.


`picker:find()` now has different values available for configuring the UI.
    All configuration for the layout must be passed in the key:
        `layout_config`.

    Previously, these keys were passed via `picker:find(opts)`, but should be
    passed via `opts.layout_config` now.
        - {height}
        - {width}
        - {prompt_position}
        - {preview_cutoff}

    These keys are removed:
        - {results_height}: This key is no longer valid. Instead, use `height`
          and the corresponding `preview_*` options for the layout strategy to
          get the correct results height. This simplifies the configuration
          for many of the existing strategies.

        - {results_width}: This key actually never did anything. It was
          leftover from some hacking that I had attempted before. Instead you
          should be using something like the `preview_width` configuration
          option for |layout_strategies.horizontal()|

    You should get error messages when you try and use any of the above keys now.

                                                     *telescope.changelog-839*

Date: July 7, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/839

Small breaking change regarding `shorten_path` and `hide_filename`.
This allows to configure path displays on a global level and offers a way for
extension developers to make use of the same configuration, offering a better
overall experience.

The new way to configure to configure path displays is with:
    `path_display`: It is a table and accepts multiple values:
        - "hidden"    hide file names
        - "tail"      only display the file name, and not the path
        - "absolute"  display absolute paths
        - "shorten"   only display the first character of each directory in
                      the path
    see |telescope.defaults.path_display|

Example would be for a global configuration:
  require("telescope").setup{
    defaults = {
      path_display = {
        "shorten",
        "absolute",
      },
    }
  }

You can also still pass this to a single builtin call:
    require("telescope.builtin").find_files {
      path_display = { "shorten" }
    }

For extension developers there is a new util function that can be used to
display a path:
    local filename = utils.transform_path(opts, entry.filename)

                                                     *telescope.changelog-473*

Date: July 14, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/473

Deprecation of telescope.path

Extension developers need to move to plenary.path, because we will remove the
telescope.path  module soon.

Guide to switch over to plenary.path
    - separator
        before: require("telescope.path").separator
        now:    require("plenary.path").path.sep
    - home
        before: require("telescope.path").home
        now:    require("plenary.path").path.home
    - make_relative
        before: require("telescope.path").make_relative(filepath, cwd)
        now:    require("plenary.path"):new(filepath):make_relative(cwd)
    - shorten
        before: require("telescope.path").shorten(filepath)
        now:    require("plenary.path"):new(filepath):shorten()
                with optional len, default is 1
    - normalize
        before: require("telescope.path").normalize(filepath, cwd)
        now:    require("plenary.path"):new(filepath):normalize(cwd)
    - read_file
        before: require("telescope.path").read_file(filepath)
        now:    require("plenary.path"):new(filepath):read()
    - read_file_async
        before: require("telescope.path").read_file_async(filepath, callback)
        now:    require("plenary.path"):new(filepath):read(callback)

                                                    *telescope.changelog-1406*

Date: November 4, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1406

Telescope requires Neovim release 0.5.1 or a recent nightly

Due to making use of newly implemented extmark features, Telescope now
requires users to be on Neovim 0.5.1 (the most recent stable version) or on
the LATEST version of Neovim nightly.


                                                    *telescope.changelog-1549*

Date: December 10, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1549

Telescope requires now Neovim release 0.6.0 or a more recent nightly.
If you are running neovim nightly, you need to make sure that you are on the
LATEST version. Every other commit is not supported. So make sure you build
the newest nightly before reporting issues.


                                                    *telescope.changelog-1553*

Date: December 10, 2021
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1553

Move from `vim.lsp.diagnostic` to `vim.diagnostic`.

Because the newly added `vim.diagnostic` has no longer anything to do with lsp
we also decided to rename our diagnostic functions:
    Telescope lsp_document_diagnostics -> Telescope diagnostics bufnr=0
    Telescope lsp_workspace_diagnostics -> Telescope diagnostics
Because of that the `lsp_*_diagnostics` inside Telescope will be deprecated
and removed soon. The new `diagnostics` works almost identical to the previous
functions. Note that there is no longer a workspace diagnostics. You can only
get all diagnostics for all open buffers.


                                                    *telescope.changelog-1851*

Date: April 22, 2022
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1851

Telescope requires now Neovim release 0.7.0 or a more recent nightly.
If you are running Neovim nightly, you need to make sure that you are on the
LATEST version. Every other commit is not supported. So make sure you build
the newest nightly before reporting issues.
In the future, we will adopt a different release strategy. This release
strategy follows the approach that the latest telescope.nvim master will only
work with latest Neovim nightly and we will provide tags for specific Neovim
versions. You can read more about this strategy here:
https://github.com/nvim-telescope/telescope.nvim/issues/1772


                                                    *telescope.changelog-1866*

Date: April 25, 2022
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1866

We decided to remove both `lsp_code_actions` and `lsp_range_code_actions`.
Currently, both functions are highly duplicated code from neovim, with fewer
features, because it's out of date. So rather that we copy over the required
changes to fix some bugs or implement client side code actions, we decided to
remove both of them and suggest you use `vim.lsp.buf.code_action` and
`vim.lsp.buf.range_code_action`. The transition to it is easy thanks to
`vim.ui.select` which allows you to override the select UI. We provide a small
extension for quite some time that make it easy to use telescope for
`vim.ui.select`. You can found the code here
https://github.com/nvim-telescope/telescope-ui-select.nvim. It offers the same
displaying as the current version of `lsp_code_actions`. An alternative is
https://github.com/stevearc/dressing.nvim which has support for multiple
different backends including telescope.


                                                    *telescope.changelog-1945*

Date: July 01, 2022
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1945

This is our dev branch which contains a lot of PRs, a lot of fixes,
refactoring and general quality of life improvements. It also contains new
features, the most noteworthy are the following (mostly developed by the
community):
- feat: none strategy & control attachment (#1867)
- feat: force buffer delete for terminal and improvements for
  Picker:delete_selection (#1943)
- feat(tags): process tagfiles on the fly (#1989)
- feat(builtin.lsp): implement builtin handlers for
  lsp.(incoming|outgoing)_calls (#1484)
- feat: clear previewer if no item is selected (#2004)
- feat: add min max boundary to width, height resolver (#2002)
- feat: Add entry_index for entry_makers (#1850)
- feat: refine with new_table (#1115)

The last one is one of the most exciting new features, because it allows you
to go from live_grep into a fuzzy environment with the following mapping
`<C-Space>`. It's a general interface we now implemented for `live_grep` and
`lsp_dynamic_workspace_symbols` but it could also be easily implemented for
other builtins, by us or the user. It's now available for extension developers.
We will add documentation in the next couple of days and improve it by adding
more options to configure it after the initial 0.1 release.

But as with all longer development phases, there are also some breaking
changes. This is the main reason we moved development to a separate branch, for
the past two months. We can't promise that there won't be more breaking
changes, but it is the plan that this is the last set of breaking changes prior
to the 0.1 release on July, 12. We are deeply sorry for the inconvenience. The
following breaking changes are included in this PR:
- break(git_files): change `show_untracked` default to false. Can be changed
  back with `:Telescope git_files show_untracked=true`
- break: deprecate `utils.get_default` `utils.if_nil`, will be removed prior
  to 0.1, so if you use it in your config, please move to `vim.F.if_nil`
- break: drops `ignore_filename` option, use `path_display= { "hidden" }`
  instead
- break: prefix internal interfaces with __ so
  `require("telescope.builtin.files").find_files` will show a notify error but
  still works for now. The error will be removed prior to 0.1! You should use
  `require("telescope.builtin").find_files` because we wrap all the functions
  that are exposed in this module.
- break: defaults.preview.treesitter rework that allows you to either enable a
  list of languages, or enable all and disable some. Please read
  `:help telescope.defaults.preview` for more information.
  Something like this is now possible:
    >
    treesitter = {
      enable = false,
      -- or
      enable = { "c" },
      -- disable can be set if enable isn't set
      disable = { "perl", "javascript" },
    },
<


                                                    *telescope.changelog-2499*

Date: May 24, 2023
PR: https://github.com/nvim-telescope/telescope.nvim/pull/2499

We decided to bump the minimum Neovim version to 0.9.0, in order to remove a
couple of no longer required workarounds. That includes using upstream
treesitter implementation in favor of nvim-treesitter.
If you still have a requirement for Neovim 0.7 or 0.8, we also have a stable
branch 0.1.x (or version, currently 0.1.1) which will not receive this version
bump and will continue to offer support for older Neovim versions.


                                                    *telescope.changelog-2529*

Date: June 09, 2023
PR: https://github.com/nvim-telescope/telescope.nvim/pull/2529

We finally removed usage of `plenary.filetype` to determine filetypes for
previewing and replaced it with `vim.filetype`. So if you have highlighting
issues you no longer have to configure `plenary`, but rather read
|vim.filetype|.


 vim:tw=78:ts=8:ft=help:norl:
