aboutsummaryrefslogtreecommitdiff
path: root/vim/ftplugin/sh.vim
Commit message (Collapse)AuthorAgeFilesLines
* Use "nunmap" not "unmap" for b:undo_* varTom Ryder2017-11-081-2/+2
| | | | We only want to remove the normal mode mapping, since that's all we set.
* Remove null command from b:undo_* variablesTom Ryder2017-11-081-2/+2
| | | | | I didn't realise that a null command at the front of .e.g '|cmd|cmd2' printed the current line! Removed that.
* Use consistent/thorough ftplugin/indent unloadingTom Ryder2017-11-081-3/+6
| | | | Unload all maps too, with silent! in case they don't exist.
* Break a long conditional in vim/ftdetect/sh.vimTom Ryder2017-11-081-1/+2
| | | | Just for legibility.
* Rename b:check and b:lint with sh_ prefixTom Ryder2017-11-081-9/+9
| | | | | Just to reduce the chance of colliding with existing buffer variable names.
* Remove overkill defined-and-false check of sh varsTom Ryder2017-11-081-4/+4
| | | | | | syntax/sh.vim only uses the existence of these variables for its checks and as far as I can see never their actual values, so let's not overdo things.
* Clear b:check/lint in ftdetect/sh.vim b:undoTom Ryder2017-11-081-1/+1
|
* Move ftplugin/sh.vim b:undo def to end of fileTom Ryder2017-11-081-2/+4
|
* Use correct undo variable name in ftplugin/sh.vimTom Ryder2017-11-081-1/+1
| | | | This was likely a copy-paste error.
* Use sh.vim local vars not global POSIX hacksTom Ryder2017-11-081-19/+14
| | | | | | | | | | | | | | | | | | | Rather than setting g:is_posix and working around core syntax/sh.vim's ideas about Korn and POSIX shells, forego sh.vim's efforts to guess what shell the system /bin/sh is entirely. It's irrelevant to me anyway, since I'll often be writing shell scripts to run on an entirely different system. Instead, if we have a #!/bin/sh shebang reflected in the b:is_sh variable set by core filetype.vim, and we don't have any other buffer-level indication of what shell this is, assume it's POSIX, because I very rarely write Bourne. Then, after the syntax file is loaded, clear away all but one of the resulting b:is_* variables. I have a feeling this is going to end with me re-implementing this syntax file, possibly as separate sh.vim, bash.vim, and ksh.vim files.
* Add user_ftplugin.vim and user_indent.vim pluginsTom Ryder2017-11-071-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 09b83b6 and replaces it with a working version. Because of the order in which the autocmd hooks run, the attempted method of adding unloading instructions for my custom ftplugin and indent rules to the b:undo_ftplugin and b:undo_indent doesn't actually work. This is because the custom rules for both groups from ~/.vim are sourced *first*, before their core versions, so the changes the custom rules made to b:undo_ftplugin and b:undo_indent are simply clobbered by the core version when it loads itself. Therefore we need to arrange for two things: 1. A custom variable needs to be checked and executed when the filetype changes to revert the changes for the custom ftplugin or indent rules. 2. That execution needs to take place *first* when the filetype changes. I wrote two simple plugins with very similar code that are designed to run as a user's custom ftplugin.vim and indent.vim implementations, running before their brethren in the Vim core, and setting up an autocmd hook to :execute b:undo_user_ftplugin and b:undo_user_indent plugin respectively. This seemed to work well, so I've implemented it. It involves adding a shim to ~/.vim/indent.vim and ~/.vim/ftplugin.vim to "preload" the plugin when the `filetype indent plugin on` call is made. I've added that to the relevant Makefile targets.
* Use b:undo variables correctlyTom Ryder2017-11-071-0/+7
| | | | | | | | | | | Setting or adding to b:undo_indent and b:undo_ftplugin variables, which I only learned about just now, allows me to avoid the _GLOBAL.vim hack and remove some files from both vim/indent/ and vim/ftplugin/. These variables aren't subjected to :execute automatically in anything older than Vim 7.0, but I don't think that's too much of a concern as the only real reason they're needed are for changing filetypes in the same buffer, which doesn't happen that often anyway.
* Put missing exclamation mark back into shell checkTom Ryder2017-11-051-1/+1
| | | | Looks like this was mistakenly omitted in commit 09f8635.
* Simplify shell linting code with single varsTom Ryder2017-11-041-8/+8
| | | | | Put the entire command line for the determined check and lint into the variable, so it can just be directly executed.
* Adjust plugin code layout a lotTom Ryder2017-11-041-2/+4
| | | | | | | | | | | | | Including renaming big_file.vim and accompanying functions yet again, to big_file_options.vim. Trying to keep complex autocmd and mapping definitions on long lines broken up semantically; definition and options on one line, patterns or mapping key on the next, and the command to run on the last. Also trying to make sure that <silent>, <buffer>, and <unique> are applied in the correct places, and that all mapping commands are using the :<C-U> idiom for the command prefix.
* Add check and lint mappings for shell scriptTom Ryder2017-11-041-0/+22
| | | | | The commands to use in this case are dependent on the particular shell being used.
* Rearrange and better explain ksh syntax workaroundTom Ryder2017-10-301-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | Move the rule setting the custom b:is_ksh variable used for this workaround (established in 52615f6) into an ftplugin file, rather than into ftdetect; the latter seems a much more appropriate place since by this point we've definitely decided the file type is "sh". From the revised comment in this changeset: >Setting g:is_posix above also prompts Vim's core syntax/sh.vim script >to set g:is_kornshell and thereby b:is_kornshell to the same value as >g:is_posix. > >That's very confusing, so before it happens we'll copy b:is_kornshell's >value as determined by filetype.vim and ~/.vim/ftdetect/sh.vim into a >custom variable b:is_ksh, before its meaning gets confused. > >b:is_ksh as a name is more inline with b:is_bash and b:is_sh, anyway, >so we'll just treat b:is_kornshell like it's both misnamed and broken. > >We can then switch on our custom variable in ~/.vim/after/syntax/sh.vim >to apply settings that actually *are* unique to Korn shell and its >derivatives.
* Move filetype-specific indent options into indent/Tom Ryder2017-10-301-7/+0
| | | | | | I'm still getting used to the structure of the configuration here, and had mistakenly put these indent-related settings into files in the ftplugin directory.
* Add some more file-specific indent preferencesTom Ryder2017-10-301-0/+7
| | | | | | | | | | For some languages in which I write often: C, HTML, Perl, PHP, and shell scripts. All of these values presently match the defaults specified in config/indent.vim, but for languages I commonly use it's probably appropriate to have files to set the indent settings explicitly anyway, especially if we switched from a filetype with different values.
* Move vim/after/ftplugin files into vim/ftpluginTom Ryder2017-10-301-0/+11
None of the settings in here need to be run after the core configuration files are loaded, so I'll put them in a slightly more accessible or logical place. This adds a new target `install-vim-ftplugin`, and makes that a prerequisite of the `install-vim` target.