User: emacs show eval history
Assistant:  InIn Emacs, when you evaluate expressions using commands like `M-:` (`eval-expression`), Emacs keeps a history of the evaluated expressions. There are several ways to view and reuse this eval history:

### 1. Using `M-:` (`eval-expression`) with History Navigation
- Press `M-:` to bring up the minibuffer prompt `Eval:`.
- You can navigate through previous expressions by pressing:
  - `M-p` (Meta + p) to go to the previous evaluated expression.
  - `M-n` (Meta + n) to go to the next evaluated expression.

This lets you browse through past eval expressions in the minibuffer directly.

---

### 2. View Eval History File
Emacs stores the eval-expression history in the variable `eval-expression-history` during the session. By default, it is not saved between sessions unless you customize Emacs to do so.

If you want to keep eval history persistently, you can save it when Emacs exits or use built-in packages like `savehist`.

Add the following to your Emacs config to save `eval-expression-history` automatically:

```elisp
(require 'savehist)
(setq savehist-additional-variables '(eval-expression-history))
(savehist-mode 1)
```

This will save the eval history and reload it next time you start Emacs.

---

### 3. Directly Access Eval History in Emacs Lisp
You can inspect the current eval history by evaluating:

```elisp
(eval-expression-history)
```

or just evaluate:

```elisp
M-: (print eval-expression-history)
```

This prints the list of previously evaluated expressions to the `*Messages*` buffer.

---

### Summary

- Use `M-:` then `M-p` / `M-n` to browse eval history interactively.
- Save eval history persistently with `savehist` and `(setq savehist-additional-variables '(eval-expression-history))`.
- Inspect the variable `eval-expression-history` programmatically.

Let me know if you want to see the history in a buffer or have other display preferences!
User: emacs reset package variables all to default,how ?
Assistant:  InIn Emacs, if you want to **reset package variables back to their default values**, there are a few approaches, depending on what exactly you want:

---

### 1. Reload the Package
The simplest way to reset package variables is to **reload the package**, which usually re-initializes its variables. You can do this with:

```elisp
M-x package-reload RET
```

However, this command requires `package-reload` function, which is available in Emacs 28 and later. Alternatively, you can manually unload and load the package:

```elisp
;; Replace `some-package` with the actual package name
(unload-feature 'some-package t)
(require 'some-package)
```

This restarts the package, which usually resets its variables.

---

### 2. Reset Variables Manually

If you know the specific variables you want to reset, you can simply set them back to their default values using `setq-default` or by assigning their default defined values.

For example:

```elisp
(setq some-package-variable default-value)
```

Or, if you want to reset a customizable variable to its default:

```elisp
(customize-reset 'some-package-variable)
```

You can invoke this interactively with:

```elisp
M-x customize-variable RET some-package-variable RET
```

and press the `Reset` button.

---

### 3. Reset All Package Variables on Emacs Restart

If your variables are set in your config file (`init.el` or `.emacs`), simply removing or commenting those lines and restarting Emacs will reset variables to package defaults.

---

### 4. Programmatic Reset: Use `custom-reset-variables`

Emacs provides a function `custom-reset-variables` that resets variables registered with the Customize system to their standard values.

```elisp
(custom-reset-variables)
```

This resets all "customized" variables to their default state, which may include package variables.

---

### 5. Reset All Variables for a Package (Advanced)

This is more involved because Emacs doesn't track variables on a per-package basis by default. You might:

- List all variables defined by a package by checking its source code.
- Reset those variables individually.

Or, if the package supports a reset or clear function, use it.

---

### Summary

| Method                  | Description                          |
|-------------------------|------------------------------------|
| Reload the package      | `(unload-feature ...)` + `(require ...)` |
| Customize system        | `M-x customize-variable` + Reset button |
| `custom-reset-variables` | Reset all customized variables     |
| Manual `setq`           | Set variables explicitly            |
| Remove config settings  | Restart Emacs without customizations |

---

If you want, I can help you write a function to reset certain variables or automate this process — just let me know the package and variables you want to reset!
User: how to disable emacs ligatures 
Assistant:  EmEmacs itself does not enable ligatures by default. Ligatures are typically provided by the font you use **and** the rendering engine, or by enabling ligature support through packages or specific configuration.

If you want to **disable ligatures** in Emacs, here are some common ways ligatures get enabled, and how to disable them:

---

### 1. Using a Ligature-supporting Font

If you use a font that supports ligatures (e.g., Fira Code, JetBrains Mono, Cascadia Code), ligatures **will appear by default** if your Emacs supports font ligatures (Emacs 28+ has built-in support).

**To disable ligatures, you can:**

- Change your font to one **that does not have ligatures**.

  For example, in your config:

  ```elisp
  (set-frame-font "DejaVu Sans Mono-12" t t)
  ```

- Or, configure the font to disable ligatures explicitly (Emacs 29+ supports this feature).

---

### 2. Disable Ligatures in Emacs 29+ via `composition` property

Emacs 29 introduced native ligature support that can be enabled/disabled using the `composition` font property.

To **disable ligatures globally**, you can clear the composition rules in the default face:

```elisp
(set-fontset-font t nil (font-spec :family "Fira Code") nil 'prepend)

;; Remove all composition (ligature) rules
(set-display-table-slot standard-display-table 'composition nil)
```

However, this method can be intrusive and possibly difficult to manage.

---

### 3. If You Use `ligature.el` or Other Packages

If you use a package like [`ligature.el`](https://github.com/mickeynp/ligature.el):

- Disable the minor mode that enables ligatures:

```elisp
(ligature-mode -1)
```

Or remove the hooks that enable ligature mode in programming modes.

---

### 4. Disable Ligatures by Overriding the Composition Rules

For Emacs versions that display ligatures via composition rules, you can override the composition rules to empty.

For example:

```elisp
(setq-default composition-function-table
              (make-composition-function-table))
```

This disables all composition (ligature) substitutions globally.

---

### Summary: Quick Steps to Disable Ligatures

- Use a font that does **not** have ligatures.
- Disable any ligature-specific minor modes (e.g., `(ligature-mode -1)`).
- Clear composition rules if your Emacs uses them:

```elisp
(setq-default composition-function-table
              (make-composition-function-table))
```

- Restart Emacs after changes.

---

If you tell me your Emacs version and how ligatures are enabled in your setup, I can provide a more tailored solution!
User: чем парка отличается от джекета?
Assistant: