Now when loading vim the them from the shell is getting used rather than
only every using tomorrow night. When I use tomorrow it will be
inherited in vim.
Now when the editor is idle it will use the lsp to highlight other
references to the token under the cursor.
It will also show all the diagnostics in a popup like the lsp hover that
I manually use via <C-k>. This is helpful with long diagnostic messages
that run off the edge of the terminal when.
Custom plugin to check the .nvmrc file. When entering a directory, it
checks to see if you have the desired node version installed for the
current project. If it is, it will use it automatically, if not, then it
will ask you if you want to install it. After, it will install all the
JS developer tools for that version of NodeJS.
This is a different implementation than the default oh-my-zsh version.
The main difference is that it will not reset the node version when
leaving a directory. It will only preform an action if there is a
`.nvmrc` file in the current directory. It will not even use the
`nvm_find_nvmrc` command because any interaction with nvm make the
stranded `cd` command extremely sluggish.
The biggest change here is that I am no longer cycling though completion
items as the first thing. Tab will now mainly control the snippet jumps
in completion not items. Completion items can be used exclusively with
<C-n> and <C-p> and <CR> to complete the selected item. If the
completion menu is open and <CR> is pressed, this will select and
complete the first item.
I will soon be able to remove the <C-h> and <C-l> mappings when my
muscle memory adapts as this will now be controlled with tab.
This is to keep things consistent with how I have ivy.nvim working in
vim. All fuzzy finding is now done at the bottom of the terminal with
the preview on top. This prevents the eyes to jumping up and down and
keep the focus to the bottom of the terminal.
This moves all of the snippets into a yasnippet file format so I can
better manage and edit the snippets. I did not like having them all in
one file stored as strings.
This implements a custom file parser that will convert the snippet file
into a luasnip parsed snippet that uses the LSP snippet syntax.
It also ports over some of my most used snippets from the emacs config,
maybe one day I could share the snippet in vim and emacs.
This is not working correctly when ruby is installed with RVM. It will
need some debugging that will need to be done another time.
For now the only one getting use is puppet-lint, if this is not found it
can be installed when need.
This is a script that will popup a window with a list of windows in a
fzf promp. When selected the window will be focused. If the window is in
another session the session will also be switched and the window focused
This is from the dotfiles a long time ago, its still in vimscript, don't
think I will ever convert it over to lua.
This also disables base16 shell when the terminal is running inside vim
like I am doing with emacs.
I am finding my self wanting to view the output of command nowadays,
rather then wanting to run a quick command and see if its passed or not.
By removing the exit at the end of the command the terminal dose not
close now. If I want the terminal to close I can still append the
command with `&& exit` when using `Run`
This will now use a custom config file `$HOME/.cspell.json` that will
use a custom dictionary for my own words. This will have things like my
name so cspell stop telling me I spelt my name wrong.
Will also add the `--language-id` flag with the current filetype, so it
can match language specific words.
Currently it is set up to use tab to jump between placeholders and go to
the next completion item. This is causing conflicts when typing
variables in the snippet placeholders.
Now you can use <CTRL-h> to jump to the next placeholders. This is only
available when the completion is active so, dose not conflict with
switching windows.
The treesitter plugin for org files was getting setup after the org
plugin was loading, this is throwing errors when trying to view or edit
org files.
Now the plugin order has been changed so it all works correctly
Currently they are only getting saved when you save buffers. I was
missing errors when jumping around because the files do not get saved.
This will now show me the errors when the buffer opens not only when the
buffer is saved and I get to see linting errors when jumping around a
codebase.
This is when inside a snippet the tab get taken over by the completion
menu, you can then not jump to the next mark in the snippet.
Now you can use <C-e> to close the completion menu and tab will then
jump to the next mark in the snippet.
Use the CommandTWildIgnore insted of the wildignore so I can still get
completion for :e in folders like vendor or node_modules but, they will be
ignored from command-t file searches.
This is getting hard to manage cuz the settings.json is always changing
with different things I am playing with. The main editor is vim or
emacs, vscode is just a text editor for using multiple cursors.
Update the terminal prompt so you can step forward and backwards though terminal
props using vims `[[` and `]]` that is included in evil-mode.
Enable goto-address-mode in the terminal so I am click on and open urls in the
browser from the terminal. This is most used for opening create merge requests
links when pushing commits to a branch.
At this point there is a very little I am using of oh-my-zsh. I think it could
be worth looking at removing it and build my own git module based on the
oh-my-zsh one
This would switch between 'doom-tomorrow' for use with the GUI and
'base16-tomorrow' when using the terminal. Previously the base16 themes has some
issues with GUI emacs and doom was much better. However, since a913143ee when I
forked base16 I have been making small tweaks and don't use the doom themes any
more.
This is now time to remove them and go full base16
This is the first implementation of the fmt-mode built with 'reformatter'. This
removes the CLI tool that was calling all the different formatters and replaces
it with an emacs mode.
The CLI tool was an attempt to create a common CLI tool to format code. In
reality this just became hard to maintain and was only ever used in the emacs
formatter. To format code in the CLI I was just using the upstream tools.
See: https://github.com/purcell/emacs-reformatter
When trying to merge-patch it will fail if the branch you are trying to merge is
already on the local machine.
This will ask if you want to remove it. The branch will be removed locally and
then pulled from the remote to ensure you are not merging any un-pushed local
changes.
When my custom tab was getting set on all modes it was not letting me tab in
counsel or any of the command like modes.
This now only uses the supper tab in prog-mode where this really applies.
Move all of the package installation from the default package.el to quelpa. This
has the main advantage of being able to update packages better. I have also got
a few package coming from forks and custom repos.
This also removes all of the `ensure t` from the use-package statements as we
have already set `use-package-always-ensure` so its not needed.
This is a port of the original super tab I had in vim. It has a hierarchy of
checks for actions when using the tab so I can use tab for snippet expanding,
expanding emmet expressions.
Currently this dose not support tab for cycling though completions, and I am
sure there will be some bugs in some situations.
Add clangd config args for the LSP config.
Remove all the custom company ordering and overriding to add in the snippets in
to the completion menu. This was only causing issues, so we now have to remember
what the snippets are. We can think about adding in a select snippet command via
counsel or something if this becomes a bigger issue.
Add in compilation notifications via `notify-send` cli tool. This helps when
testing or compiling is taking a long time an I put it into the background. When
it is done we now get desktop notifications
Add a new project type for Practically Makefile projects that are using
conventional tools.
This implements a few features all based around PHP and JavaScript projects. The
most notable features are:
- Compilation error detection for Jest JS testing framework
- Compilation error detection for Psalm PHP static analyser
- Alternate file support for Codeception "Cest" files
- JS test commands supporting "Jest"
- PHP test commands supporting "Codeception", "PHP Unit" and "Simple PHP Unit"
- Full project test support detecting the file type and the test command to run
I am sure this was installed before, it must have been removed when I started
making the repo public.
Anyway this adds it all back and also sets up the emacs package for using it
when writing.
Now the puppet packages get loaded by default. I don't really know why it was
not getting loaded, it must have been some time since I have needed to edit any
puppet config
Moves the setting of the font size onto a function so it can be used
dynamically. This is for when I am moving emacs across monitors with different
DPI's.
Also move base-16-themes to my fork
This is mostly used when editing GitHub and GitLab comments that boath support
markdown. This allows me to have the correct highlighting and snippet support
When merge patching it will now detect if there is an unresolved conflict in
your current branch and exit without doing anything.
This is useful when merging multiple branches at once, if you hit a conflict
half way though it would remove the "MERGE_PATCH" file and lose where you where
in the patch
Now the script will exit and not lose the position so you can `--continue`
correctly after fixing the conflicts
When I was linking the whole .emacs.d directory all of the junk that gets put
into that directory was getting put into the dotfiles repo and accessible by
puppet. This was slowing things down quite alot. Now I am only linking the
directories I need into the .emacs.d
When running fshow we are piping it into less. This was interfering with delta
and loosing the formatting.
This removes the pipe and lets delta handle the paging in the default way with
all the highlighting.
This adds shellcheck for creating better scripts and bats mode for testing
support.
It also added .env files to the mode list so I get highlighting in .env files
This removes all of the boiler plate code that was copied when fist moving away
from spacemacs and taken from the emacs from scratch config.
There is some inspiration about capturing notes from org-roam and putting them
into a directory for filing before they get put into the wiki.
This is the first move to start managing my notes / life with org-mode and its
started off really nicely. I think this will keep evolving and we can see where
it goes.
This dose the same thing as the built in oh-my-zsh plugin but this one can
update the paths to emacs that it will be used.
This will allow you to use a custom compiled version of emacs for testing and /
or pinning the version you want with the features you need.
When cloning a repo I have all of the repertories structured on the file system
by "host" "group" then "name". This command will automatically clone the repo
into the correct directory based on the name and the move into the cloned repo
directory.
An example of a repo to be cloned is the dotfiles repo has the URL of
`git@gitlab.com:AdeAttwood/dotfiles.git` so on the file system it will be in the
source directory `gitlab.com/AdeAttwood/dotfiles`. This keep all of the repos
well structured and searchable.
When running git commit it was supposed to update the commit message you are
currently working on. When running commit with git hooks setup the commit may
fail due to a invalid message.
This now splits out the command so you can run `grc` (git recommit) to reedit
the commit message that failed rather then having to enter the message again in
a new commit message.
This is the language we are doing mode configuration in at work now. Cue was
nice but still ab bit new and jsonnet has been around for a lot longer. Cue also
works best with go but we are not doing any of that at work so jsonnet was the
winner.
This is mainly for jsx where the base emacs packages dont really do a good job
especially will typescript tsx files.
This is also giving it a go in php mode where I was getting some funky things
happening in doc blocks.
When editing code comments on git platforms like github the input is not very
good when trying to input code. A good example of this is when trying to insert
a tab indent and it will tab away from the input you are typing into.
The edit-server package allows you to open an emacs buffer to edit you comment
or issue into. This will solve the tab issues and give you all of your editor
comforts like auto closing brackets and snippets.
When running the compile command in emacs the buffer dose not scroll with the
output by default.
This now set it to follow the output so you can see the full output as it
happened not just the final result.
When using lsp-mode with flycheck it hijacks all of the checkers that have been
defined for all of the languages. When added other checkers they never get used
because they are all overridden by lsp-mode.
This adds a function so we can define checkers per mode then we can have lsp and
another checker that is specific for the language
This is a format on save code formatter for multiple languages. It is based on
prettier.el but is using a custom cli tool for formatting.
This is the emacs port of format.vim a plugin I created to do formatting in the
same way but for vim.
See: site-modules/core/files/vim/plugin/format.vim
This is so we can add and develop some of the missing features of the
theme. After using them for a bit I will start to submit them back upstream in a
PR
Now when using git diff it will use delta for a much nicer diff format. This is
set for the show and log commands too.
See: https://github.com/dandavison/delta
This adds file operation command to emacs so you can quickly rename and copy
files.
The problem with the normal copy file if that it misses removing the old buffer
if its a rename and dose not move to the new buffer. This leads to (more than I
like to admit) editing the new file thinking its the old file.
By updating the buffers and automatically switching this prevents this.
oh-my-zsh will now use vcsrepo to install the package. This will now keep it up
to date with the master branch. I don't think this package has been updated in
quite some time.
When using tools like commitlint to lint your commits there is always that time
you write an invalid commit. In this situation you are dumped back into the
terminal with an error message and your invalid commit.
This function will now load the invalid commit message back in to the editor so
you can fix the errors and commit successfully.
Now the `gs` command has be aliased to a git status alias. The original `gs`
would open up ghost script and I would open it everyday trying to run git
status.
ggpushmr has now been renamed to ggpushpr. The only place it is called a "Merge
Request" is in Gitlab. All the community has now decided to go with Github's
"Pull Request".
This also makes the branch param optional. If you don't pass a branch name it
will make the pull request against the repositories default branch.
After a long while in emacs gui trying the terminal inside emacs and using the
external terminal with tmux. I have now decided to back full terminal using
emacs in the terminal in a tmux pain, sort of the same way I was using vim
before I switched to emacs.
Update the lsp to improve the performance and editing experience. The completion
has been disabled so we can configure it manually to include snippets and file
paths into the company code completion.
Company has been configured to override the tab behaviour to always expand
snippets whenever there is a available snippet. The default behaviour is to
cycle through the completion.
There a quite a few fixes and feature here to make the terminal experience of
emacs better. Most of this is only enabled when running in the terminal.
1) Better tmux integration with navigating between splits and also highlighting
the active window between emacs and tmux so you can better see the active window
you are working in.
2) Mouse and clipboard support through the x window manager so "yank" copies
text into the system clipboard
3) Changing the cursor style between insert and normal mode inside the terminal
this is not the case in default evil mode.
This was really annoying when using JSX. When adding a `=` it would always add
in the quotes to make `=""`, this is not good when writing JSX when a lot of the
time you want `={}`. Now that this is disabled I can make the decision of what I
want to add
Now in insert mode when editing you can add a semi colon at the end of the
current line my pressing CTRL-;. This will then put the cursor after that ready
to continue the line or press enter to start a new line. This is inspired by
some old vim key bindings I had and a vscode plugin called coloniser.
This is only initial support. Most of the features are built-in to lsp-mode. I
have added some snippets to make my life a bit easier.
There a more tweaks coming but they are general in improving the editing
experience not just targeted at c-sharp.
This forces vterm buffers to be in the evil emacs state to basically
disable evil-mode to make vterm function more like a native terminal
emulator. I have also bound `C-o` to move to the previous buffer to
simulate the jump backward functionality of evil-mode. This seams to
be working better at the moment due to this always exiting the
buffer. Sometimes jump back can move in the same buffer and this is
not want we want when we are in a vterm buffer.
The current keybinding was set to kill the buffer that was causing an
issue when there was a spit of the same buffers and you wanted to
close one. If your were in this situation them the buffer would be
deleted and both of the windows would close. This is not what I want
from the "delete window" command, the expected behaviour is to close
the one window and leave the other window. This is what
`evil-window-delete` dose. This prevents the buffer from getting
deleted and if it is the last buffer emacs would then close.
When editing typescript jsx files I was previously using rjsx-mode to
get the jsx highlighting and emmet `className` support. This now
splits out the tsx to ts like other packages like spacemacs and doom
do. This gives me better jsx support with typescript and not impacting
the ts mode that dose not play nicely with jsx.
This seems to be working better with the snippets I created for
spacemacs that works with rjsx-mode and override any functions that
need it for typescript-tsx-mode
When committing and using emacs as the editor it would always open a
new emacs window. This was taking focus away from the terminal and
losing flow when context switching out of the terminal and into a new
window.
When you run a shell command that is not found this will print out a
link to https://command-not-found.com to give more info on the
command and good docs on how to install the package that the command
came from. This can be built on to do other things like git suggestions
on common commands that are incorrect
This is the big re structure to all of the projects. I have decided to
go with the `GOPATH` format so all of the code is in one place and
organised inherently by code host / group / project
Now when merging to it will rebase onto the target branch to make
merge-to work more. I was finding that it will fail and I was doing
the merge step all the time so now its built in.
When installing bat from the Ubuntu repo the executable name is `catbat`. After
updating to 20.04 the executable `bat` is not there. This links catbat -> bat so
bat works as expected
Before puppet was only checking to see if the repo was present. Now it is
checking to see if the branch is updated with the develop branch and getting
auto update when the puppet manifests are applied
For some reason the .gitconfig was indented with tabs this has now been
correctly formatted. Also move over to the Emacs client for the git editor. This
has been working well for now. My in the future look at forcing the editor to
open in the terminal as sometimes the focusing in X is a bit off
When opening files in emacs from the terminal using the default command `+LINE`
is not really useful an no programs output files and lines in that format. All
programmes output a file like `path/to/file.ext:2` this is line 2 in the file
`path/to/file.ext` if you were to open this with the emacs command it would be
`emacs +2 path/to/file.ext`. With this commit you can use `emacs
path/to/file.ext:2` and it will open the file on line 2 like you would expect.
As a extra I have overridden the tmux open command to add the `--no-wait` to the
editor command so that we can continue to use the terminal window as the file is
open in emacs and we don't need to close the file to use the terminal.
This lists all container on the system event stopped ones. This is different to
`dkps` that only displays running container. Some times it is helpfully to
display stopped container for getting the id and viewing logs when debugging
crashing containers
When running zsh inside emacs base16 colors messes the colors. By using the
`INSIDE_EMACS` this excludes loading the shell color theme when running shells
inside emacs
Change the git source for spacemacs so it links up with the existing git source.
Also remove the spacemacs dotfile, this will be in the private repo until I can
sort out a private spacemacs module to put some stuff
This is the first commit that brings the privet dotfiles to a public
reop previously this was all one puppet module. Now this has been split
out so I can put all of the private files in a private puppet module