summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua26
-rw-r--r--lazy-lock.json14
-rw-r--r--lua/config/luasnip.lua (renamed from lua/config/luasnips.lua)1
-rw-r--r--lua/plugins/init.lua50
-rw-r--r--lua/plugins/test.c114
5 files changed, 188 insertions, 17 deletions
diff --git a/init.lua b/init.lua
index 5c41b11..1a7365d 100644
--- a/init.lua
+++ b/init.lua
@@ -71,6 +71,28 @@ vim.g.mapleader = ' '
-- Tree
vim.api.nvim_set_keymap('n', '<leader>t', ':NvimTreeToggle<CR>', { noremap = true, silent = true })
+-- vim.keymap.set('n', '<Space>;', function()
+-- -- Append a semicolon at the end of the line without moving the cursor
+-- local col = vim.fn.col('.') -- save current column
+-- vim.cmd('normal! A;') -- go to end of line and append ;
+-- vim.fn.cursor(vim.fn.line('.'), col) -- restore cursor
+-- end, { noremap = true, silent = true })
+
+-- ~/.config/nvim/lua/keymaps.lua
+vim.keymap.set('n', '<Space>;', function()
+ local row, col = unpack(vim.api.nvim_win_get_cursor(0)) -- save cursor
+ local line = vim.api.nvim_get_current_line()
+
+ -- Only add semicolon if it doesn't exist
+ if not line:match(";$") then
+ vim.api.nvim_set_current_line(line .. ";")
+ end
+
+ -- Restore cursor
+ vim.api.nvim_win_set_cursor(0, {row, col})
+end, { noremap = true, silent = true })
+
+
-- Telescope
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
@@ -79,6 +101,7 @@ vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
+
--------------------------------------------------------
-- 🪶 GUI and Colour Configuration
--------------------------------------------------------
@@ -129,6 +152,9 @@ vim.cmd [[
highlight BufferCurrentIcon guifg=#8affff guibg=#003636
highlight BufferTabpageFill guibg=#003636
+
+ highlight Folded guifg=#74c4c4 guibg=#003636
+ highlight FoldColumn guifg=#74c4c4 guibg=#003636
]]
-- desired icon background colour
diff --git a/lazy-lock.json b/lazy-lock.json
index dcbe927..ed685d0 100644
--- a/lazy-lock.json
+++ b/lazy-lock.json
@@ -1,13 +1,21 @@
{
- "LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" },
+ "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
"barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" },
- "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
+ "ccc.nvim": { "branch": "main", "commit": "9d1a256e006decc574789dfc7d628ca11644d4c2" },
+ "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"darkplus.nvim": { "branch": "main", "commit": "6101ffce60682208e9e076710299d189ce11c40d" },
"dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" },
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
+ "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
+ "neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" },
+ "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" },
"nvim-cmp": { "branch": "main", "commit": "106c4bcc053a5da783bf4a9d907b6f22485c2ea0" },
- "nvim-lspconfig": { "branch": "master", "commit": "c8503e63c6afab3ed34b49865a4a4edbb1ebf4a8" },
+ "nvim-lspconfig": { "branch": "master", "commit": "b34fbdffdcb6295c7a25df6ba375452a2e73c32e" },
+ "nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" },
+ "nvim-tree.lua": { "branch": "master", "commit": "1eda2569394f866360e61f590f1796877388cb8a" },
+ "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
+ "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
"nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" },
"onedark.nvim": { "branch": "master", "commit": "6c10964f91321c6a0f09bcc41dd64e7a6602bc4f" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
diff --git a/lua/config/luasnips.lua b/lua/config/luasnip.lua
index 22fc94f..f3b39b4 100644
--- a/lua/config/luasnips.lua
+++ b/lua/config/luasnip.lua
@@ -18,4 +18,3 @@ return function()
-- Optionally, load snippets here if you have them
-- require("luasnip.loaders.from_vscode").lazy_load()
end
-
diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua
index 0f8fad0..f66d9c6 100644
--- a/lua/plugins/init.lua
+++ b/lua/plugins/init.lua
@@ -8,6 +8,49 @@ return {
end,
},
+ -- TreeSitter
+ {"nvim-treesitter/nvim-treesitter", branch = 'master', lazy = false, build = ":TSUpdate",
+ config = function()
+ require("config.treesitter")()
+ end,},
+ {"nvim-treesitter/nvim-treesitter-textobjects", lazy = false, },
+
+ -- Autopairs
+ {
+ 'windwp/nvim-autopairs',
+ event = "InsertEnter",
+ config = true
+ -- use opts = {} for passing setup options
+ -- this is equivalent to setup({}) function
+ },
+
+ {
+ "kylechui/nvim-surround",
+ version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features
+ event = "VeryLazy",
+ config = function()
+ require("nvim-surround").setup({
+ -- Configuration here, or leave empty to use defaults
+ })
+ end
+ },
+
+
+ -- Autocompletion
+ { "hrsh7th/nvim-cmp" },
+ { "hrsh7th/cmp-nvim-lsp" },
+
+ -- Snippets
+ {
+ "L3MON4D3/LuaSnip",
+ -- follow latest release.
+ version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
+ -- install jsregexp (optional!).
+ build = "make install_jsregexp",
+ config = function()
+ require("config.luasnip")()
+ end,
+ },
-- File Explorer
{ "nvim-tree/nvim-tree.lua", config = require("config.tree") },
@@ -33,13 +76,6 @@ return {
-- LaTeX
{ "lervag/vimtex", ft = "tex", config = require("config.vimtex") },
- -- Autocompletion
- { "hrsh7th/nvim-cmp" },
- { "hrsh7th/cmp-nvim-lsp" },
-
- -- Snippets
- { "L3MON4D3/LuaSnip" },
-
-- Grammar & Spell Checking
{ "rhysd/vim-grammarous", ft = "tex" },
diff --git a/lua/plugins/test.c b/lua/plugins/test.c
index 57028aa..bdba367 100644
--- a/lua/plugins/test.c
+++ b/lua/plugins/test.c
@@ -1,12 +1,114 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
-int main()
-{
- int x = 5;
- printf("Hello World!\n");
+#define MAX_NAME_LEN 50
+#define ARRAY_SIZE 5
- while(1){
- printf("Hello World!\n");
+typedef enum {
+ STUDENT,
+ TEACHER,
+ STAFF
+} Role;
+
+typedef struct {
+ char name[MAX_NAME_LEN];
+ int age;
+ Role role;
+ float grades[ARRAY_SIZE];
+} Person;
+
+// Function declarations
+void print_person(const Person* p);
+float average_grade(const Person* p);
+Person* create_person(const char* name, int age, Role role);
+void fill_random_grades(Person* p);
+void print_all(Person** people, int count);
+void free_all(Person** people, int count);
+int find_oldest(Person** people, int count);
+
+int main() {
+ Person* people[ARRAY_SIZE];
+
+ people[0] = create_person("Alice", 20, STUDENT);
+ people[1] = create_person("Bob", 35, TEACHER);
+ people[2] = create_person("Charlie", 28, STAFF);
+ people[3] = create_person("Diana", 22, STUDENT);
+ people[4] = create_person("Ethan", 40, TEACHER);
+
+ for (int i = 0; i < ARRAY_SIZE; i++) {
+ fill_random_grades(people[i]);
}
+ print_all(people, ARRAY_SIZE);
+
+ int oldest_index = find_oldest(people, ARRAY_SIZE);
+ printf("\nOldest person is: %s, Age: %d\n", people[oldest_index]->name, people[oldest_index]->age);
+
+ free_all(people, ARRAY_SIZE);
+
+ return 0;
}
+
+void print_person(const Person* p) {
+ const char* role_names[] = {"Student", "Teacher", "Staff"};
+ printf("Name: %s\n", p->name);
+ printf("Age: %d\n", p->age);
+ printf("Role: %s\n", role_names[p->role]);
+ printf("Grades: ");
+ for (int i = 0; i < ARRAY_SIZE; i++) {
+ printf("%.2f ", p->grades[i]);
+ }
+ printf("\nAverage Grade: %.2f\n\n", average_grade(p));
+}
+
+float average_grade(const Person* p) {
+ float sum = 0;
+ for (int i = 0; i < ARRAY_SIZE; i++) {
+ sum += p->grades[i];
+ }
+ return sum / ARRAY_SIZE;
+}
+
+Person* create_person(const char* name, int age, Role role) {
+ Person* p = (Person*)malloc(sizeof(Person));
+ if (!p) {
+ fprintf(stderr, "Memory allocation failed\n");
+ exit(1);
+ }
+ strncpy(p->name, name, MAX_NAME_LEN);
+ p->age = age;
+ p->role = role;
+ memset(p->grades, 0, sizeof(p->grades));
+ return p;
+}
+
+void fill_random_grades(Person* p) {
+ for (int i = 0; i < ARRAY_SIZE; i++) {
+ p->grades[i] = (float)(rand() % 101); // 0 to 100
+ }
+}
+
+void print_all(Person** people, int count) {
+ for (int i = 0; i < count; i++) {
+ print_person(people[i]);
+ }
+}
+
+void free_all(Person** people, int count) {
+ for (int i = 0; i < count; i++) {
+ free(people[i]);
+ }
+}
+
+int find_oldest(Person** people, int count) {
+ int oldest_index = 0;
+ for (int i = 1; i < count; i++) {
+ if (people[i]->age > people[oldest_index]->age) {
+ oldest_index = i;
+ }
+ }
+ return oldest_index;
+}
+